[AS3.0]CS4 Flash上でFlexのAlertポップアップを実現する

公開日: 

Flashの環境上にはAlertがない。
FlexではAlert.show(“message”);とかで簡単にできちゃうけど、Flashではそれができないのだ。
そこでなんとか方法はないかと探ったら方法と、また、問題点があったのでめもっとく。

sponcer link


[方法]Examples: AlertManager for Flash CS3から適当にどれかFLAファイルひろってくる。
そのあと、FLAファイルにあるAlertManagerと、コンポーネントのButtonを自分とこのライブラリにコピー
次に

import com.yahoo.astra.fl.managers.AlertManager;
import fl.data.DataProvider;
import fl.events.ComponentEvent;

を、importして、

AlertManager.createAlert(this, “This is an alert box.”);

を実行するだけ。
[問題点]
ASファイルを別に作り、ドキュメントクラスで書いてるとうまく動かない
[解決方法]
AlertManager.createAlert(this, “This is an alert box.”);
のthisの部分をrootに変える。
[詳細]
参考サイト
ASTRA AlertManager
FlashでのAlertポップアップの答えがここにあった!
サンプルをみると、、、
おー!
FlexのAlertのようだ!
Using AlertManagerをみてみると、
1.importと初期設定

import com.yahoo.astra.fl.managers.AlertManager;
import fl.data.DataProvider;
import fl.events.ComponentEvent;
stage.align = StageAlign.TOP_LEFT;

をやってくれとのこと。
しかし、ここで問題。
私の環境ではstage.align = StageAlign.TOP_LEFT;をやってもえらーになってしまった。
しかたないのでここははずしたが・・・
あれ、、はずしてもうごいてるじゃんw
ということで、なくてもよくわからんけど動きます。
2.Alertの表示
以下を書き込むだけでアラートができる。

AlertManager.createAlert(this, “表示したいメッセージ”);

なんと簡単なんだ!!
3.引数の設定
もっと詳細に設定したい場合はこちら。

AlertManager.createAlert(this, “表示したいメッセージ”, “アラートタイトル”, buttons, alertClickHandler, iconClass, true);

・1個目の引数
みたまんまthisをいれている。
だがしかし、これがトラップをもっている。
ASファイルを別につくりドキュメントクラスとして書いて、thisで実行するとこんなエラーがでた。

TypeError: Error #1034: 強制型変換に失敗しました。global@31f3f0f9 を flash.display.DisplayObject に変換できません。
at MethodInfo-136()

そのため、代わりにrootをいれてあげたらできた。
・2個目の引数
メッセージ本文です。
String型でいれてあげましょう。
・3個目の引数
メッセージのタイトルです。
これもString。
・4個目の引数
ボタンの設定です。
Arrayをいれます。
Arrayの個数によってボタンが増えていきます。
たとえば

var buttons:Array = new Array( “button1”, “button2” );

と、宣言しこのbuttonsを引数に指定すれば、
button1とbutton2のボタンが生成されます。
・5個目の引数
ボタンが押されたときに呼び出されるイベントハンドラです。
適当に関数を指定しときましょう
・6個目の引数
iconClassってことだが、これは表示するポップアップを

“” (普通のアラート)
“dialogIcon”
“warningIcon”
“confirmationIcon”

4つ選択できる。
すきなものをString型でいれてあげてください。
・7個目の引数
よくわからん。
とりあえずtrue。
falseにするとなんかエラーでるのでとりあえずtrueにしとけばいいかと。
とりあえずASファイルの記述はこんなかんじ。

サンプルとソースはこちら
アラートサンプル
ソース
11/20追記
ライブラリに追加する際に、AlertManagerだけでなく、コンポーネントからButtonも追加しないといけないようなので注意です。
これがないとエラーでて、大変だったので注意。
アラートボックス

  • このエントリーをはてなブックマークに追加
  • Pocket
PAGE TOP ↑