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();

アドビの公式ドキュメントへのリンクは次のとおりです: http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/external/ExternalInterface.html

-コメントであなたの問題-

セキュリティ上の理由から、Flash では、実際のマウス クリックなしでファイル ブラウザをポップアップすることはできません。マウス イベントを手動でディスパッチしてもだまされず、これに対する回避策はありません (または少なくともすべきではありません)。ユーザーは実際にフラッシュ ボタンをクリックして、ファイル ブラウザーを起動する (またはフラッシュ アプリを全画面表示する) 必要があります。

于 2012-08-03T17:35:03.947 に答える