2012-08-03 64 views
0

是否有可能通過JavaScript觸發Flash按鈕點擊事件?與JavaScript的火Actionscript按鈕事件

它了我的代碼,我從JavaScript調用fromJS()和它觸發沒有任何問題,但包含此功能:

myButton.dispatchEvent(new MouseEvent(MouseEvent.CLICK)); 

不起作用!

package 
{ 

import flash.external.*; 
import flash.net.FileReferenceList; 
import flash.display.MovieClip; 
import flash.events.MouseEvent; 
import flash.system.Security; 

public class MultiSelectClass extends MovieClip 
{ 
    private var fileRef:FileReferenceList; 

    function MultiSelectClass() 
    { 
     Security.allowDomain("*"); 
     myButton.addEventListener(MouseEvent.CLICK, myButtonClick); 
     addCallbacks(); 
    } 

    private function addCallbacks():void 
    { 
     if (ExternalInterface.available) 
     { 
      ExternalInterface.addCallback("sendToFlash", fromJS); 
     } 
     return; 
    } 

    function myButtonClick(ev:MouseEvent):void 
    { 
     fileRef = new FileReferenceList(); 
     fileRef.browse(); 
    } 

    private function fromJS():void 
    { 
     myButton.dispatchEvent(new MouseEvent(MouseEvent.CLICK)); 
    } 

    private function sendToJS():void 
    { 
     if (ExternalInterface.available) 
     { 
      ExternalInterface.call("alert","Hello as3"); 
     } 
    } 
} 
} 
+0

嘗試在myButtonClick函數中放置trace語句以確保它被調用。 – BadFeelingAboutThis 2012-08-03 18:01:41

+0

或者,嘗試直接從'fromJS()'函數調用myButtonClick(null),並忘記分派點擊事件。 – BadFeelingAboutThis 2012-08-03 18:02:24

+0

當您實際點擊閃光燈按鈕時它是否工作? – BadFeelingAboutThis 2012-08-03 18:30:59

回答

2

您可以使用ExternalInterface類並向所述函數添加回調處理程序。 Flash端應該是這樣的:

if (ExternalInterface.available) { 
    ExternalInterface.addCallback("fromJS", fromJS); 
} 

然後,在JavaScript,你只需要調用從flashObject該方法。

mySwfObject.fromJS(); 

下面是Adobe官方文檔的鏈接:出於安全原因 http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/external/ExternalInterface.html

- 您的問題討論評論 -

閃光燈不會讓你彈出的文件瀏覽器,而實際鼠標點擊,手動調度鼠標事件不會愚弄它,並沒有(或至少不應該)解決這個問題。用戶將不得不實際點擊你的閃光燈按鈕來調出文件瀏覽器(或全屏閃光燈應用程序)。

+0

謝謝, 我做到了,但它不起作用!使用ExternalInterface我可以調用ActionScript函數,但我不能觸發按鈕單擊事件 – 2012-08-03 17:42:52

+0

我從JavaScript調用JS(),它觸發沒有任何問題,但包含此功能: myButton.dispatchEvent(new MouseEvent(MouseEvent.CLICK) ); 不起作用! – 2012-08-03 17:52:04

+0

然後你的問題不是用JavaScript,而是用你的flash代碼。當你說它沒有激發你的點擊事件時,你的意思是它會拋出一個錯誤,或者你的聽衆沒有收到事件? – BadFeelingAboutThis 2012-08-03 17:56:39