以前、規定のJavaのオブジェクトをAMFを用いてas3上のクラスにマッピングする方法を記述しましたが、
今回は、任意のJavaクラス(自分で作成したJavaクラス)についてです。

1.Javaのクラス定義の際にjava.io.Externalizableインターフェイスを実装する

以下は必要となるメソッドのみを抜粋しています。

@Override
public void readExternal(ObjectInput in) throws IOException,
		ClassNotFoundException {

	isDirectory = in.readBoolean();
	isFile 		= in.readBoolean();
	isAbsolute  = in.readBoolean();
	isHidden    = in.readBoolean();

	absolutePath = (String)in.readObject();
	canonicalPath = (String)in.readObject();
}
@Override
public void writeExternal(ObjectOutput out) throws IOException {

	out.writeBoolean(isDirectory);
	out.writeBoolean(isFile);
	out.writeBoolean(isAbsolute);
	out.writeBoolean(isHidden);
	out.writeObject(absolutePath);
	out.writeObject(canonicalPath);

}

という感じに、readExternal()とwriteExternalを実装する必要があります。

2.AS3上でflash.utils.IExternalizableインターフェイスを実装したクラスを作成する
AS3上でもJavaと同様な感じにします。

public function writeExternal(output:IDataOutput):void{
	output.writeBoolean(isDirectory);
	output.writeBoolean(isFile);
	output.writeBoolean(isAbsolute);
	output.writeBoolean(isHidden);
	output.writeFloat(lastModifed);
	output.writeFloat(length);
	output.writeObject(absolutePath);
	output.writeObject(canonicalPath);
}

public function readExternal(input:IDataInput):void{
	isDirectory = input.readBoolean();
	isFile      = input.readBoolean();
	isAbsolute  = input.readBoolean();
	isHidden    = input.readBoolean();
	lastModifed = input.readDouble();
	length		= input.readDouble();
	absolutePath	= input.readObject();
	canonicalPath 	= input.readObject();
}

3.AS3上のクラスに対して、RemoteClassの指定をする。

[RemoteClass ( alias="com.coltware.serene.service.file.JFile") ]
public class JFile implements IExternalizable{
  //  省略
}

という感じになります。

関連記事

Leave a Reply

Spam protection by WP Captcha-Free

ソフトウェア&ライブラリ



ライブラリ
airxmail(en)
AIR版メール送受信ライブラリ
airxzip
AIR版ZIP圧縮・解凍ライブラリ
カレンダー
2010年7月
« 6月   8月 »
 1234
567891011
12131415161718
19202122232425
262728293031  

カスタム検索
RSS
Add to Google
にほんブログ村 IT技術ブログへ