trace()は使わない方が良い変数などをデバッグしたい時にtrace("aaa")なんかをつい使ってしまいがちですが、これは使わないのが賢明らしい。
通常の実行時では出力されないが、実行されるので少なからずパフォーマンスにも影響でる。
ブラウザ拡張機能を使うと、traceの内容とかも見えちゃう。
というのが理由(らしい)です。
じゃー何を使うか?ですが、
に書かれているように、リスク軽減の何かの手段を打つか、素直にmx.controls.Alert.show()を使ってダイアログを表示する。
って所でしょうか。
ダイアログが出るのはちょっとウザイ。。ですけども、後で削除するのが必要なら、ダイアログの方が無難でしょぅ。
ということで、ASを書くときには、import mx.controls.Alert; を忘れずにっ♪
MXMLのコンストラクタMXMLのコンストラクタは作れません!
initialize、creationCompleteのイベントで処理を書きましょう。 MXMLのコンポーネントを操作したいのであれば、creationCompleteの方がいいらしいです。 データバインディング変数と、コンポーネント表示とをデータバインディングするには、 [Bindable]private var hoge :String; と、変数にBindableの指定をし、 <mx:TextInput text="{hoge}" /> とする。 これで変数の値が変わったら自動的にコンポーネントの表示の値も変わる。 逆にコンポーネントの入力値が変わったら変数の値にも自動的に反映させたい場合には、 <mx:Binding>タグやmx.binding.utils.BindingUtilsを使って指定が必要。 setter, getterで使用する場合には private var _id:Number; [Bindable] と記述できます。 ここで、getterだけ...read onlyだけの場合には [Bindable ("readonly")] 逆にsetterだけ...wite onlyだけの場合には、 [Bindable ("writelonly")] と記述することができます。 Bindableの属性にはもう一つ、typeというのが指定できます。 これは、どの型であつかうか?というものです。 [Bindable(type="DataProvider")] var x: Object; 定数の書き方static const って書けばいいみたい。 public static const TEISU:String = "ABC"; Arrayの使い方Arrayのクラスには色んなオブジェクトが渡せます。var myArray:Array = new Array(); ArrayはTopレベルのクラスなので、import文は特になくてOK。追加は var myObject:MyObject; myArray.push(myObject); 削除はmyArray.remove(myObject); でできます。ループしたい時には、for eachを使えます。 for each(var obj:MyObject in myArray) { 配列の中身がStringの場合は for (var obj:String in myArray)でいけるけど、} 独自オブジェクトの場合は for each...inを使わないといけないっぽぃ クリアのメソッドは見当たらなくて。。(Javaだったらclear()みたいなメソッド) とりあえず myArray = [] でしてます。 もっといい方法があるんかもしれないけど。 2008/08/12 追記 mx.collections.ArrayCollectionというクラスを使うと便利っぽい。 クリアもremoveAllあるし、filter機能も使えるので、DataGridの表示用Arrayは特にこっちがいいっぽい。 ダイアログの表示ダイアログの表示には、mx.controls.Alert を使用します。よく使うのは、Alert.show("メッセージ");という形。 でもこのAlertには色んなオプションがつけれて、YES,NOダイアログとかも表示できます。 public static show( text:String, title:String = null, flags:uint = mx.controls.Alert.OK, parent:Sprite = null, clickListener:Function = null, iconClass:Class = null, defaultButton:uint = mx.controls.Alert.OK) : Alert
Alert.show("このTaskEntryを削除しますか?", "確認", Alert.YES|Alert.NO, window, Javaでいう、JOptionPaneみたいな感じですが、InputDialogのようなオプションは無いみたいですね。。残念。function (event:CloseEvent):void { if (event.detail == Alert.YES) { //YES押されたときの処理 } } ); mx:WindowedApplication, mx:Windowの参照をを取得mx:WindowedApplication, mx:Windowの参照を取得する方法。子コンポーネントから、Windowの参照を取得する場合は、UIComponentのparentDocumentのプロパティで取れるようです。 UIComponentはいろんなGUIコントロールの継承元ですので、TextInputやItemRendererなどで使うことができます。 現在ActiveになっているWindowの参照を取得するには、(無理矢理なので一番いい方法かは分からないんですけども....) import mx.managers.SystemManager; .... SystemManager(NativeApplication.nativeApplication.activeWindow.stage.getChildAt(0)).application で取得することはできました。 Flexのソースコードの場所オープンソースなので、コードが見る事ができます。mx関連のソースコードの場所は以下。 http://opensource.adobe.com/svn/opensource/flex/sdk/trunk/frameworks/projects/framework/src/mx/ Airアプリケーションのバージョンを取得するvar appDescriptor:XML = NativeApplication.nativeApplication.applicationDescriptor;var ns:Namespace = appDescriptor.namespace(); var appVersion:String = appDescriptor.ns::version; |
