前回の方法だとmxml内にclick="click();"というイベントトリガーのためのロジックが残ってしまいましたので、クラスを作成する方法でこれを取り除いてみます。
HelloWorld.mxml
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" xmlns:local="*"> <local:HelloWorldLogic/> <mx:Button label="click me!" id="clickMe" /> </mx:Application>
mx:Scriptタグの代わりに、mx:Applicationタグにxmlns:local="*"とlocal:HelloWorldLogicタグが追加されました。また、mx:Buttonタグにid="clickMe"を追加しています。
次にクラスを作成します。
Flex Builder 3のメニューからファイル→新規→ActionScriptクラスを選び、
を指定して「終了」ボタンでファイルを作成します。
作成されたファイルを以下のように修正します。
HelloWorldLogic.as
package { import mx.controls.*; import mx.core.*; import mx.events.*; import flash.events.*; public class HelloWorldLogic implements IMXMLObject { private var view:HelloWorld; public function initialized(document:Object, id:String):void { view = document as HelloWorld; view.addEventListener(FlexEvent.CREATION_COMPLETE, onCreationComplete); } private function onCreationComplete(event:FlexEvent):void { view.clickMe.addEventListener(MouseEvent.CLICK, onClick); } private function onClick(event:MouseEvent):void { Alert.show("Hello World!"); } } }
これでmxmlがすっきりしました。