PDA

Просмотр полной версии : Alpha и tween


leff27
26.04.2012, 11:07
Добрый день! Имеется кнопка и функция, переключающая кадр на другой.
object.btn.addEventListener(MouseEvent.CLICK, btnf);

function btnf(e:MouseEvent):void{
object.btn.alpha = 0.5;
object.btn.gotoAndPlay(2);
object.btn.removeEventListener(MouseEvent.CLICK, btnf);
object.btn.addEventListener(MouseEvent.CLICK, btnf_back);
}
function btnf_back(e:MouseEvent):void{
object.btn.alpha = 1;
object.btn.gotoAndPlay(26);
object.btn.addEventListener(MouseEvent.CLICK, btnf);
object.btn.removeEventListener(MouseEvent.CLICK, btnf_back);
}

В таком случае анимация проигрывается ТОЛЬКО при выполнении первой функции, а если нажать вновь на эту же кнопку, то обратной анимации(по функции2) уже не происходит, если же убрать object.btn.alpha = 0.5; и object.btn.alpha = 1; все работает на "ура"!
Что делать? В чем проблема? Могу кинуть в ЛС пример, если не понятно объяснил.

mishgun_
26.04.2012, 11:16
внутри обработчиков событий стоит использовать Event.currentTarget
т.е. не object.btn.alpha = 0.5; а e.currentTarget.alpha = 0.5;

leff27
26.04.2012, 11:30
А если мне нужно не на текущий объект? А допустим так

object.btn.addEventListener(MouseEvent.CLICK, btnf);
function btnf(e:MouseEvent):void{
object.btn.anotherbtn.alpha = 0.5;
object.btn.gotoAndPlay(2);
object.btn.removeEventListener(MouseEvent.CLICK, btnf);
object.btn.addEventListener(MouseEvent.CLICK, btnf_back);
}
function btnf_back(e:MouseEvent):void{
object.btn.anotherbtn.alpha = 1;
object.btn.gotoAndPlay(26);
object.btn.addEventListener(MouseEvent.CLICK, btnf);
object.btn.removeEventListener(MouseEvent.CLICK, btnf_back);
}

P.S
Сделал так:

function btnf(e:MouseEvent):void{
e.currentTarget.alpha = 0.5;
object.btn.gotoAndPlay(2);
object.btn.removeEventListener(MouseEvent.CLICK, btnf);
object.btn.addEventListener(MouseEvent.CLICK, btnf_back);
}
function btnf_back(e:MouseEvent):void{
e.currentTarget.alpha = 1;
object.btn.gotoAndPlay(26);
object.btn.addEventListener(MouseEvent.CLICK, btnf);
object.btn.removeEventListener(MouseEvent.CLICK, btnf_back);
}

Не работает, в первой функции непонятно что делает, а при вызове второй, появляется черное пятно на объекте.

Добавлено через 37 минут
Все разобрался, можно закрывать