我在setInterval
上拨打了TouchEvent.TOUCH_END
,我想在触摸屏幕时清除它。
这是我的代码:
import fl.motion.MotionEvent;
import flash.display.MovieClip;
import flash.utils.*;
Multitouch.inputMode = MultitouchInputMode.TOUCH_POINT;
stage.addEventListener(TouchEvent.TOUCH_BEGIN, onTouchBegin);
stage.addEventListener(TouchEvent.TOUCH_END, onTouchEnd);
function onTouchBegin(evt:TouchEvent)
{
clearInterval(MovieClip(root).myInterval);
}
function onTouchEnd(evt:TouchEvent)
{
MovieClip(root).myInterval = setInterval(showTimer,1000);
}
function showTimer()
{
trace("interval working");
}
答案 0 :(得分:0)
您提供的代码并未真正解释所有内容,因此在此答案中会有一些猜测:
Possiblity No.1:
您将root
投射到MovieClip
的方式无效。尝试更改为以下内容:
function onTouchBegin(evt:TouchEvent)
{
var intervalRef:int = (root as MovieClip).myInterval;
clearInterval(intervalRef);
}
Possiblity No. 2:
您的代码似乎是在一个框架中编写的。虽然如果您在前一帧中定义某些内容它应该可以工作,但如果您在同一个关键帧上的不同(较低)层上有代码,则可以在以后定义该变量,并且您的MovieClip(root).myInterval
变量为{{1} }或undefined
是未定义的值。因此,请检查您的变量是否存在:
null
Possiblity No. 3:
你正在骑车穿越镜架。当我有2个帧时:一个空白,一个带有您的代码,代码无法正常工作。在Flash CC中测试。
可能性4:
您在其他地方遇到运行时错误,并且您的整个框架代码未被执行。您是否使用Flash Player的调试版本?
减少头痛的可能解决方案:
使用function onTouchBegin(evt:TouchEvent)
{
trace(MovieClip(root) == null); // see if the root is defined
trace(MovieClip(root).myInterval); // see if the myInterval is defined
}
。它易于控制,易于管理和处理。我已编辑您的代码以使用Timer并进行测试。随意将它用于您的项目。
Timer
我想要注意,如果我只是将其复制粘贴到单帧Flash文件中,则代码可以正常工作。但是,Adobe仍然鼓励使用Timer。