Adobe Labs – Flash Player 10
akihiro kamijo: Flash Player 10 beta 公開
でた。
3D Effects,Enhanced Drawing API。これで既存の3Dライブラリはより高速化するのかしら?(かなり書き直しになるのかな?)
個人的にはAdvanced Text Layoutでデバイスにアンチエイリアスをかけれる部分がうれしかったりするのだけど、これMACだとどーなるのだろうか??OSでやるのとPlayerでやるのとどっちが優先される?
カテゴリー: Develop
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は反映されないということなのだろうか?
うーん・・・。
なんか微妙な気がする。
The “data” URL scheme
The “data” URL scheme
data schemeってIEはサポートしてない??
CGIとPerlとPHP
仕事で
「CGIのパス教えてくださいね」
とか話すと
「いやCGIじゃなくって、PHPです」
とか言われるんだけど、
PHPもCGIだと思うんだが・・・。
CGIはPerl限定なの??
CGIとは 【Common Gateway Interface】 – 意味・解説 : IT用語辞典によると、ASPとかSSIはCGIじゃないみたいだけど・・・。
イマイチ違いが分からん。
Apacheに設定を書くものがCGI??(SSIは?)
オデのためのオデによるブログ “apeirophobia”です。
さて
TweenerでaddCallerを途中で解除したいぜ!というときにどすればええのん?
という質問をされたので書いておきます。
addCallerの場合はproperyが設定されていないのでオデはざっくりと
で対応しています。
ただこれだとその要素に対して設定されているすべてのTweenが削除されてしまいますが・・。
オデは基本的にaddCallerを停止させるときはremoveのタイミングで、他のモーションも一括で削除することが多いからそんなに不便さは感じていませんけど、まぁ個別に細かく制御したい場合はaddCallerを割り当てるためのSprite(Shapeでもいいのかしら?)を作ってそこで管理するって感じですかね?
そうする場合の注意点なのですが、
ここ数日色々やってきましたが、
apeirophobia: Loader.removeChild、apeirophobia: 外部swfの削除はLoader.unloadは使わない方が良いんじゃないかという件
Loader.unloadの処理にミスがありました・・・。(恥ずかしい・・・)
apeirophobia: Loader.removeChildの方でテストしていたスクリプトで
となっている部分。これunloadでlodar.contentsが非表示になるのでうっかりしていたのですが、loader自体がremoveChildされていませんでした・・・orz。
ということで
としてもう一度検証してみました。
以下その結果。
延々と検証をしてきましたが、なんかLoader.unloadは使わない方が良いのではないか?という結論に至りました。既出だったらスンマセヌ。
以下の検証には誤りがありました。
正確な検証結果はapeirophobia: 外部swfの削除はLoader.unloadは使わない方が良いんじゃないかという件に誤りがあった件を参照してください。スイマセン。
やり方としてはunloadを使う代わりに、removeChildを用いる。
で、子供の方でEvent.REMOVED_FROM_STAGEをlisten。
これをキーにしておけばネストしている子供に対しても一気にremove処理が適応できる。
で、それぞれの子供の中でTwennerやらEventListenerを掃除するprivateメソッド組んでおく。
(当然removeのメソッドの中ではEvent.REMOVED_FROM_STAGEもremoveする)
これで前にやったapeirophobia: Loader.removeChildと同じ検証をしてみた。
結果は以下のとおり。
Loader.removeChild
何故エラーになるか?
Error: Error #2069: Loader クラスは、このメソッドを実装しません。
at Error$/throwError()
at flash.display::Loader/removeChild()
DisplayObjectContainerを継承してるんじゃないのか??
ちゃうのか?
俺がまちがっとんのか?
あーあーあー。
あほう。
以下の検証には誤りがありました。
正確な検証結果はapeirophobia: 外部swfの削除はLoader.unloadは使わない方が良いんじゃないかという件に誤りがあった件を参照してください。スイマセン。
img8.debug.Debugger
先日エントリーしたDebuggerをちょっと変えました。
基本FPS計測はOFF。でFPS表示の前のボタンをクリックして計測開始、再度クリックで計測中断。ただこれによって一度増えたメモリ消費が下がるのか?はまだ完全に検証できていません・・。(もともとがあまりに微小な値なのでかなり長時間回して検証しないと良く分からん)あとはグラフの幅だとか、レコードする個数とかプロパティを設定できるように。(普通はさわらないだろうけど)
ちょいとデバッグ用に使用メモリとFPSを表示する”debugger”クラスなるものを作ってみた。
で、色々試していると、FPSを算出するためにEvent.ENTER_FRAMEをまわしているだけでメモリが4KBぐらいずつ浪費されているっぽい。Event.ENTER_FRAMEのhandlerに渡されるeventをnullにしてみたりしたのだけど変わらない。
メモリ変移を描画するために(ダブルクリックでグラフ表示)時間を取得しているのだけど、それの桁が増えるからその分のメモリが浪費されているのかと思ったのだけど、どーもそうではないらしい。(メモリのチェックはTimerで行っている。)Event.ENTER_FRAMEのhandler内でフレームカウントさせている変数を変化させず、中を空にしていても増加していく。(微々たる量だけど)で、Event.ENTER_FRAMEをaddしなければ使用メモリは増加しない。(つまりメモリーチェックの方の関数系では特にメモリーは増加していないということになるかと・・。)
これはクリアできないものなのでしょうか??
img8.Document
昨日から諸々うにゃうにゃやっていたものを晒してみます。
突っ込みどころ満載だと思いますが・・・汗
目的は
・stand aloneモードなのかcomplex mode?なのかで動作を切り分けたい(開発過程において)
・as2で言うところの_rootを取得したい。
・実行環境がサーバ(http or https)かローカルなのかを取得したい。
・DisplayObject以外でもstageを参照したい。
と言うところ。
使い方はDisplayObjectで、
といった感じで実行すると、そのDisplayObjectの含まれるswfが最上位である場合rootと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などが取得できるのが理想なんですが、うまくいかない・・・。出来そうな気だけしているのですが、実力が追いついていません・・。
getDefinitionByNameの罠
ちとプレビュー前でばたばたしているので走り書きだけど、たとえばプリロードみたいなやり方で、メインコンテンツを先に展開しつつ、後追いで優先度の低い埋め込みリンケージサウンドなんかを実体化させる場合、スクリプト内で”getDefinitionByName”を使って定義しちゃうと、実体化の前に定義できてしまう。(try,catchでも一応定義はされているということでスルーされてしまうっぽい、そもそも定義自体がされていない場合はReferenceErrorをcatchできます。)
生成されたサウンドクラスは値はnullにもならず、よく分からない空の状態で定義されてしまって、soundChannelとかsoundEventでエラーが連発して悲惨な状況になる。
なので実体化されているかどうか?の確認は
みたいな感じになるかと・・。
非常に厳密にエラー定義がされている割には、この手の抜けっぷりが非常にうっとおしいですな。実体化されているかどうか?もcatch出来るようにしてくれれば良いのに・・・。
もちっとローディングの分散の手法はAS3で的確な方法があるのかもしれないが、まだAS2との折衷みたいな段階で煮詰め切れていない。
今一つ使っている手法としては、でかいサウンド系は外部SWFファイル埋め込んでおいて、
の定義をしておいて、Event.COMPLETEの発動=実体化として認識してしまう形にすれば、getDefinitionByNameでReferenceErrorを取得することは可能(なはず)。
取り急ぎメモ。
間違っていたらゴメン。
loadBitmap
もういまさらAS3の初期の話なんて恥ずかしくて書くのもあれなのだけど、一応自分のために書いておく。
AS2ではリンケージを設定したライブラリ内のビットマップをloadBitmapでビットマップデータに割り当てることが出来た。ただAS3からloadBitmapは消滅している。(そもそもリンケージと言う概念が無い)
ではどーするのか?
簡単なのはMovieClip(sprite)を作って、その中に画像をおくのが簡単。
しかしまぁ画像分MovieClip作るのかよ?って話は面倒なので、ビットマップを直接参照するようにしてみる。

まずライブラリに入っている画像ファイルをリンケージさせる。
リンケージプロパティダイアログで「識別子」はdeadしている。
クラス名の部分にはそのままだと画像のファイル名が入る。(aaa.jpgとか)
で、基本クラスは”flash.display.BitmapData”。
一応aaa.jpgとかでも参照できるのだけど、他のクラスとバッティングする可能性もあるからなんか画像用のクラスを割り当てる名称に統一しておいた方がトラブルは無いかも。(注釈のHTMLタグってなんだ?)
ということで一応”photo1″というクラス名にしておくことにする。
で、このクラスファイルは特に明示的に生成する必要は無いので、そのままにしておく。
で、これをBitmapDataとして取得するには。
var bmp:BitmapData = new photo1(0, 0);
ってな感じ。
ここでBitmapDataのコンストラクタの引数width,heightは形式上0,0を指定。ここにはまった・・・。
わざわざリンケージした画像のサイズを書かないといけないのかと思って、そんなあほな話があるかぃ!と・・・。ただ指定しないと怒られるし・・・。ということで悪戦苦闘してしまった・・・。
0,0指定必須じゃなくてNullを許容しておいてくれ・・・・orz。
一応0,0を指定したとしても内部的に割り当てられた画像のサイズに追従してサイズが定義される。
あとはステージに表示させる際にはBitmapを定義してaddChild。
var _bm:Bitmap = new Bitmap(bmp);
this.addChild(_bm);
こんな感じかな?
本当はこれは検証のために外部読み込みの画像を内部において簡単にテストしようとおもってはじめたことなのだけど、なんか非常に面倒だった・・・。時間もったいない。
5年ぶりぐらいにPHPを触った。
相変わらずシンプルな言語でとても素敵だ。
BlogParts系の引数をJSだけで処理させようと思って
見たいに色々やってみたのだけど、やっぱ駄目でした。
>まひろちゃん
とりあえず引数を継承して動作するところまではできたのだけど、複数存在する場合などのIDの重複が回避できなかったでし・・・。やっぱPHPが確実でしたw
追記:2008/01/15 18:36Officeを家で発見したのでインストール。Creative Suiteもインストール完了。
ただしライセンスをアクティベートすると今仕事しているマシンが使えなくなりそうなので保留。
ということで次はFlashDevelopのインストール。前準備として
これらをインストールしてFlashDevelopをインストール。
ちょっとスクリプトではなく開発環境の件になるのですが、
FlashDevelopを使っている人はフォントを何に設定していますか?
私はVerdanaを使っているのですが、これだとFlashDevelopでは日本語が文字化けする。(SEPYは日本語は別で処理してくれていたのか、Verdanaと日本語の併用が可能だった)
ググって見るとMSゴシックとか使っている人が多いみたいなのですが、正直MSゴシックはしんどい。
SH G30-Mとか試してみたのだけど、やはり疲れる。(10pt以下なら見栄えもいいのだけど12ptとかだと文字バランスが厳しい)
で、今かろうじてOsaka等幅を設定して使っているのですが、これもちと疲れる。
やっぱ希望はVerdanaみたいなみっちりした日本語フォント。
プログラマの人とかでスクリプティングにはやっぱこのフォントだろ?!見たいなのがあったら教えて欲しいワン。
メイリオとかって楽だったりするのかな・・?
AS3でFlashVarsをJSONに変換して処理しようと思っていたのだけど、なんか上手くいかない。
JavaScriptの関数まで引数として引き渡されてしまう・・・。なんでだろー。なんでだろー。
こんな感じ。
Flash Develop3.0.0 β5
(※要Flex 2 SDK、.NET framework2以上、JDK(またはJRE)5.0か6.0はいらないかもしれない)
以前のバージョンに比べてかなり楽チンに設定できるようになった。
とりあえずFlex SDKだけインスコすればあとはもうほとんど設定無しで動く。
(フォントの変更はまだXML編集だけど、それ以外は結構設定画面でできる)
ちとAS3でのJSON周りのクラスを整理して作ろうと思い、as3corelibを叩き込む。JSON周りなんか色々増えていたけど、まぁボチボチ。
あと知らなかったのだけど、Alessandro Crugnola(SEPYの作者)がこっちでプラグインを作っている。もう長らくSEPYは更新されていないけど、もうこっちにシフトしていたんですな。ダウンロードはこちら(http://code.google.com/p/fdplugins/downloads/list)
ま、まだそんなバリバリ使いこなしていないのでこんなところ。
ref:del.icio.us / tozaki / flashDevelop
JSON EDITOR
使うのに便利だけど構築や編集が面倒なJSON。
なんか良いエディターがないものか?と思って色々探していますが、まだコレといったものが見つけられていません。
こんなところかなあ・・・。
JSON2XML Tree Viewer
http://www.eclipseplugincentral.com/Web_Links-index-req-viewlink-cid-1071.html
JSON Editor(AJAX、ブラウザ上で編集する)
http://braincast.nl/samples/jsoneditor/
まぁそもそもライブラリが充実しているので静的ファイルを仕様として作ること自体が無意味なのではないか?と思ったりもするのだけど・・・。(Excelでいいよな・・)
TIDE / http://www.tide4javascript.com/
これってすごそうだけど、まだキチンと把握してません。多分すごいはず。
フレームワーク内臓でこういうのが出来たらすげー楽そうだな。
AS3でも・・。