2

我曾尝试在 FlashFirebug 插件的 as3 控制台中使用计时器,但它不起作用(尝试了几种组合)。计时器代码是这样的:

import flash.utils.Timer;
import flash.events.TimerEvent;
import flash.display.Sprite;    

var myTimer = new Timer(1000, 2);
myTimer.addEventListener(TIMER, timerHandler);
myTimer.start();

function timerHandler(event:TimerEvent){trace("timerHandler: ");}

//但它给出了这个错误:

Error #1034: Type Coercion failed: cannot convert r1.deval.rt::FunctionDef@50ef781 to Function.

//也尝试使用 setInterval 与此代码:

import flash.utils.Timer;
import flash.events.TimerEvent;
import flash.display.Sprite;
import flash.utils.setInterval;
function d(){trace("cc");}
setInterval(d, 2000);

//但是控制台错误说:

Error: Call to a possibly undefined method.

//可能需要导入一些东西。尝试导入“import flash.utils.setInterval;” 但给出此错误:“错误:您必须先导入该类,然后才能实例化它。例如 import flash.display.MovieClip;”

你能帮我解决这个问题吗?计时器或 setInterval 函数?谢谢,约翰

4

5 回答 5

0

问题出在这一行:

myTimer.addEventListener(TIMER, timerHandler);

它应该是:

myTimer.addEventListener(TimerEvent.TIMER, timerHandler);
//              add this ^^^^^^^^^^^
于 2013-06-24T10:00:10.287 回答
0

这是相当古老的。但回答它以帮助将来的任何人。

仍在审批队列中的FlashFirebug 4.8.0(在回答时)应该允许您在运行的 SWF 中注入一个 SWF 文件。

当您遇到控制台限制时,这将允许您使用完整的 AS3 功能。

于 2014-07-22T10:08:25.350 回答
0

我不确定您是否已对其进行排序,但它看起来像:

var num:int = setInterval(d, 2000);

如果你导入 import flash.utils.clearInterval; 你可以像这样停止它:

clearInterval(num)
于 2012-10-10T14:40:38.437 回答
0

好吧,看起来没有办法实现这一点。FlashFirebug 使用D.eval库,我现在找不到它支持计时器或间隔。

于 2012-05-14T12:49:25.983 回答
0

我不确定您收到的错误消息,但是在您为计时器分配事件侦听器时,您的代码中确实存在错误。您需要从 TimerEvent 类访问事件名称常量,如下所示:

import flash.utils.Timer;
import flash.events.TimerEvent;
import flash.display.Sprite;    

var myTimer = new Timer(1000, 2);
myTimer.addEventListener(TimerEvent.TIMER, timerHandler);
myTimer.start();

function timerHandler(event:TimerEvent){trace("timerHandler: ");}

关于使用 ActionScript 3.0 Timer 类而不是 setInterval 的优势,这里有一个不错的解释。

于 2012-05-14T09:19:44.493 回答