カテゴリー
Develop 未分類

Flash Player 10 beta

Adobe Labs – Flash Player 10
akihiro kamijo: Flash Player 10 beta 公開
でた。
Effects,Enhanced Drawing API。これで既存の3Dライブラリはより高速化するのかしら?(かなりき直しになるのかな?)
的にはAdvanced Text Layoutでにアンチエイリアスをかけれる部分がうれしかったりするのだけど、これだとどーなるのだろうか??でやるのとPlayerでやるのとどっちが先される?

カテゴリー
Develop 未分類

flash.accessibility.updateProperties()

If you modify the accessibility properties for multiple objects, only one call to the Accessibility.updateProperties() method is necessary; multiple calls can result in reduced performance and erroneous screen reader output.

この仕様どうなんだろうか?
つまりによって内容が変化していくようなインターフェイスの場合、updateProperties()した後のAccessibilityPropertiesは反映されないということなのだろうか?
うーん・・・。
なんか微妙な気がする。

カテゴリー
Develop

TweenerのaddCallerをクリアする

オデのためのオデによる “apeirophobia”です。
さて
TweenerでaddCallerを途中で解除したいぜ!というときにどすればええのん?
という質問をされたのでいておきます。
addCallerの場合はproperyが設定されていないのでオデはざっくりと

で対応しています。
ただこれだとその要素に対して設定されているすべてのTweenが削除されてしまいますが・・。
オデは基本的にaddCallerを停止させるときはremoveのタイミングで、他のも一括で削除することが多いからそんなに不便さは感じていませんけど、まぁ個別に細かく制御したい場合はaddCallerを割り当てるためのSprite(Shapeでもいいのかしら?)を作ってそこでするって感じですかね?
そうする場合の注意点なのですが、

カテゴリー
Develop

外部swfの削除はLoader.unloadは使わない方が良いんじゃないかという件に誤りがあった件

ここ数日やってきましたが、
apeirophobia: Loader.removeChildapeirophobia: 外部swfの削除はLoader.unloadは使わない方が良いんじゃないかという件
Loader.unloadの処理にミスがありました・・・。(ずかしい・・・)
apeirophobia: Loader.removeChildの方でテストしていた

となっている部分。これunloadでlodar.contentsが非表示になるのでうっかりしていたのですが、loader自体がremoveChildされていませんでした・・・orz。
ということで

としてもう一度検証してみました。
以下その結果。

カテゴリー
Develop

外部swfの削除はLoader.unloadは使わない方が良いんじゃないかという件

と検証をしてきましたが、なんかLoader.unloadは使わない方が良いのではないか?という結論に至りました。既出だったらスンマセヌ。

追記:06-Apr-2008 20:55:08
以下の検証には誤りがありました。
正確な検証結果はapeirophobia: 外部swfの削除はLoader.unloadは使わない方が良いんじゃないかという件に誤りがあった件を参照してください。スイマセン。

やり方としてはunloadを使う代わりに、removeChildを用いる。
で、の方で.REMOVED_FROM_STAGEをlisten。
これをキーにしておけばネストしている子供に対しても一気にremove処理が適応できる。
で、それぞれの子供の中でTwennerやらEventListenerを掃除するprivateメソッド組んでおく。
(当然removeのメソッドの中ではEvent.REMOVED_FROM_STAGEもremoveする)
これで前にやったapeirophobia: Loader.removeChildと同じ検証をしてみた。
結果は以下のとおり。

カテゴリー
Develop

Loader.removeChild

何故になるか?

Error: Error #2069: Loader は、このメソッドを実装しません。
at Error$/throwError()
at .display::Loader/removeChild()

DisplayObjectContainerを継承してるんじゃないのか??
ちゃうのか?
俺がまちがっとんのか?
あーあーあー。
あほう。

追記:06-Apr-2008 20:55:08
以下の検証には誤りがありました。
正確な検証結果はapeirophobia: 外部swfの削除はLoader.unloadは使わない方が良いんじゃないかという件に誤りがあった件を参照してください。スイマセン。
カテゴリー
Develop

img8.debug.Debugger

先日エントリーしたDebuggerをちょっと変えました。
基本FPS計測はOFF。でFPS表示の前のボタンをクリックして計測開始、再度クリックで計測中断。ただこれによって一度増えたメモリ消費が下がるのか?はまだ完全に検証できていません・・。(もともとがあまりに微小な値なのでかなり長回して検証しないと良く分からん)あとはグラフの幅だとか、するとかプロパティを設定できるように。(普通はさわらないだろうけど)

カテゴリー
Develop

Event.ENTER_FRAMEをしているだけでメモリが浪費される??

ちょいとデバッグ用に使用メモリとFPSを表示する”debugger”クラスなるものを作ってみた。
で、試していると、FPSを算出するために.ENTER_FRAMEをまわしているだけでメモリが4KBぐらいずつされているっぽい。Event.ENTER_FRAMEのhandlerに渡されるeventをにしてみたりしたのだけど変わらない。
メモリ変移を描画するために(ダブルクリックでグラフ表示)を取得しているのだけど、それの桁が増えるからその分のメモリが浪費されているのかと思ったのだけど、どーもそうではないらしい。(メモリのチェックはTimerで行っている。)Event.ENTER_FRAMEのhandler内でフレームさせている変数を変化させず、中を空にしていても増加していく。(微々たる量だけど)で、Event.ENTER_FRAMEをaddしなければ使用メモリは増加しない。(つまりメモリーチェックの方の関数系では特にメモリーは増加していないということになるかと・・。)
これはクリアできないものなのでしょうか??

カテゴリー
Develop

img8.Document

昨日から諸うにゃうにゃやっていたものを晒してみます。
突っ込みどころ満載だと思いますが・・・汗
目的は
・stand aloneモードなのかcomplex mode?なのかで動作を切り分けたい(過程において)
・as2で言うところの_rootを取得したい。
環境が(http or https)かローカルなのかを取得したい。
・DisplayObject以外でもstageを参照したい。
と言うところ。
使い方はDisplayObjectで、

といった感じで実行すると、そのDisplayObjectの含まれるswfが最上位である場合とstageが格納。それ以降読み込まれた外部swfでisRootがcallされてもreject(多分)。
ただし一番親のswfでisRootが実行されていないと、errorをthrowします。
なので、とりあえず一番親になるswfでは実行必須になってしまっています。
(ここをからでも解決できるように悪戦苦闘していました)
用意されているmethod,propertyは以下のとおり。

isRoot(displayInstance:DisplayObject):Boolean
displayInstanceがrootに相当するか否か?相当する場合Documentクラス内にrootとstageが定義されます。親であった場合true。
root:DisplayObject [read-only]
最上位のdisplayObjectを戻す。
stage:Stage [read-only]
ステージを戻します。一応これ経由でlistener登録、削除できますので、DisplayObject以外でonResizeを取得することも可能なはず。
url:String [read-only]
最上位のswfのURLを戻します。まぁ特に使うことはないかと。
isLocal:Boolean [read-only]
動作環境がローカルかサーバ上(http or https)で動作しているか?これでローカル開発モード、サーバモードの切り替えなどを行えるかと・・。

っつーようなかんじです。理想は親swfでisRootしないで、子swfから実行してもroot,stage,urlなどが取得できるのが理想なんですが、うまくいかない・・・。出来そうな気だけしているのですが、実力が追いついていません・・。

カテゴリー
Develop

getDefinitionByNameの罠

ちとプレビュー前でばたばたしているので走りきだけど、たとえばプリロードみたいなやり方で、メインコンテンツを先に展開しつつ、後追いで先度の低い埋め込みリンケージなんかを実体化させる場合、内で”getDefinitionByName”を使って定義しちゃうと、実体化の前に定義できてしまう。(,catchでも一応定義はされているということでスルーされてしまうっぽい、そもそも定義自体がされていない場合はReferenceErrorをcatchできます。)
されたサウンドは値はnullにもならず、よく分からない空の状態で定義されてしまって、soundChannelとかsoundEventでが連発して惨な状況になる。
なので実体化されているかどうか?の確認は

みたいな感じになるかと・・。
非常に厳密にエラー定義がされている割には、この手の抜けっぷりが非常にうっとおしいですな。実体化されているかどうか?もcatch出来るようにしてくれれば良いのに・・・。
もちっとローディングの分散の手法はで的確な方法があるのかもしれないが、まだAS2との折衷みたいな段階で煮詰め切れていない。
今一つ使っている手法としては、でかいサウンド系は外部SWFファイル埋め込んでおいて、

の定義をしておいて、Event.COMPLETEの発動=実体化として認識してしまう形にすれば、getDefinitionByNameでReferenceErrorを取得することは可能(なはず)。
取り急ぎメモ。
間違っていたらゴメン。