2

外部 SWF をロードし、現在同じ SWF 内のボタンにリンクされている actionscript 関数があります...

function btnClick(event:MouseEvent):void{
SoundMixer.stopAll();
 removeChild(loader); 
 loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onSWFLoaded);
 loader.load(movieSWF)
 loader.x=Xpos
 loader.y=Ypos
 addChild(loader)


}


button.addEventListener(MouseEvent.CLICK,btnClick);

swfが格納されているページのリンクからこの関数を呼び出す方法があるかどうか疑問に思っています。私はjavascript、php、またはswfaddressが最も可能性の高い方法だと推測していますが、私は信じられないほどこれらすべてに慣れていないので、どこから始めればよいのか、どのように進めればよいのかわかりません.

どんな助けでも大歓迎です。

4

1 に答える 1

9

あなたはその機能を探していExternalInterface.addCallbackます。これにより、関数を登録して、JavaScript コードから外部的に呼び出すことができます。

HTML は次のようになります ('IDofSWF'は、ページ上の SWF を含む要素の ID です)。

<a href="#" onclick="document.getElementById('IDofSWF').clicky()">
    Click to call btnClick in the SWF
</a>

Flash の初期化コードに次のように記述します。

import flash.external.ExternalInterface;

// ...

// This will allow JavaScript to call a function on the SWF named 'clicky'. It will execute the anonymous function passed as the second argument:
ExternalInterface.addCallback('clicky', function () {
    btnClick(null);
});

nullイベント ハンドラーは、マウス クリックで SWF 内からではなく手動で (JavaScript から外部的に) 呼び出されるため、MouseEvent を取得しないことに注意してください (私の例ではその値として渡されます)。

于 2010-04-05T12:51:23.150 に答える