Actionscript 3 AS3在按钮事件(或任何事件)之后以设定的持续时间运行事件

Actionscript 3 AS3在按钮事件(或任何事件)之后以设定的持续时间运行事件,actionscript-3,Actionscript 3,为了回答这个问题,假设我在舞台上有一个物体。当我点击另一个按钮时,我希望颜色改变1秒,然后在完成后再次恢复 下面是我的演示代码: Button.addEventListener(MouseEvent.CLICK, Colour_Change); function Colour_Change(evt: MouseEvent): void { var my_color: ColorTransform = new ColorTransform(); my_color.color =

为了回答这个问题,假设我在舞台上有一个物体。当我点击另一个按钮时,我希望颜色改变1秒,然后在完成后再次恢复

下面是我的演示代码:

Button.addEventListener(MouseEvent.CLICK, Colour_Change);

function Colour_Change(evt: MouseEvent): void {
    var my_color: ColorTransform = new ColorTransform();
    my_color.color = 0xFF0000;
    Coloured_Object.transform.colorTransform = my_color;
}

我想要的是在上面的函数中加入某种定时器函数。我不知道怎么做,因此没有实现。

您应该使用
flash.utils.Timer
类。

以下内容足以让您朝着正确的方向前进:

import flash.utils.Timer;

var myTimer:Timer = new Timer(1000, 1); // 1 second
var running:Boolean = false;

Button.addEventListener(MouseEvent.CLICK, Colour_Change);
myTimer.addEventListener(TimerEvent.TIMER, runOnce);

function Colour_Change(evt: MouseEvent): void {
    var my_color: ColorTransform = new ColorTransform();
    my_color.color = 0xFF0000;
    Coloured_Object.transform.colorTransform = my_color;
    if(!running) {
        myTimer.start();
        running = true;
    }
}

function runOnce(event:TimerEvent):void {
    // code to revert the button's color back goes here

    myTimer.reset();
    running = false;
}

如果您需要更多帮助或此示例有错误,请通过此答案的注释部分告知我。

要进一步解释上面使用的计时器类,请执行以下操作:

创建新计时器时

myTimer=new Timer(1000,1)
括号中的第一个数字是您希望计时器运行的毫秒数(例如1000=1秒) 第二个数字是您希望计时器重复的次数(或0表示无限重复)

每次计时器达到您输入的时间(1000),这将触发事件计时器\u event.timer的任何事件侦听器,因此,例如,如果您希望使其打开和关闭颜色,您可以多次重复计时器并更改功能

计时器可以做的其他有用的事情:

您可以为添加事件侦听器

Timer_Event.TIMER_COMPLETE     
(当所有重复完成时熄灭)


将返回计时器到目前为止已完成的重复次数。

要执行此操作,您可以使用
计时器对象或函数,如其他答案所述:

// the current color of our target object
var default_color:ColorTransform;
// the delay in milliseconds
var delay:int = 1000; 

btn.addEventListener(MouseEvent.CLICK, Colour_Change);
function Colour_Change(evt: MouseEvent): void {

    // save the current color of our target object
    default_color = target.transform.colorTransform;

    var new_color:ColorTransform = new ColorTransform();
        new_color.color = 0xFF0000;

    target.transform.colorTransform = new_color;

    var timer:Timer = new Timer(delay, 1);
        timer.addEventListener(TimerEvent.TIMER, function(e:TimerEvent):void {
            // after the delay, we use the default color of our target
            target.transform.colorTransform = default_color;
        })
        timer.start();

    // using setTimeout(), you have to disable this if using the Timer
    var timeout:int = setTimeout(
        function(){
            clearTimeout(timeout);
            // after the delay, we use the default color of our target
            target.transform.colorTransform = default_color;
        }, 
        delay
    );

}
希望这能有所帮助

// the current color of our target object
var default_color:ColorTransform;
// the delay in milliseconds
var delay:int = 1000; 

btn.addEventListener(MouseEvent.CLICK, Colour_Change);
function Colour_Change(evt: MouseEvent): void {

    // save the current color of our target object
    default_color = target.transform.colorTransform;

    var new_color:ColorTransform = new ColorTransform();
        new_color.color = 0xFF0000;

    target.transform.colorTransform = new_color;

    var timer:Timer = new Timer(delay, 1);
        timer.addEventListener(TimerEvent.TIMER, function(e:TimerEvent):void {
            // after the delay, we use the default color of our target
            target.transform.colorTransform = default_color;
        })
        timer.start();

    // using setTimeout(), you have to disable this if using the Timer
    var timeout:int = setTimeout(
        function(){
            clearTimeout(timeout);
            // after the delay, we use the default color of our target
            target.transform.colorTransform = default_color;
        }, 
        delay
    );

}