在flex中可以通過IMXMLObject的實現來達到對純as3類的mxml顯示支持;以前沒怎麼了解過 今天看了下 感覺用起來還是很方便;
其實非常簡單 只需要把你自己的類實現IMXMLObject 接口就可以了 。
比如:
////////////////////////////////////////////////////////////////////////////////
// WEBGAME Confidential
// Copyright 2011. All rights reserved.
//
// Remote.as
// Summary // TODO Auto-generated summary stub
// Version 1.0
// Author txiejun
// Created Nov 24, 2011 5:30:29 PM
////////////////////////////////////////////////////////////////////////////////
package com
{
import flash.display.Sprite;
import flash.events.Event;
import mx.core.IMXMLObject;
[Event(name="result",type="flash.events.Event")]
/**
*
* @author txiejun
* @contact [email protected]
* @created Nov 24, 2011 5:30:29 PM
*/
public class Remote extends Sprite implements IMXMLObject
{
private var document:Object;
private var id:String;
public function Remote()
{
super();
}
public function initialized(document:Object, id:String):void
{
this.document = document;
this.id = id;
this.dispatchEvent(new Event("result"));
}
}
}
需要注意的就是事件處理:需要寫類似於這樣的代碼:
[Event(name="result",type="flash.events.Event")]
這樣就可以在mxml標籤中直接通過提示打出來你想要的result事件標識了;
<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark" xmlns:com = "com.*"
xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600">
<fx:Script>
<![CDATA[
protected function rt_resultHandler(event:Event):void
{
// TODO Auto-generated method stub
}
]]>
</fx:Script>
<fx:Declarations>
<!-- Place non-visual elements (e.g., services, value objects) here -->
<com:Remote id="rt" result="rt_resultHandler(event)"/>
</fx:Declarations>
</s:Application>
同理的 如果想要把你自己的類變成一個flexUI編輯器可以識別的並且在components的custom欄可以顯示出來的組件 只需要實現IVisualElement接口 就可以了;