我是Flash ActionScript 3.0的新手。我需要setInterval上的回调函数,我确实喜欢
有一个叫做ownmouse的篮子。它附有鼠标。
ownmouse.addEventListener(Event.ENTER_FRAME,fun);
function fun(Eve:Event) {
ownmouse.startDrag(true);
Mouse.hide();
}
使用setInterval从flash文档顶部落下球。
var myInterval = setInterval(fallBall,1);
ownmouse.addEventListener(Event.ENTER_FRAME,controlCursor);
function controlCursor(MouseMove:Event) {
var xaxis:int = mouseX;
var yaxis:int = mouseY;
var ballXaxis = ball.x;
var ballYaxis = ball.y;
if((ballXaxis+10)>=xaxis && (ballXaxis-10)<=xaxis && (ballYaxis)>=yaxis && (ballYaxis-10)<=yaxis) {
clearInterval(myInterval, function() {
myBall.gotoAndPlay(10)
});
}
if(yaxis>620) {
ownmouse.stopDrag();
ownmouse.y = 620;
Mouse.show();
} else if(yaxis<420) {
ownmouse.stopDrag();
ownmouse.y = 430;
Mouse.show();
}
}
除了以下代码之外,一切都很顺利:
clearInterval(myInterval, function() {
myBall.gotoAndPlay(10)
});
AS3中是否可以使用回调功能?如果没有,如何解决这样的问题?
我非常感谢你的帮助:)。
答案 0 :(得分:0)
clearInterval会破坏间隔。 setInterval创建它并返回一个数字,您可以将其放入clearInterval中以销毁它。
setTimeout也只执行一次。
您还需要指定函数后的时间(以毫秒为单位)。
我总是建议你使用Timer类,因为你可以控制它并轻松阅读。
答案 1 :(得分:0)
clearInterval没有回调。如果满足破坏它的要求,你可以自己触发一个方法。 根据您的需要,计时器可能是更好的选择。
var myTimer:Timer = new timer(1000,8);// set amout
myTimer.addEventListener(TimerEvent.TIMER, timerListener);
myTimer.addEventListener(TimeEvent.TIMER_COMPLETE, timerDone);
function timerListener (e:TimerEvent):void{
trace("Timer is Triggered");
}
function timerDone(e:TimerEvent):void{
trace("Timer finishing!");
}
myTimer.start();
修改强> 就像我说的b4,你可以在满足要求时触发自己的方法。在您使用更新源的情况下:
if((ballXaxis+10)>=xaxis && (ballXaxis-10)<=xaxis && (ballYaxis)>=yaxis && (ballYaxis-10)<=yaxis) {
clearInterval(myInterval);
intervalDestroyed();
}
function intervalDestroyed():void
{
trace("Intervall has been cleared");
myBall.gotoAndPlay(10);
}
如果这是你要做的唯一事情,你可以在if:中调用你需要的任何东西:
if((ballXaxis+10)>=xaxis && (ballXaxis-10)<=xaxis && (ballYaxis)>=yaxis && (ballYaxis-10)<=yaxis) {
clearInterval(myInterval);
myBall.gotoAndPlay(10);
}