as3 timer打开和关闭外部设备

时间:2015-03-04 05:23:16

标签: actionscript-3 timer

我正在尝试编写一个Phidg​​ets设备,重复打开外部灯,持续0.5秒,然后关闭0.5秒。

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

我试图将开启和关闭命令插入到影片剪辑中,但它们不会转移到主舞台,所以现在我只是尝试将灯光编程到从主程序开始和结束

以下代码在相同的时间打开和关闭灯 - 这意味着什么都不发生。 有没有人知道如何延迟计时器,以便关闭命令在开启命令后500毫秒? 感谢

phid.addEventListener(PhidgetEvent.ATTACH,onAttach);
//connects Phidget to software 

function onAttach(evt:PhidgetEvent):void{
    trace(evt);
}
    var phidControl:Timer = new Timer (500);
    phidControl.addEventListener(TimerEvent.TIMER, lightOn);
        function lightOn (evt:TimerEvent):void {

        phid.setOutputState(0, true);} //this turns the light on


    enter code here
    var phidOff:Timer = new Timer(500);
    phidControl.addEventListener(TimerEvent.TIMER, lightOff);
     function lightOff(evt:TimerEvent):void {
         phid.setOutputState(0, false);//this turns light off
     }

1 个答案:

答案 0 :(得分:0)

看起来您正在创建两个同时以500毫秒间隔运行的定时器。

将一个函数放在500ms计时器上会更容易,它会间歇性地调用任一函数,例如

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

----更新----

我对Phidg​​ets不太熟悉,但在这种情况下不应该有所作为。试试这个:

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函数。