用计时器闪烁movieclip

时间:2011-07-22 04:22:13

标签: flash actionscript-3

我正在尝试使我的movieclip闪烁,当它被某些东西击中时会闪烁,以创建一个游戏的效果。当它被击中时有一个命中测试,捕获被调用的对象。捕获的功能对象将使其停止并开始基于计时器闪烁。我的计时器设置在新的计时器(400)上;为什么我的物体不闪烁?我的条件似乎是正确的。

if (hit.hitTestObject(f.hit))
    f.caught();


    private function blinkingHandler(evt:TimerEvent):void
    {

        _canBlink = true;
        if (_canBlink)
        {
            this.alpha = 0;
            _canBlink = false;
            this.alpha = 100;
            trace("blinking");
        }
    }
    public function caught() : void
    {   
        _blinkTimer.start();


        //removeEventListener(Event.ENTER_FRAME, loop);

        //this.stop();
    }

2 个答案:

答案 0 :(得分:1)

首先,我假设您已经添加了事件监听器,以便在Timer触发时触发blinkingHandler调用:

_blinkTimer.addEventListener(TimerEvent.TIMER, blinkingHandler);

现在,你发布的blinkingHandler永远不会隐藏对象。 alpha设置为0,但你在同一个调用中立即将其设置为1,因此最终结果是alpha不显示为0.你必须将alpha设置为0,让几帧渲染,设置它在下一个计时器滴答时返回1,依此类推。试试这个:

private function blinkingHandler(evt:TimerEvent):void
{
    if(_canBlink) this.alpha = 1;
    else this.alpha = 0;
    _canBlink = !_canBlink;
}

你甚至可以这样做:

visible = !visible;

简单地切换每个计时器的可见性。

答案 1 :(得分:0)

var timer:Timer =  new Timer(200);
var blink:Boolean = true;
timer.start();
sq_mc.addEventListener(MouseEvent.MOUSE_OVER, onMseOvrAction);
sq_mc.addEventListener(MouseEvent.MOUSE_OUT, onMseOutAction);
function onMseOvrAction(e:MouseEvent):void{
    timer.addEventListener(TimerEvent.TIMER, timerAction);
}
function onMseOutAction(e:MouseEvent):void{
    timer.removeEventListener(TimerEvent.TIMER, timerAction);
    sq_mc.alpha = 1;
}
function timerAction(e:TimerEvent):void
{
    if (!blink){
        sq_mc.alpha = 1;
    } else{
        sq_mc.alpha = 0;
    }
    blink = !blink;
}

阿兰先生,我已经改变了。