何かしらのトリガーで、メッセージとボタンを備えたダイアログボックス(のようなもの)を表示させるサンプル。
ダイアログボックスのクラス(MyDialog)では、
・現在ダイアログボックスが表示されている?いない?を知るためのプロパティ(Readonly)
・ステージに追加された時のハンドラー(ステージの中央に表示するための処理)
・ステージから削除された時のハンドラー
・ボタンが押された際のハンドラー(カスタムイベント発行)
などが含まれています。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
package { import flash.display.MovieClip; import flash.events.Event; import flash.events.MouseEvent; public class MyDialog extends MovieClip { private var _opened:Boolean = false; public function MyDialog() { this.addEventListener(Event.ADDED_TO_STAGE, onAddedToStage); this.addEventListener(Event.REMOVED_FROM_STAGE, onRemovedFromStage); this.btnOk.addEventListener(MouseEvent.CLICK, onClickBtnOk); } function get opened():Boolean { return _opened; } function onAddedToStage(e:Event):void { this.x = this.stage.stageWidth / 2; this.y = this.stage.stageHeight / 2; _opened = true; } function onRemovedFromStage(e:Event):void { _opened = false; } function onClickBtnOk(e:MouseEvent):void { dispatchEvent(new Event("CloseDialog")); e.stopPropagation(); } } } |
ダイアログボックスを呼び出す側のドキュメントクラスでは、
・ステージがクリックされたらダイアログボックスを表示する
・カスタムイベント(ダイアログを閉じる)のハンドラ
が含まれています。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
package { import flash.display.MovieClip; import flash.events.MouseEvent; import flash.events.Event; public class DialogTest extends MovieClip { private var dlg:MyDialog = new MyDialog(); public function DialogTest() { this.stage.addEventListener(MouseEvent.CLICK, onClickStage); dlg.addEventListener("CloseDialog", onCloseDialog); } function onClickStage(e:MouseEvent):void { if(dlg.opened == false) { this.addChild(dlg); } } function onCloseDialog(e:Event):void { this.removeChild(dlg); } } } |
実行結果
This movie requires Flash Player 11
ソースファイルは、こちらからダウンロード
コメントを残す
コメントを投稿するにはログインしてください。