ScriptUIのFlashPlayerについて調べる

CS3からはScriptUIでFlashを読み込み利用できるようになっています。
Flashを利用することでリッチなGUIが使えるはずなのです。
そこで「JavaScript Tools Guide CS3.pdf」を読んでみました。
が…サッパリ判りません、
イメージがつかめないので実際に動作するサンプルを
探してみました。

見つけたのは以下の2つ
Adobe - Illustrator Developer Centerにある「flashpanel.zip」
入っているのはFlashPanel.jsxといくつかのSWFファイル、
SWFファイルはMXMLで書かれたソースも添付されています。
FlashがなくてもFlexSDKでいろいろ試すことができます。
添付されている「ScriptingIllustratorFromFlash.pdf」も参考になります。

Indesign palette/window with flash
入っているのはFlash Dialog.jsx」と「flash.swf」と「flash.fla」
こちらはFlash形式のファイルが入っています。
Flashをもっていればこちらの方が作りやすそうです。


参考にして作ったもの

FlashPanelSample.zip



JavaScript

flashPanelTest.jsx

//イラストレーターの場合
//#targetengine com.adobe.illustrator.demo.flashplayer
//インデザインの場合
//#targetengine "session"

//パレットの生成
var Palette = new Window(
	'palette',
	{text: 'TEST' ,
	properties : {
						closeOnKey : 'OSCmnd+W',
						resizeable : true
						}
});

	//パレットにFlashPlayerを登録
	Palette.FP = Palette.add('flashplayer');
	Palette.FP.preferredSize = [500, 500];
	

	
	//JavaScriptからActionScriptへ関数を登録
	Palette.FP.mouseClick = mouseClick;

	
	
	//関数
	function mouseClick(ret) {alert('Click:'+ret);	}


	//FlashPlayerで読み込むFlashファイルの場所
	//flashFile = new File('FlashPanelTest.swf');
	var flashFile = File.openDialog("FlashPanelTest.swfを選択して下さい。");
	//FlashPlayerにロード
	Palette.FP.loadMovie (flashFile);

//パレットを表示
Palette.show();

//JavaScriptからActionScriptの関数を呼び出す
Palette.FP.invokePlayerFunction("setText", "テスト");
ActionScript
//JavaScriptから利用する関数を登録
ExternalInterface.addCallback("setText", setText);
function setText (receivedValue) {
	myT.text = receivedValue;
}

function evaljs(f:String,ret:Object,String){
	if( ExternalInterface.available){
		ExternalInterface.call(f,ret);
	}
}

function mouse_click(evt:MouseEvent):void{
	if( ExternalInterface.available){
		//JavaScriptから登録した関数を実行
		ExternalInterface.call('mouseClick',["日本語もOK!","テスト"]);
		myT.text = "MOUSE_CLICK";
	}
}
function mouse_over(evt:MouseEvent):void{
	var linkOverColor:uint = 0xFF1493;
	var colorTransform:ColorTransform = this.transform.colorTransform;
	colorTransform.color = linkOverColor;
	this.transform.colorTransform = colorTransform;
	myT.text = "MOUSE_OVER";
}
function mouse_out(evt:MouseEvent):void{
	var linkOverColor:uint = 0x0000FF;
	var colorTransform:ColorTransform = this.transform.colorTransform;
	colorTransform.color = linkOverColor;
	this.transform.colorTransform = colorTransform;
	myT.text = "MOUSE_OUT";
}

//イベントを割り当てる
bot.addEventListener(MouseEvent.MOUSE_OVER,mouse_over);
bot.addEventListener(MouseEvent.MOUSE_OUT,mouse_out);
bot.addEventListener(MouseEvent.CLICK,mouse_click);