【问题标题】:as3 timer turn external device on and offas3定时器打开和关闭外部设备
【发布时间】:2015-03-14 11:52:11
【问题描述】:

我正在尝试对 Phidg​​ets 设备进行编程,使其反复打开外部灯 0.5 秒,然后关闭 0.5 秒。

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

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

下面的代码在同一时间打开和关闭灯-这意味着什么都没有发生。 有谁知道如何延迟计时器,以便关闭命令在 on 命令之后 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
     }

【问题讨论】:

  • 非常感谢您的回复,我刚刚花了 2 个小时尝试根据您的建议和 Phidg​​ets 术语修改我的代码 下面的代码永远点亮了灯。我需要它以 1 HZ 重复循环(500 毫秒开启,500 毫秒关闭)我在做一些愚蠢的事情吗?在此先感谢 val = true; var phidControl:Timer = new Timer(500,50000); phidControl.addEventListener(TimerEvent.TIMER, lightOn);函数 lightOn(evt:TimerEvent):void { phid.setOutputState(0,val); }

标签: actionscript-3 timer


【解决方案1】:

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

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

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

【讨论】:

  • 非常感谢您的回复,
  • 试图根据您的建议修改我的代码,下面的 Phidg​​ets lingo 代码永远点亮了灯。需要以 1 HZ 重复循环(500 毫秒开启,500 毫秒关闭)函数 inputChange(evt:Phidg​​etEvent):void { if (phid.getOutputState(0)) {if (val = true) { val = false; }}}。在此先感谢 val = true; var phidControl:Timer = new Timer(500,50000); phidControl.addEventListener(TimerEvent.TIMER, lightOn);函数 lightOn(evt:TimerEvent):void { phid.setOutputState(0,val); }
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-03-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多