ActionScript

asdocに高速にアクセスする

Flash制作に欠かせない3つの〜 とか行きたかったのですが、うんうん唸っても2つくらいしか出てこなかったのであきらめて、多分どこにも書いてないようなことを書きます。Windows限定かな。ActionScriptを書く人にとってFlex他ライブラリのasdocは絶対に欠か…

Unionしりとりを作ったときの悩みどころ

ちょっと前のことになるけれど、まる1日ぐらいかけてUnionフレームワークでしりとりをつくってみました。Unionフレームワークというのは、簡単に言うと、非常に機能が限定されたサーバーを介したFlash(クライアント)同士の通信をするためのフレームワークで…

Image(SWFLoader)で読み込みエラーになったときにエラー用の画像を表示したい

ちょっとひっかかったのでメモ。 自分はImageを継承したクラス内で記述しているけど、外からでもできると思う。 まず、HTTP_STATUSイベントを待つ。 image.addEventListener(HTTPStatusEvent.HTTP_STATUS, onHttpStatus);onHttpStatusは次のように書く。 pri…

UITextFieldでの同時押し

UITextFieldで複数のキーを同時押しすると、KEY_DOWNもKEY_UPもCHANGEも1回しか呼ばれないときがある。文字数を調べるルーチンを呼んでいたところでこの問題にひっかかって、正しい文字数が表示できなかった。こういうときは遅延実行がお役立ち。 textfield.…

PopUpされるUIComponentで呼ばれるイベント

ちょっとひっかかったので軽く調べた。同じUIComponentのインスタンスをPopUpManagerから開いたときに呼ばれるイベントは、 1回目 add preinitialize initialize creationComplete 2回目以降 add show で、てっきりcreationCompleteが2回目以降も呼ばれる物…

ASの3項演算子

びびったので載せる。trueとfalse両方評価されるわけじゃないんだ。 true ? trace("AAAA") : trace("BBBB"); false ? trace("CCCC") : trace("DDDD");AAAA DDDD

自分用JSONとXMLの違い

as3corelibのJSON.decodeを使ってJSONをArrayに変換した場合と、素のXMLとの違いを超適当にまとめる。 JSON XML サイズ(TwitterAPIのfriends) 140KB 206KB loader.dataからのデコードの仕方 JSON.decode(loader.data) XML(loader.data) デコードされたデータ…

孫までディープコピー2

また引っかかってしまったので書く。 前のエントリで、Vector.は確かにVector.にコピーされた。だが、Vector.<A> (AはObject以外の任意のクラス)もVector.になるらしい。Arrayでも同様の現象が起こる。(wonderfl)しかも、ディープコピーされたはずの各要素は、A</a>…

ClassFactoryの罠

罠というか、もともとBeanに対して想定されてるものをJavaのリフレクションのように使っちゃおうという魂胆ではじめたことなので諦めるしかないというかなんというか。 ClassFactory.propertiesを使えばインスタンス生成時に値を渡せることがわかったので早…

Ctrl+EnterとAlt+EnterでEvent.CHANGEが呼ばれない

何が原因かわからないのであまり深くは追求しないが、UITextField(TextFieldは未確認)で、Ctrl+EnterまたはAlt+Enterを入力すると、見た目改行が入るのにEvent.CHANGEが呼ばれない。不思議なのは同じ入力を2回以上するとちゃんと呼ばれることだ。 複数行入力…

KEY_DOWNとCHANGEのThreadへの影響

「同一関数内でevent関数を使って同じオブジェクトに対してKeyboardEvent.KEY_DOWNとEvent.CHANGEをlistenすると、KEY_DOWNしか呼ばれない」という、そうめんをやってきた中で一番困る現象がある。 これの解決法は、KEY_DOWNとCHANGEをlistenするThreadを別…

TextAreaのundoの実装3

残りは、KEY_DOWNにundoしたときの処理を書くだけ。 KEY_DOWN private function onKeyDown(e : KeyboardEvent) : void { prepareHistory(); if (e.ctrlKey && e.keyCode == Keyboard.Z) { var item : Object = history.pop(); if (item) { ta.text = ta.text…

TextAreaのundoの実装2

というわけで実装。これを書いているとだんだん他の方法で書き直したくなってくる、ふしぎ!実装するために検出しなければいけないイベントは KeyboardEvent.KEY_DOWN Event.CHANGE Event.CUT Event.PASTE の4つ。テキスト自体が変わる操作が対象。 例によっ…

TextAreaのundoの実装1

TextAreaにundo機能を実装してみたけれど、結構量ありそうなので分けて書くことにする。というわけで今回は具体的なコードに入る前の準備。TextAreaに限らず、テキストを扱うmxコンポーネントではcut/copy/pasteはあるがなぜかundoはない、という単純な背景…

PopUpWindow

PopUpWindowはFlashのほうでも使えることもあって、参考資料が多い。PopUpWindowというクラスではなく、PopUpManagerにより追加されるものなので、基本的には何でもアリ。 Windowの子ウィンドウとして働くが、Windowの外側には出られない。(正確には表示さ…

PopUpWindowとWindowの開き方、閉じ方のまとめ

一通りわかったつもりになったので、ここでまとめておく。なお、現状では同一画面に1個までしか存在しないようなものしか必要ないので、その条件で。

MenuBarのラベルがXMLっぽくなってうまく表示されないよ!

こんな簡単なことでずっと悩んでたので書いとく。labelField設定しろよ!

孫までディープコピー

あるObjectとArrayとVectorを孫までディープコピーする必要があったのでてすてす。 Object var t : Object = { a : { b : "c" }}; var u : Object = ObjectUtil.copy(t); t["a"]["b"] = "d"; trace(t["a"]["b"]); trace(u["a"]["b"]); d cはいおっけー Array…

EventThreadについて

個人的に結構悩んでいるのでまとめておこうと思う。最初に断っておくが主観満載である。EventThreadは、eventを処理するためのThread. run()またはそこから呼ばれた関数でひたすらevent()を並べてそれを処理するThreadのこととする。そうめんではeventListen…

XMLとArrayCollection

急に設定画面のタブリスト(mx:List)の内容が表示されなくなったのでかなり悩んでいた。 このタブリスト(TabList)のdataProviderは、設定XMLから読んだ属性値からなるArrayCollectionをdataProviderとするTabBarから、そのArrayCollection.sourceをconcatして…

mx:Windowが開いているかどうか判定する方法

あるWindowが開いているかどうか判定したい。まずWindowを開いて閉じる手順は、 new Window()する。 Window.open()する。 Window.close()する。 である。 closedを使おうとすると、1,2の間ではなぜかぬるぽっぽいのが出て使えない。詳しくは見ていないが、内…

rotation*で3D回転させた後に元に戻してもブレてる件

FlashPlayer10からDisplayObjectに新たに追加されたrotationX, rotationY, rotationZ等を使って色々したあと平面的に戻したい?ときがある。 たとえばrotationYだけ色々動かした後に0にして平面にしようとすると、文字がブレて見える。これはDisplayObjectの…

about:config風の設定画面をつくる

設定画面にも色々あるけど、設定項目が山のようにあってもそれなりに使いやすいものとして、Firefoxのabout:configがある。ただ、about:configそのままだと設定項目の解説が必要なので、各行に備考を追加したものを考えてみる。まずmxmlの設定。肝要はこんな…

TabNavigatorの罠

TLifeの設定ダイアログをつくっていてはまったので。 設定ダイアログはTabNavigatorを設置して、VBoxの中にTextInputやらDataGridをおくのだが、どうも最初から表示されないところは、ダイアログがcreationCompleteを返してもロードされていないらしい。つま…

TinyURLの解決

TLでTinyURLの解決の話がでたとき、@syo68k に突っ込まれたのだが、変換元URLに日本語が含まれる場合、TinyURLのAPIの仕様どおりに?responseURLをとろうとすると文字化けしてしまう。たとえば http://tinyurl.com/realbomb とか。 あれこれ試行錯誤したけど…

DataGridColumnのItemRendererの設定

DataGridColumnを動的につくろうと思っていじっていたが、itemRendererで少し詰まった。 mxmlでは"uwi.ui.TimelineRenderer"(カスタムレンダラーでスミマセン)みたいに文字列で指定していたが、itemRendererのデータ型はIFactory. これの実装がClassFactory…

アイコン読み込み&表示3

タイムラグがどうこうの話だが、ここらへんに書いてあった。http://clockmaker.jp/blog/2008/07/flex_image_cache/結構衝撃だった。cacheAsBitmapとかいうのは、あくまでインスタンスの中でだけキャッシュするという話で、URLを指定すると毎回読みに行ってい…

アイコン読み込み&表示2

DataGridItemRendererの中のmx:ImageにLoaderで読んだ画像を渡す方法が結構めんどくさかったので、とりあえずmx:Imageのsourceに画像のURLを渡すことにした。これで表示はされるのだが、表示までに時間がわずかにかかる。最初に時間がかかるのはいいのだが、…

連続KeyDownに対するユーザビリティの向上

TLifeのDataGridでカーソルキーを押してKeyDownイベントを起こすと、selectionを上下に動かすほかに、ReplyGetThreadなる、reply先探索用のThreadが走る。実際にはKeyDownの処理関数でフラグを立てていて、別のタイマーの処理関数でフラグを読んでReplyGetTh…

BeanとObjectの適当な速度比較

ふと、メンバ変数とアクセサだけからなるBeanクラスと、ObjectクラスをVectorに格納した場合、どっちが速いか気になったので実験してみた。とはいうものの、適当にやったので数値とか書くのがめんどくさい。結論から書くと、メガ単位で行わない限りはボトル…