0

是否可以通过 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");
        }
    }
}
}
4

1 回答 1

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 应用程序)。

于 2012-08-03T17:35:03.947 回答