Как передать ссылку на мувиклип из одного класса в другой? - PullRequest
2 голосов
/ 01 октября 2009

У меня есть мувиклип с кнопкой, которую я создал внутри своего класса отображения Thumbnail.as , и у меня есть функция кнопки, которая взаимодействует с ним внутри моего класса пользовательского интерфейса ThumbnailController.as .

Текущая проблема, с которой я сталкиваюсь, такова; в моем классе пользовательского интерфейса я не могу нацелиться на playGlow movieClip, который был создан внутри моего класса отображения.

Код, который создает кнопку playGlow внутри моего класса отображения (Thumbnail.as)

public function playBtns():void  {
playThumb = new PlayThumb;
playThumb.x = 642;
playThumb.y = 22;
playThumb.alpha = 1;

playGlow = new PlayGlow;
playGlow.x = 628;
playGlow.y = 8;
playGlow.alpha = 1;
}

public function buildRow ():void{
     thumbNailRow.addChild(thumbLoader);
     thumbNailRow.addChild(thumbTitle);
     thumbNailRow.addChild(thumbText);
     thumbNailRow.addChild(playGlow);
     thumbNailRow.addChild(playThumb);

playThumb.addEventListener(MouseEvent.ROLL_OVER, rowRollOver);

addChild(thumbNailRow);
}

Теперь код внутри моего класса пользовательского интерфейса (ThumbnailController.as)

public function rowRollOver(e:MouseEvent):void
{
     dispatchEvent(new Event(Event.CHANGE, true ));

     TweenPlugin.activate([TintPlugin]);
     TweenLite.to(playGlow, .4, {alpha:.5, tint:0x99cc00});

 }

Это строка проблемы: TweenLite.to ( playGlow , .4, {alpha: .5, оттенок: 0x99cc00});

Это будет работать только когда это так: TweenLite.to ( this , .4, {alpha: .5, оттенок: 0x99cc00});

Но если я использую это , весь мувиклип thumbNailRow будет подкрашиваться, я просто хочу подкрасить playGlow movieClip, который находится внутри thumbNailRow, но я не знаю, как это сделать. нацелиться на это конкретно. Я получаю 1120: доступ к неопределенному свойству playGlow в противном случае.


Как я могу передать экземпляр playGlow в мой класс пользовательского интерфейса, чтобы я мог нацелиться на этот мувиклип со своей тинтиновой анимацией?

Ответы [ 3 ]

2 голосов
/ 01 октября 2009

Попробуйте использовать цель события для ролловера?

TweenLite.to(e.target, .4, {alpha:.5, tint:0x99cc00});

Возможно, вам придется разыграть e.target:

.
TweenLite.to(Sprite(e.target), .4, {alpha:.5, tint:0x99cc00});

по крайней мере, вы должны попробовать отследить e.target и сообщить нам, что это такое.

1 голос
/ 01 октября 2009

Я довольно новичок во всем этом AS3, но вы пробовали:

TweenLite.to (MovieClip (this) .playGlow, .4, {alpha: .5, оттенок: 0x99cc00});

Это всегда работает для меня, когда я нацеливаюсь на вещи.

0 голосов
/ 01 октября 2009

Проблема заключается в том, что e.target является ссылкой на playThumb thumbNailRow, а не на playGlow, на который вы хотите повлиять.

Если в исходном коде, приведенном выше, thumbnailRow является экземпляром класса Thumbnail (и я думаю, что это не так, я не уверен), то следующее должно быть в порядке:

public function rowRollOver(e:MouseEvent):void {
    dispatchEvent(new Event(Event.CHANGE, true ));
    TweenPlugin.activate([TintPlugin]);
    var parentThumb: Thumbnail = e.target.parent as Thumbnail; 
    TweenLite.to(parentThumb.playGlow, .4, {alpha:.5, tint:0x99cc00});
 }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...