AS3 - 使屏幕闪烁半秒钟

时间:2014-07-03 18:04:24

标签: actionscript-3 flash effects

我想做的是:

与[物体]发生碰撞后,我希望屏幕闪烁约半秒钟。我尝试了for loopswhile loops,但它们似乎无效。我不知道我应该如何编程。

我一直试图弄清楚如何做到这一点,因为我一直在制作游戏,所以如果有人可以帮助我会有所帮助。

感谢您的阅读。

1 个答案:

答案 0 :(得分:1)

你需要使用涉及时间的东西。循环都在一个不会暂停的线程中运行 - 这就是他们不能工作的原因。

以下是使用AS3 Timer执行此操作的方法(请假设此代码在您确定发生碰撞后立即运行)

function flashScreen():void {
    var timer:Timer = new Timer(50, 10); //run the timer every 50 milliseconds, 10 times (eg the whole timer will run for half a second giving you a tick 10 times)

    var flash:Shape = new Shape(); //a white rectangle to cover the whole screen.
    flash.graphics.beginFill(0xFFFFFF);
    flash.graphics.drawRect(0,0,stage.stageWidth,stage.stageHeight);
    flash.visible = false;
    stage.addChild(flash);

    timer.addEventListener(TimerEvent.TIMER, function(e:TimerEvent):void {
        //we've told AS3 to run this every 50 milliseconds

        flash.visible = !flash.visible; //toggle visibility
        //if(Timer(e.currentTarget).currentCount % 2 == 0){ } //or you could use this as a fancy way to do something every other tick
    });

    timer.addEventListener(TimerEvent.TIMER_COMPLETE, function(e:TimerEvent):void {
        //the timer has run 10 times, let's stop this flashing madness.
        stage.removeChild(flash);
    });

    timer.start();
}

您可以使用setIntervalsetTimeout,补间库和ENTER_FRAME事件处理程序执行此操作。