actionscript-3 - 使用计时器的问题

标签 actionscript-3 flash timer

我编写了一个计时器来向用户显示他/她在当前场景中的时间:

timer_txt.x = 352;
timer_txt.y = 705;
var nCount: Number = 0;
var myTimer: Timer = new Timer(50, nCount);

timer_txt.text = "Time: " + nCount.toString();
myTimer.start();

function countUp(e: TimerEvent): void {
   nCount++;
   timer_txt.text = "Time: " + nCount.toString();
   if (nCount > 60) {
      var formattedTime =
        ((Math.floor(nCount / 60)) + ":" + (nCount % 60 >= 10 ? "" : "0") + (nCount % 60));
      timer_txt.text = "Time: " + formattedTime.toString();
   }
}

我有一个重置按钮来重置场景中的其他对象,但不重置计时器

我的问题是:

  1. 每当我点击重置按钮时,计时器就会变得越来越慢,我不知道为什么,而我没有对定时器。 我在舞台上有许多旗帜和许多 child 。当用户单击/触摸reset按钮时,所有flags将等于0并且所有child将被删除并再次添加到舞台。

  2. 当用户要去其他场景时(计时器应该停止工作,而计时器的当前值需要保存在变量中),并且当用户再次回到这个场景时,这个计时器应该像这样工作:前一个值+计算时间

  3. 我在手机上打开它的时候,速度和电脑上不一样。是否有任何解决方案可以对其进行编码以与 native 设备的时序兼容? 这是我写的一个函数:

    function timerAtoB(firstColor: int): void {
       lineColor = firstColor;
       //GRID;
       //Path A to B
       var PathAB: Grid;
       PathAB = new Grid(4, 35, 20, 22, canvas, lineColor);
       this.addChild(PathAB);
    }
    

该函数用于连接A维度和B维度。 A 和 B 之间的连接将使用一个名为 Grid 的类来构建 - 这个类是找到 A 和 B 之间的最短路径并在它们之间建立连接(我不想走)通过它比这更多,因为它更复杂)。

我调用这个函数有一些延迟:

delayCallFunctions(1000, timerAtoB, wireColor);

当我在手机上运行它时,这种延迟会正常工作,但时间不正确。例如,我写的1000ms表示大约1秒后执行该函数,但在我的手机中执行该函数需要超过1秒

预先感谢您的时间和帮助。

最佳答案

您的问题可能是每次您重新访问包含您发布的代码的框架时,都会创建另一个计时器实例。

var nCount: Number = 0;
var myTimer: Timer = new Timer(50, nCount);

该代码会将您的 nCount 重置为 0,并在您每次访问该帧时创建一个新的计时器。

您最有可能想做的是:

//just declare the vars
var nCount:Number;
var myTimer:Timer;

//assign them a value only if they are empty
if(nCount === NaN) nCount = 0;
if(!myTimer) myTimer = new Timer(50, 0);

每当您离开场景时,您还需要执行myTimer.stop();

桌面/移动设备之间的速度差异可能与性能有关,因为 50 毫秒的延迟对于执行任何计算复杂的操作来说并不是很多时间,并且移动设备可能无法跟上,因此会变慢。考虑将延迟增加到 100 毫秒甚至 250 毫秒,看看是否有帮助。另外,删除 formattedTime var,因为不需要它,并且如果没有它,计时器会表现得更好。

作为提示,您实际上并不需要 nCount 变量,因为计时器本身具有 currentCount 属性,用于跟踪自上次 以来已计时的次数>timer.reset()

关于actionscript-3 - 使用计时器的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44594541/

相关文章:

javascript - 我可以创建一个仅在多次点击后才有效的链接吗

ios - 如何在 Flash 中伪造 iOS 设备旋转

javascript - 如何使用 DDP 从 Meteor 服务器接收流

flash - ffmpeg:将纯音频 flv 转换为 swf

html - 您可以在 PDF 文件中嵌入 HTML 网页吗?

javascript - 使用 javascript 和 html 为在线考试设置计时器

javascript - 如何找到加载的 swf 播放的视频 url?

flash - 使 Starling FrameWork 与使用 native DisplayObject 的类一起使用

flash - AS3 重用变量

python - 使用 threading.Timer 使用 Python 以固定的时间间隔截取屏幕截图