Webブラウザコントロールを備えたWindowsアプリケーションを開発しています。一部のリンクでWebブラウザが.SWF
(フラッシュファイル)をロードし、そのフラッシュに「開始」というキャプションが付いたボタンが1つあり、ユーザーがこのボタンをクリックすると、一部のアニメーションが開始されます。 。
ユーザーが「スタート」ボタンをクリックしたときにそのイベントが欲しいです。それをしてもいいですか?.SWF
コードをファイルに入れることができません。何か案が?
ExternalInterfaceを使用する必要があります。まず、この新しいクラスをインポートして使用できるようにする必要があります(as2のみ、as3ではインポートなしで機能します)。
import flash.external.ExternalInterface;
次に、外部で利用できるようにする関数を登録する必要があります。
ExternalInterface.addCallback("addText", addText);
基本的に、上記のコードを使用すると、C#アプリケーションからaddText関数(後で説明します)を呼び出すことができます。addText関数は次のとおりです。基本的に、文字列入力を受け取り、それをテキストボックスに追加します
function addText(val:String):void
{
inTxt.appendText(val + "\n"); // append text recieved from c#
}
これは、ActionScript側からの説明です。ここで行う必要があるのは、C#から関数を呼び出すことだけです。まず、Flash Player ActiveXコントロールのインスタンスをフォームに追加し、フォームのコンストラクターで作成したSWFをロードします。
private AxShockwaveFlash player;
public DemoForm ()
{
...
player.LoadMovie(0,Application.StartupPath + "\\EITest.swf");
player.Play();
...
}
次に、必要に応じて外部化されたメソッドを呼び出すだけです。私の場合、それはユーザーが送信ボタンをクリックしたことに応答します。
private void sendBtn_Click(object sender, EventArgs e)
{
player.CallFunction("" + outTxt.Text + "");
}