2011-11-14 33 views
0

閃光燈功能,我使用此代碼調用ActionScript 3的功能,通過JavaScript從JavaScript調用功能,而不是按鈕

http://www.viget.com/inspire/bi-directional-actionscript-javascript-communication

,我想從一個JavaScript函數調用acrionscript 3個功能,但不是按鈕操作。

我該怎麼做? 謝謝!

ActionScript代碼:

//call to javascript 
ExternalInterface.call("sendToJavaScript"); 

//call from javascript 
ExternalInterface.addCallback("sendToActionscript", callFromJavaScript); 


function callFromJavaScript(dir):void 
{ 
    if(dir == 'right') 
    { 
    var tweenR = new Tween(box, 'x', None.easeNone, box.x, 145, 1, true); 
    } 
    if(dir == 'left') 
    { 
    var tweenL = new Tween(box, 'x', None.easeNone, box.x, 23, 1, true); 
    } 
} 

javascript代碼:

function getFlashMovie(movieName) { 
    var isIE = navigator.appName.indexOf("Microsoft") != -1; 
    return (isIE) ? window[movieName] : document[movieName]; 
} 

function callToActionscript(str) 
{ 
    getFlashMovie("nameOfFlashMovie").sendToActionscript(str); 
} 

HTML按鈕

<form action="javascript:callToActionscript('asjs', 'left')" id="form1"> 
      <input type="submit" value="&lt;--" /> 
     </form> 

我試着給它這樣的機構,但它沒有工作:

<script type="text/javascript" language="javascript">  
callToActionscript('asjs', 'left'); 
</script> 

回答

1

您的javascript沒有失敗,但是您將兩個字符串傳入callToActionscript函數,並且它只期望一個。這樣做的結果是,您要將字符串「asjs」發送到Flash中,並且由於您的callFromJavascript函數只需要「左」或「右」,它什麼也不做。

只有你想傳遞的價值試試:

<script type="text/javascript">  
    callToActionscript('left'); 
</script> 

而且,你不需要language="javascript"在你的腳本標籤。您已經將該語言作爲MIME類型的一部分。

1
function callToActionscript(str) 
{ 
    getFlashMovie("nameOfFlashMovie").sendToActionscript(str); 
} 
window.action = callToActionscript('left'); 

希望你期待這一點。

+0

感謝您的回答:) – Asimina88