#flash #actionscript-3 #tween
#flash #actionscript-3 #анимация
Вопрос:
У меня есть этот массив MovieClips (btnArr) и массив GlowFilters (gloArr):
var btnArr:Array = new Array(aBtn, bBtn, cBtn);
var gloArr:Array = new Array();
var glow:GlowFilter = new GlowFilter(0x00aaff, 0,
12, 12,
5, 1,
false, false);
for (var i = 0; i < btnArr.length; i ) {
gloArr[btnArr[i].name] = glow;
btnArr[i].filters = [gloArr[btnArr[i].name]];
}
Однако, когда я позже в своем коде настраиваю один из светящихся фильтров в массиве, кажется, что он применяет анимацию ко всем из них.
var btnTween:Tween = new Tween(gloArr[e.currentTarget.name], "alpha",
Strong.easeIn,
gloArr[e.currentTarget.name].alpha, 1, 1, true);
trace(gloArr.indexOf(btnTween.obj));
У меня настроены трассировки, которые, похоже, показывают, что пока я не объявлю, что анимация идет так, как ожидалось, но последняя трассировка показывает -1, и когда я проверяю значения каждого отдельного фильтра в массиве, все они увеличиваются и уменьшаются вместе. Есть идеи?
Ответ №1:
Если a правильно вас понял, вы хотите переключать свечение только одной из кнопок, верно?
Если это так, вам нужно создавать отдельные экземпляры glow
объекта каждый раз, когда вы его назначаете btnArr[i].filters = [glow]
. В вашем коде вы используете только один экземпляр GlowFilter и используете его для всех кнопок.
Комментарии:
1. Большое спасибо! Вы абсолютно правы, создав экземпляр безымянного фильтра для каждой позиции в
gloArr
нем, теперь он работает абсолютно идеально. Еще раз спасибо.