使用javascript激活Actionscript按钮事件

时间:2012-08-03 17:31:30

标签: actionscript-3 actionscript

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

1 个答案:

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