2006年02月23日

Flash 8 を JavaScriptから操作




( Flash 7 以降)


( Flash 8 以降)

Flash はあまり詳しく無いです。ムービーは全く解らないので、
パーツとして限定利用しています。

<SCRIPT language="JavaScript">

function getVersionFromSWF() {

	var obj;

	if ( document.all ) {
		obj = document.getElementById("flash1");
	}
	else {
		obj = document.getElementById("flash2");
	}

	obj.SetVariable("commandType", "getVersion");
	obj.Play();

}

function setClipboard( strValue ) {

	var obj;

	if ( document.all ) {
		obj = document.getElementById("flash1");
	}
	else {
		obj = document.getElementById("flash2");
	}

	obj.SetVariable("commandType", "setClipboard");
	obj.SetVariable("paramValue", strValue );
	obj.Play();

}

function urlDownload( ) {

	var obj;

	if ( document.all ) {
		obj = document.getElementById("flash1");
	}
	else {
		obj = document.getElementById("flash2");
	}

	obj.SetVariable("commandType", "urlDownload");
	obj.SetVariable("paramValue", "http://自ドメインファイル" );
	obj.SetVariable("paramValue2", "ローカルファイル名" );
	obj.Play();

}

function flash1_DoFSCommand(commandType, result) {

	if ( commandType == 'onProgress' ) {
		document.getElementsByName("disp")[0].value =
		result;
	}
	else {
		alert(commandType + ":" + result)
	}

}

function utilWeblog_DoFSCommand(commandType, result) {

	if ( commandType == 'onProgress' ) {
		document.getElementsByName("disp")[0].value =
		result;
	}
	else {
		alert(commandType + ":" + result)
	}

}
</SCRIPT>
<SCRIPT language="VBScript">

Sub flash1_FSCommand(commandType, result)

	Call flash1_DoFSCommand(commandType, result)

End Sub

</SCRIPT>


<HTML>
<HEAD>
<META http-equiv="Content-Type" content="text/html; charset=shift_jis">
<SCRIPT language="JavaScript">
</SCRIPT>
</HEAD>
<BODY>

<OBJECT
	id="flash1"
	classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
	width=0
	height=0
>
	<PARAM name="movie" value="utilWeblog.swf">
	<PARAM name="allowScriptAccess" value="always">

	<EMBED
		id="flash2"
		name="utilWeblog"
		swliveconnect="true"
		src="utilWeblog.swf"
		width=0
		height=0
		type="application/x-shockwave-flash"
	>
</OBJECT> 

<INPUT
	type=button
	value="getVersionFromSWF"
	onClick="getVersionFromSWF();"><br><br>

<INPUT
	type=button
	value="setClipboard"
	onClick="
		setClipboard( document.getElementsByName('data')[0].value );
	">
<INPUT type=text name="data"><br><br>

<INPUT
	type=button
	value="urlDownload"
	onClick="urlDownload();">
<INPUT type=text name="disp"><br><br>

</BODY>
</HTML>
Flash ( ActionScript ) のコードです
フレームが二つあり、二つ目は stop(); のみ書かれています

// *******************************************
// URL ダウンロード用
// *******************************************
import flash.net.FileReference;

// *******************************************
// インターフェイス変数
// *******************************************
var commandType;
var paramValue;
var paramValue2;

// *******************************************
// URL ダウンロードリスナー
// *******************************************
var listener:Object = new Object();
// 実行状況
listener.onProgress = function(
file:FileReference, bytesLoaded:Number, bytesTotal:Number):Void {
    fscommand( "onProgress",bytesLoaded + " " + bytesTotal); 
}
// 終了
listener.onComplete = function(file:FileReference):Void {
    fscommand( "onComplete",""); 
}
// エラー
listener.onIOError = function(file:FileReference):Void {
    fscommand( "onIOError", file.name ); 
}

// *******************************************
// コマンド処理
// *******************************************
// バージョン文字列取得
if ( commandType == "getVersion" ) {
    fscommand( "getVersion",getVersion() ); 
}
// クリップボードに文字列を貼り付け
if ( commandType == "setClipboard" ) {
	System.setClipboard(paramValue);
}
// URL ダウンロード
if ( commandType == "urlDownload" ) {
	var fileRef:FileReference = new FileReference();
	fileRef.addListener(listener);
    var url:String = paramValue;
    fileRef.download(url, paramValue2);
}

Trackback on "Flash 8 を JavaScriptから操作"

このエントリーのトラックバックURL: 

"Flash 8 を JavaScriptから操作"へのトラックバックはまだありません。