2

我的 HTML 是:

<object width="800" height="600"
    classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000"
    codebase="http://fpdownload.macromedia.com/
    pub/shockwave/cabs/flash/swflash.cab#version=8,0,0,0">
        <param name="SRC" value="intros/01/intro.swf" />
        <param name="allowscriptaccess" value="always" />
            <param name="quality" value="high" />
            <param name="bgcolor" value="#999900" />
            <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="" />
        <embed src="intros/01/intro.swf" width="800" height="600"></embed>
</object>

我的按钮 Flash 上有此代码:

on (release) {
    import flash.external.*;
    var isAvailable:Boolean = ExternalInterface.available;
    if( isAvailable ) {
        ExternalInterface.call( "sample" );
    }
}

和 javascript/jquery 是:

jQuery( document ).ready( function(){

    function sample() {

       alert( 'message' );
    }
});

我究竟做错了什么?我正在使用动作脚本 2.0。例如,当我在 Flash 中测试它时,要知道 isAvalaible 变量是否为真,它真的是……它是真的。

4

4 回答 4

1

不要将 sample() 放入 (document).ready()

它不再在范围内。只要它没有准备好,它就应该可以正常工作。

此外,由于它是一个函数声明,所以无论如何您都不需要它在 ready 中。

于 2013-08-25T01:14:21.003 回答
0

自从我完成 AS2 以来已经有一段时间了,但我在这里看到两件事我会改变。首先,去掉按钮代码中的 import 语句。

var isAvailable:Boolean = flash.external.ExternalInterface.available;

然后,您拥有的 jquery 被构造为匿名函数。在您的网页上尝试此操作:

function sample(){...}
$(sample);

然后,当 jQuery 初始化时,它将调用 sample,并且 sample 将从其他地方获得。

于 2013-08-25T01:20:56.073 回答
0

谢谢大家。我找到了解决方案……这是关于 Flash 播放器的安全性和权限……您对代码的建议也是解决方案的一部分。

于 2013-08-25T15:22:39.290 回答
0

希望这篇文章对你有用: http ://www.kirupa.com/flash/calling_javascript_flash_using_as3.htm

于 2013-09-23T03:40:40.840 回答