Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/flash/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Actionscript 3 clearInterval上的Flash AS3回调函数_Actionscript 3_Flash - Fatal编程技术网

Actionscript 3 clearInterval上的Flash AS3回调函数

Actionscript 3 clearInterval上的Flash AS3回调函数,actionscript-3,flash,Actionscript 3,Flash,我是Flash ActionScript 3.0的新手。我需要setInterval上的回调函数,我喜欢 有一个篮子叫自己的老鼠。而且它还附有鼠标 ownmouse.addEventListener(Event.ENTER_FRAME,fun); function fun(Eve:Event) { ownmouse.startDrag(true); Mouse.hide(); } 使用setInterval从flash文档顶部落下球 var myInterval = setIn

我是Flash ActionScript 3.0的新手。我需要setInterval上的回调函数,我喜欢

有一个篮子叫自己的老鼠。而且它还附有鼠标

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();
    }
}
在AS3中是否可以使用回调函数?如果没有,如何解决这个问题


我将非常感谢您的帮助:)

clearInterval破坏Interval。 setInterval创建它并返回一个数字,您可以将该数字放入clearInterval以销毁它

此外,setTimeout只执行一次

您还需要指定函数之后的时间(以毫秒为单位)


我始终建议您使用Timer类,因为您可以轻松地控制和读取它。

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);
}

如果((ballXaxis+10)>=xaxis&&(ballXaxis-10)=yaxis&(ballYaxis-10)=xaxis&(ballXaxis-10)=yaxis&(ballXaxis-10)=yaxis&(ballYaxis-10)实际上,我在销毁间隔后需要回调函数。所以在销毁间隔后设置一个setTimeout。非常感谢您的回答。我在发布问题之前做过:clearInterval(myInterval)我的球,我的球,我的球,我的球,我的球,我的球仅在clearInterval之后移动鼠标后才工作。因此,现在您了解了我的问题。我将非常感谢您的完整解决方案。您应该首先使用鼠标移动事件而不是enterframe。您是否尝试过我的intervalDestroyed方法?
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((ballXaxis+10)>=xaxis && (ballXaxis-10)<=xaxis && (ballYaxis)>=yaxis && (ballYaxis-10)<=yaxis) {
        clearInterval(myInterval);
        myBall.gotoAndPlay(10);
        }