可以通过javascript触发Flash按钮点击事件吗?
它是我的代码,我从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 :(得分:2)
您可以使用ExternalInterface类并向所述函数添加回调处理程序。 闪光面看起来像这样:
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
- 您在评论中发表的问题 -
出于安全原因,Flash不允许您在没有实际鼠标点击的情况下弹出文件浏览器,手动调度鼠标事件并不会欺骗它,并且没有(或者至少不应该)为此解决方法。用户必须实际点击您的Flash按钮才能打开文件浏览器(或全屏显示Flash应用程序)。