簡體   English   中英

如何在釋放動作時從Flash ExternallInterface調用JavaScript函數

[英]How to call javascript functions from flash ExternallInterface on release action

我的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變量是否為true,那確實是...這是真的。

不要將sample()放在(document).ready()內

它不在范圍內。 只要外部沒有准備好,它就可以正常工作。

另外,由於它是一個函數聲明,因此無論如何您都不需要在ready中使用它。

自完成AS2以來已經有一段時間了,但是我發現這里有兩點需要更改。 首先,擺脫按鈕代碼上的import語句。

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

然后,您擁有的jQuery被構造為匿名函數。 在您的網頁上嘗試以下操作:

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

然后,當jQuery初始化時,它將調用sample,並且sample可以從其他地方獲得。

謝謝大家 我已經找到了解決方案...。這與Flash Player的安全性和權限有關。您的代碼建議也屬於解決方案的一部分。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM