如何在flash中创建同时变化的数字?秒表上以毫秒为单位的一些东西,比如它们是如何重复变化的。
提前感谢!
发布于 2011-02-01 00:08:42
为此,一种方法是更改每一帧的编号。为此,可以使用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 (每秒跟踪几次)。如果你想记录时间,你需要做两件事。
var startTime:Number =( Date()).time;
事件是AS3的重要组成部分,如果你想了解更多,这里有一个tutorial。希望这能有所帮助!
发布于 2011-02-01 01:14:15
通读这篇文章,它会给你所有你需要的信息: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数;
发布于 2011-02-01 03:58:27
如果你想要一个像矩阵一样的效果,你最好创建一个电影剪辑。做额外的计算是没有意义的,让一群事件侦听器更新高于帧速率的文本字段是多余的。
在数字上添加垂直模糊滤镜(或用较低的不透明度覆盖另一个数字),并让它们跳过数字。这会让它看起来更新得很快,因为仅仅改变数字不会有这样的效果。
https://stackoverflow.com/questions/4852826
复制相似问题