banner
李大仁博客

李大仁博客

天地虽大,但有一念向善,心存良知,虽凡夫俗子,皆可为圣贤。

ActionScript 学習ノート:ExternalInterfaceの使用

Flash ActionScript 学習ノート:ExternalInterface の使用
私が家に帰る前に、学校のソフトウェア協会から開発の依頼を受けました。要件は、.Net と Flash の間での相互操作を実現することで、具体的には C# で Flash オブジェクト(DisplayObject と DisplayObjectContainer)の操作を実現することです。挿入、削除、コピーなどのオブジェクトの操作、拡大縮小、回転、反転、レイヤーの移動なども実現する必要があります。

現在、開発はほぼ終了しましたので、私の AS 学習ノートを公開します。正直言って、この依頼を受ける前は Flash と AS について全く知識がありませんでしたが、今は少しは理解できるようになりました。ソースコードはhttp://www.lidaren.com/archives/301で参照できます。

Flash ActionScript 学習ノート:ExternalInterface の使用、C# との相互操作の実現

Flash AS では、API XML を使用して Flash コントロールとの通信を実現します。具体的な形式は以下のようになります:

外部から Flash のメソッドを呼び出す ??? ??????? ... (individual argument values) ???

返される結果 (XML) サポートされるタイプ:

invoke 要素の属性 "name" は呼び出す関数名を示し、"returntype" は返される結果のタイプを示します。現在の AS3 では、Byte、XML、JSON がサポートされています。argument 要素は入力パラメータを示し、1 つまたは複数のパラメータを持つことができます。これらは呼び出す関数のパラメータリストと同じでなければなりません。

以下は Flash と C# の相互操作のデモです。

Flash ActionScript:

import flash.external.ExternalInterface;
//C# の関数を呼び出す
//flash2Csharp 関数名、引数 "test"
ExternalInterface.call ("flash2Csharp", "test");
//C# のコールバック関数を登録する
//Csharp2flash 関数名
ExternalInterface.addCallback ("Csharp2flash",Csharp2flash);
// 関数を登録する
function Csharp2flash (s)
{
trace(s);
}

C# の部分

public class Form1 : Form
{
//...
....
//...

private AxShockwaveFlashObjects flash = new AxShockwaveFlashObjects();
private void Form1\_Load(object sender, EventArgs e)
{
flash.Movie = "test.swf"; //flashコントロールの再生ファイルを設定する
flash.FlashCall +=
	new AxShockwaveFlashObjects
	.\_IShockwaveFlashEvents\_FlashCallEventHandler(flash\_FlashCall);
//flashcallイベントを追加する
this.CallFlash();
}

//flashCall、flashからC#の関数を呼び出す
private void flash\_FlashCall
	(object sender,
	 AxShockwaveFlashObjects.\_IShockwaveFlashEvents\_FlashCallEvent e)
{

XmlDocument xml = new XmlDocument();
xml.LoadXml(e.request);
XmlNodeList list = doc.GetElementsByTagName("arguments");
string s =
	list\[0\].ChildNodes\[0\].InnerText.ToString();
//XMLを解析する
this.flash2Csharp(s);
}

private void CallFlash()
{
//C#からFlashを呼び出す
flash.CallFunction("test");
}

private void flash2Csharp(string s)
{
	MessageBox.Show(s);
}

}

その他の内容は Adobe のサンプルを参照してください:http://www.adobe.com/go/learn_programmingAS3samples_flash_cn

読み込み中...
文章は、創作者によって署名され、ブロックチェーンに安全に保存されています。