Flash:同时更改数字?

时间:2011-01-31 15:48:16

标签: flash actionscript-3

如何在闪存中创建同时更改的号码? 秒表上有几毫秒的线条,就像它们如何迅速改变一样。

提前致谢!

3 个答案:

答案 0 :(得分:1)

通读一下,它会为您提供所需的所有信息:http://www.republicofcode.com/tutorials/flash/as3timer/

但基本上你只需要这样的东西

var myTimer:Timer = new Timer(10,0);
myTimer.addEventListener(TimerEvent.TIMER, timerListener);
myTimer.start();

function timerListener (e:TimerEvent):void{
  trace("10 ms passed");
}

计时器不准确(所以你会在这里或那里得到+/-几毫秒,具体取决于负载,所以如果你想用它来显示时间,请使用getTimer()http://www.adobe.com/livedocs/flash/9.0/ActionScriptLangRefV3/flash/utils/package.html


以这种方式创建毫秒级精度非常困难,并且更频繁地更新计时器与帧速率没有关系,因为用户无法看到结果。 (除非你做的不仅仅是显示时间)

但你可以让你的代码看起来像这样

var myTimer:Timer = new Timer(10,0);
var startTime:int = -getTimer();
myTimer.addEventListener(TimerEvent.TIMER, timerListener);
myTimer.start();

function timerListener (e:TimerEvent):void{
  someTextfield.text = ("ms passed: " + getTimer()+startTime );
}

会在someTextfield上显示传递的ms数;

答案 1 :(得分:0)

执行此操作的一种方法是更改​​每帧的编号。为此,您可以使用Enter Frame事件。这是一个例子。

var frameCount:int = 0;

// Add an event listener that will fire on each ENTER_FRAME event.
addEventListener(Event.ENTER_FRAME, OnEnterFrame);

//This function will get called after each frame
function OnEnterFrame(e:Event):void{
    frameCount++;
    trace(frameCount);
}

此示例将每帧跟踪一次frameCount(每秒几次)。如果你想跟踪时间,你需要做两件事。

  1. 在计时器启动时声明一个变量,并将其设置为当前时间,可以这样做:

    var startTime:Number =(new Date())。time;

  2. 在OnEnterFrame函数中,使用相同的(new Date())。time方法获取新时间,并从中减去开始时间。这将为您提供计时器启动时间与当前时间之间的差异(

  3. )。

    事件是AS3的重要组成部分,如果您想了解更多内容,请参阅tutorial。希望这有帮助!

答案 2 :(得分:0)

如果你想要这样的矩阵效果,你可能最好创建一个movieclip。没有必要进行额外的计算,并且让一堆事件监听器更新帧速率以上的文本字段是过度的。

在数字上添加垂直模糊滤镜(或覆盖不透明度较低的另一个数字)并让它们跳过数字。这将使它看起来像是在快速更新,因为只是改变数字就不会有这种效果。