如何在从Arduino接收数据到Flash后创建延迟/间隔

时间:2015-06-25 02:11:52

标签: actionscript-3 flash timer arduino intervals

我正在研究arduino和flash,我想在接收数据时创建一个延迟(比如定时器功能)并将其显示在flash swf文件中。

我已经成功地将来自arduino的数据显示为闪存,但是,每次按下压力传感器时,由于没有间隔/延迟/定时器功能,swf中的数据显示会聚集。

我是否需要创建单独的计时器并创建新功能?如果是,我将如何将其与“onTick2”相关联?

a.addEventListener(ArduinoEvent.ANALOG_DATA, onTick2);

function onTick2(e:ArduinoEvent):void
{
  var forceValue:Number;
  var forceNum:Number;
  forceValue = a.getAnalogData(0); //this is the code to get the data from the sensor data in arduino
  forceNum = (forceValue/9.1);


  myFormat = new TextFormat();
  myFormat.font = "Arial";
  myFormat.size = 36;
  myFormat.color = 0xFFFFFF;

  myText = new TextField();
  myText.x = 250;
  myText.y = 240;
  myText.text ="\n"+forceNum.toString()+" Avg. Pressure";
  myText.height = 200;
  myText.width = 200;
  myText.defaultTextFormat = myFormat;

  addChild(myText);

}

1 个答案:

答案 0 :(得分:0)

目前还不完全清楚你要问的是什么(数据是“聚集的”),还有一些事情 -

您正在为每个TextField事件创建一个新的Arduino并将其添加为子项。您是希望显示所有过去的事件,还是只想在单个持久的TextField中显示当前的Arduino数据?

  • 如果是前者,你可能想要将它们移动一点点。现在你把它们堆叠在一起。

  • 如果后者(我的猜测是你想要的),你应该在该函数之外创建TextField(例如在添加eventListener之前。确保给Textfield一个名称,以便你可以引用它。

    myText = new TextField();
    myText.name = "textDisplay"
    etc.
    

然后在您的函数中,您只能将数据分配给先前创建的TextField容器。

textDisplay.text ="\n"+forceNum.toString()+" Avg. Pressure";

(我在Flex中使用AS3类并且忘记了Flash如何处理事物(没有typeDef,public / private等等,但我相信代码的要点是正确的。)

哦等等 - 我看到你在每个新数据位之前添加一个换行符。这是你想要的吗?如果是这样,您可能需要设置这些附加属性:

myText.multiline = true;
myText.wordWrap = true; // if you want text to wrap