as3如何阻止无限循环?

时间:2013-06-07 18:25:54

标签: actionscript-3 infinite-loop enterframeevent

我有一个网站,基本上我想使用flash在加载后自动将网站重定向到另一个网站。但它一直在快速发射,甚至一度崩溃了我的电脑。如何将其设置为仅向用户发送一次。

addEventListener(Event.ENTER_FRAME, fl_EnterFrameHandler);

function fl_EnterFrameHandler(event:Event):void
{
//navigateToURL(new URLRequest("http://www.levittproperties.com/sitebuildercontent/sitebuilderfiles/homepage.swf"), "_self");
trace("Entered frame");
}

'//'只是你尝试闪光灯。我不希望你也崩溃。 “追踪”足以看出我在说什么。

2 个答案:

答案 0 :(得分:1)

如果您已经在目标页面上,您需要做的就是杀死事件监听器,请考虑以下事项:

import flash.external.ExternalInterface;

addEventListener(Event.ENTER_FRAME, fl_EnterFrameHandler);

function fl_EnterFrameHandler(event:Event):void
{
    var gotoURL:String = "http://www.levittproperties.com/sitebuildercontent/sitebuilderfiles/homepage.swf";
    var currentURL:String = ExternalInterface.call("window.location.href.toString");
    if(gotoURL != currentURL) {
        navigateToURL(new URLRequest(gotoURL), "_self");
    } else {
        Event.currentTarget.removeEventListener(Event.ENTER_FRAME, fl_EnterFrameHandler);
    }
}

答案 1 :(得分:0)

尝试像Garry Wong所说的那样做。但是如果由于某些原因必须使用ENTER_FRAME,那么只使用一次,如下所示:

addEventListener(Event.ENTER_FRAME, fl_EnterFrameHandler);

function fl_EnterFrameHandler(event:Event):void
{
    removeEventListener(Event.ENTER_FRAME, fl_EnterFrameHandler);
    navigateToURL(new URLRequest("http://www.levittproperties.com/sitebuildercontent/sitebuilderfiles/homepage.swf"), "_self");     
}