2013-09-30 5 views
0

Ниже приведен мой код для кнопок, с которыми сталкиваюсь проблема: когда кнопка нажата, она не будет работать снова после нажатия следующей кнопки. Я хочу включить предыдущую нажатую кнопку. Надеюсь, эксперт может помочь мне здесь.Кнопки повторного включения в as3

pages.gotoAndStop("home"); 

// list of button instance names 

var buttonsss:Array = [home, menudown.about, menudown.portfolio, menudown.clients, menudown.pricing, menudown.contact]; 


for each (var mc:MovieClip in buttonsss) 
{ 
mc.buttonMode = true; 
mc.mouseChildren = false; 
mc.addEventListener(MouseEvent.MOUSE_UP, onClick, false, 0, true); 
mc.addEventListener(MouseEvent.ROLL_OVER, rolloverEffect, false, 0, true); 
mc.addEventListener(MouseEvent.ROLL_OUT, rolloutEffect, false, 0, true); 
    } 

function onClick(e:MouseEvent):void 
{ 

pages.gotoAndStop(e.target.name); 
TweenLite.to(e.currentTarget,2,{tint:0xFF0000, ease:Strong.easeOut}); 
var myTween:Tween = new Tween(pages, "alpha", Strong.easeOut, 0, 1, 2, true);  
e.currentTarget.removeEventListener(MouseEvent.ROLL_OUT, rolloutEffect);//disable the roll out effect 
e.currentTarget.removeEventListener(MouseEvent.MOUSE_UP, onClick);//disable the roll out effect 
e.currentTarget.removeEventListener(MouseEvent.ROLL_OVER, rolloverEffect);//disable the roll out effect 

} 

function rolloverEffect(e:MouseEvent):void{ 

TweenLite.to(e.currentTarget,2,{tint:0x000000, ease:Strong.easeOut}); 

} 
function rolloutEffect(e:MouseEvent):void{ 

//should change tint to null just when its enabled, but its changing always (enabled or disabled) 
TweenLite.to(e.currentTarget,2,{tint:null , ease:Strong.easeOut}); 

} 

ответ

0

Создайте переменную под названием focusedButton. Тогда, в функции OnClick сделать что-то вроде этого:

if (focusedButton !== null) {    
    // all the code to re-enable the previous button 
    // ie add the listeners and tween alpha    
} 

// be sure to store a reference to the new focused button: 
focusedButton = e.currentTarget; 

Затем переходите с кодом для отключения новой кнопки ....

EDIT - Я видел ваш комментарий с просьбой больше коды. Я испытываю соблазн позволить вам понять это, так как я думаю, что дал вам все, что вам нужно, но так как я не знаю, каков ваш опыт, я отведу вас немного дальше. Надеюсь, это поможет:

// put this at the top of your file: 
var focusedButton:MovieClip = null; 

// an updated onClick function (untested) 
function onClick(e:MouseEvent):void 
{ 
    if (focusedButton !== null) {    
     // just guessing your unfocus tint: 
     TweenLite.to(focusedButton, 2, { tint:0xFFFFFF, ease:Strong.easeOut, onComplete:function():void { 
      // remove tint here 
     }}); 
     focusedButton.addEventListener(MouseEvent.ROLL_OUT, rolloutEffect);//enable the roll out effect 
     focusedButton.addEventListener(MouseEvent.MOUSE_UP, onClick);//enable the roll out effect 
     focusedButton.addEventListener(MouseEvent.ROLL_OVER, rolloverEffect);//enable the roll out effect   
    } 

    // keep reference to the new button 
    focusedButton = MovieClip(e.currentTarget); 

    // now disable the new button etc: 
    pages.gotoAndStop(e.target.name); 
    TweenLite.to(e.currentTarget,2,{tint:0xFF0000, ease:Strong.easeOut}); 
    var myTween:Tween = new Tween(pages, "alpha", Strong.easeOut, 0, 1, 2, true);  
    e.currentTarget.removeEventListener(MouseEvent.ROLL_OUT, rolloutEffect);//disable the roll out effect 
    e.currentTarget.removeEventListener(MouseEvent.MOUSE_UP, onClick);//disable the roll out effect 
    e.currentTarget.removeEventListener(MouseEvent.ROLL_OVER, rolloverEffect);//disable the roll out effect 
} 
+0

Не могли бы вы переписать мой код с помощью функции focusbutton, которую вы сказали. –

+0

Спасибо, сэр, я получаю эту ошибку. Сцена 2, «Действия» слоя, Кадр 2, строка 66 \t 1118: Неявное принуждение значения со статическим типом. Объект, возможно, несвязанный тип flash.display: MovieClip. здесь строка 66 focusButton = e.currentTarget; –

+0

В какой строке кода это относится? Может ли это быть ссылкой на e.currentTarget? Попробуйте перевести его в MovieClip или Sprite (независимо от того, что это такое) с помощью 'MovieClip (e.currentTarget)' – null

Смежные вопросы