Actionscript 3 as3定时器打开和关闭外部设备

Actionscript 3 as3定时器打开和关闭外部设备,actionscript-3,timer,Actionscript 3,Timer,我正在尝试对Phidgets设备进行编程,以重复打开外部灯0.5秒,关闭外部灯0.5秒 (这些时间对应于20帧电影剪辑的第1帧和第11帧 我试着在电影剪辑中插入“开”和“关”命令,但它们不会转移到主舞台,所以现在我只是试着在主程序中设置灯光的开和关 下面的代码同时打开和关闭指示灯-这意味着什么也没有发生。 有人知道如何延迟计时器,使off命令在on命令后500毫秒发出吗? 谢谢 看起来您正在创建两个计时器,它们都以500毫秒的间隔同时运行 将一个函数放在500毫秒计时器上可能更容易,它会间歇性地

我正在尝试对Phidgets设备进行编程,以重复打开外部灯0.5秒,关闭外部灯0.5秒

(这些时间对应于20帧电影剪辑的第1帧和第11帧

我试着在电影剪辑中插入“开”和“关”命令,但它们不会转移到主舞台,所以现在我只是试着在主程序中设置灯光的开和关

下面的代码同时打开和关闭指示灯-这意味着什么也没有发生。 有人知道如何延迟计时器,使off命令在on命令后500毫秒发出吗? 谢谢


看起来您正在创建两个计时器,它们都以500毫秒的间隔同时运行

将一个函数放在500毫秒计时器上可能更容易,它会间歇性地调用任何一个函数,比如

var lightIsOn = false;
function lightToggle(evt:TimerEvent):void{
    if(lightIsOn){
        lightOff();
    }else{
        lightOn();
    }
    lightIsOn = !lightIsOn;
}
----更新----

我对Phidges不太熟悉,但在这种情况下,这不会有什么不同。请尝试以下方法:

val = true;

var phidControl:Timer = new Timer(500); //If you don't set the repeat count it goes on forever

phidControl.addEventListener(TimerEvent.TIMER, lightToggle);

    function lightToggle(evt:TimerEvent):void {
        val = !val;
        phid.setOutputState(0,val); 
    }
phidControl.start(); //Make sure you start the timer.

如果你只想每0.5秒切换一次,那么你就不必担心读取灯光的状态,只要告诉它何时更改即可。因此,从我所知,你不需要inputChange功能。

非常感谢你的回复,尝试根据你的建议修改我的代码,下面的Phidges行话代码将永远打开灯光。需要以1赫兹重复循环(500毫秒开启,500毫秒关闭)功能输入更改(evt:PhidgetEvent):无效{if(phid.getOutputState(0)){if(val=true){val=false;}}}}。提前感谢val=true;var phidControl:Timer=new Timer(50050000);phidControl.addEventListener(TimerEvent.TIMER,lightOn);函数lightOn(evt:TimerEvent):void{phid.setOutputState(0,val);}非常感谢您的回复,我刚刚花了2个小时试图根据您的建议和Phidgets行话修改我的代码下面的代码永远亮着灯。我需要它以1 HZ(500毫秒打开,500毫秒关闭)重复循环。我在做什么蠢事吗?提前感谢val=true;var phidControl:Timer=new Timer(50050000);phidControl.addEventListener(TimerEvent.TIMER,lightOn);函数lightOn(evt:TimerEvent):void{phid.setOutputState(0,val);}
val = true;

var phidControl:Timer = new Timer(500); //If you don't set the repeat count it goes on forever

phidControl.addEventListener(TimerEvent.TIMER, lightToggle);

    function lightToggle(evt:TimerEvent):void {
        val = !val;
        phid.setOutputState(0,val); 
    }
phidControl.start(); //Make sure you start the timer.