Flexで〜Service要素を作る

mx.core.IMXMLObjectインターフェイスを実装したクラス作ると、<HTTPService>要素のような、描画はされないけどMXMLに組み込める要素を作れるようです。

mx.core.IMXMLObjectにはinitializedというメソッドしかないので、作るのは簡単です。initializedメソッドはMXMLのプロパティの初期化が完了すると呼ばれるメソッドで、ここでサーバーに接続するなどなどの処理を行えばOKです。


FlexでターミナルエミュレータのTelnetクライアントはmx.core.IMXMLObjectを実装しているので、なにも描画しませんがMXMLに組み込むことができます。

<TelnetService id="telnet" host="localhost" port="7777"/>
<Terminal id="terminal" dataProvider="{telnet}"/>

(dataProvider="{telnet}"のあたりがイケてますよねー)
詳しくはAdobeのドキュメントを。


TelnetServiceの中身は↓こんな感じになっています。

import mx.core.IMXMLObject;

public class TelnetService extends Telnet implements IMXMLObject
{
	private var _host:String;
	private var _port:int = 0;

	public function TelnetService():void {
		super();
	}

	public function set host(h:String):void {
		_host = h;
	}
	public function get host():String {
		return _host
	}

	public function set port(p:int):void {
		_port = p;
	}
	public function get port():int {
		return _port;
	}

	public function initialized(document:Object, id:String):void {
		if(_port != 0) {
			connect(_host, _port);
		}
	}
}