Flash 8でムービークリップをモーダルでポップアップしたい
まだ僕のFlashの開発環境はFlash 8だったりするのだが、ムービークリップを手軽にモーダルでポップアップさせる方法を考えていて、なんとなくたどり着いたのがこの方法。
やりたいことは/apiにPOSTで送って、読み込みが終わるまでモーダルにして真ん中あたりにWaitingっていう砂時計みたいなムービークリップを表示する。
import mx.managers.PopUpManager; import mx.core.UIComponent; var l = new Object(); l.click = function(evt) { var ui = PopUpManager.createPopUp(btn,UIComponent,true,{_x : 300,_y : 200}); ui.createObject('Waiting','waiting',1); var lvar:LoadVars = new LoadVars(); var rvar:LoadVars = new LoadVars(); rvar.onLoad = function(){ ui.deletePopUp(); }; lvar.sendAndLoad("/api",rvar,"POST"); }; btn.addEventListener('click', l);
モーダルなウィンドウをだすのは、PopUpManagerクラスとWindowクラスでヘルプにも、ウェブにもあるんだけどウィンドウを使わないのは見当たらなかった。
PopUpManager.createPopUpは第二引数で指定したクラスのインスタンスを返す。
たとえばウィンドウ無しのProgressBarをモーダルでかつ無限の進捗バー表示したいなら、
var ui = PopUpManager.createPopUp(btn,ProgressBar,true,{_x : 300,_y : 200}); ui.indeterminate = true;
こんなコードで書けた。
ライブラリにmx.containers.Windowを入れておく必要があるけど(Modalというムービークリップを作ってもよい)、わざわざクラス作らなくてもいいし便利。
検索したけど、同じ方法をしている人がいなかったので、書いてみた。みんな自分でモーダル実装するのかしら?
まあいまさらAS2か?という話もあるけどね。