2012-08-03 45 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