为什么我的动作循环?

bry*_*nsh 1 actionscript-3 flash-cs5

我是整个动作脚本/ Flash世界的新手......但是试着自学足以完成某些事情.

我确定答案很简单......但我有一个.as文件,其中包含以下代码:

package
{
    import flash.external.ExternalInterface;

    public class Sender
    {
        public function Sender()
        {
            ExternalInterface.call("func1()");
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我有一个fla使用以下代码(我没有碰过其他内容):

import Sender;

var mySender:Sender = new Sender();
Run Code Online (Sandbox Code Playgroud)

现在发布后,我对html文件进行了一些调整(包含在下面)....我的Javascript被调用(是的!).不幸的是,在解除警报后,它再次被召唤......再次.......再次.我不知道为什么(我已经确认我的flash电影没有设置为循环,但这就是我所拥有的).任何帮助将不胜感激!

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
    <head>
        <title>sender</title>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <style type="text/css" media="screen">
        html, body { height:100%; background-color: #ffffff;}
        body { margin:0; padding:0; overflow:hidden; }
        #flashContent { width:100%; height:100%; }
        </style>

        <script>
            function func1()
            {
                alert('hello external stuff');
            }
        </script>
    </head>
    <body>
        <div id="flashContent">
            <object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="1" height="1" id="sender" align="middle">
                <param name="movie" value="sender.swf" />
                <param name="quality" value="high" />
                <param name="bgcolor" value="#ffffff" />
                <param name="play" value="true" />
                <param name="loop" value="true" />
                <param name="wmode" value="window" />
                <param name="scale" value="showall" />
                <param name="menu" value="true" />
                <param name="devicefont" value="false" />
                <param name="salign" value="" />
                <param name="allowScriptAccess" value="always" />
                <!--[if !IE]>-->
                <object type="application/x-shockwave-flash" data="sender.swf" width="1" height="1">
                    <param name="movie" value="sender.swf" />
                    <param name="quality" value="high" />
                    <param name="bgcolor" value="#ffffff" />
                    <param name="play" value="true" />

                    <param name="loop" value="true" />
                    <param name="wmode" value="window" />
                    <param name="scale" value="showall" />
                    <param name="menu" value="true" />
                    <param name="devicefont" value="false" />
                    <param name="salign" value="" />
                    <param name="allowScriptAccess" value="always" />
                <!--<![endif]-->
                    <a href="http://www.adobe.com/go/getflash">
                        <img src="http://www.adobe.com/images/shared/download_buttons/get_flash_player.gif" alt="Get Adobe Flash player" />
                    </a>
                <!--[if !IE]>-->
                </object>
                <!--<![endif]-->
            </object>
        </div>
    </body>
</html>
Run Code Online (Sandbox Code Playgroud)

31e*_*384 5

在你发布的html代码中,它说

<param name="loop" value="true" />
Run Code Online (Sandbox Code Playgroud)

这可能是原因.

编辑:也许您只在IDE中检查了.swf导出的文件是否循环,但是CS5生成的html无论如何都放入了标签.

编辑2:我同意gmale你应该放入stop();你的代码.如果你把你的代码其他地方(或者,如果你想别人使用它),他们可能会loop设置为true,在这种情况下,对其进行编码,以做到万无一失是你唯一的办法,以确保它不循环.该原则适用于所有AS3代码.