やっとこさprogression4を触りだし、来週くらいには会社HPの実績に作ったprogression4のサイトがアップされるはず。。。触った感触としては3よりも全然早い! で、へなちょこFlasherの僕としてはタイムライン上にmcなどを置いて確認したり、各シーンからアクセスしたりもするんやけど、progression3のときCastDocument.root.instanceNameでアクセスしていたような気がするけどprogression4では使えない。。。んー?とちょっと詰まるも結論から言えば、MovieClip(CastDocument.root).instanceNameでアクセスできる。 そういや、parentを使うときも、parent.gotoAndPlay();でなく、MovieClip(parent).gotoAndPlay();とするなぁと納得。 ちなみに今回のは、PRMLLoaderを使って動的にシーンを作成して、各シーンは子swfをprogressionでなく普通のflaファイルで作成してみました。いつもprogression3でやっていたカタチがprogression4でもできたので、ひとまず上出来かなと。 LoadSWF関連はoshige先生の「さらにLoadSWF()が続く」を参考にさせていただきました。本当にいつもお世話になってます(__)。 あれprogression3のときって、_mc = MovieClip( MovieClip( CastDocument.root ).getChildByName( “instanceName” ) );でアクセスしていたような気もする。。。テストやモック以外ではタイムライン上のmcにアクセスすることがなくなっているのであやしめ。 >>2010.02.03追記 通常の場合は、MovieClip( CastDocument.root )でよいみたいやけど、SceneLoaderを使っている場合は、CastDocumentが変わるので、MovieClip(container)のほうが無難ぽい。
先週ですが、「Spark67 Deep Edge ActionScript Libraries」で勉強してきました。 とりあえずメモのまとめ。ちゅうかめちゃめちゃ丁寧なフォローアップメールが来たのでそこからも一部抜粋。さすがお金を払っているだけはある。セミナー聞くだけでも十分もとはとった感じやねんけど。。。 ■Session1:JavaScript なんて怖くねぇぜ!SWFWheel から紐解く Flasher のための JS の歩き方(HIGEさん) >>FlasherがJavaScriptを歩くために ・asとjsとのやりとり、、、 →navigateToURL:とりあえず手軽、ローカルでテストできる。 →ExternalInterface:色々使えるけど、セキュリティサンドボックスとの戦い。ローカルでは動かない。 →ExternalInterface.available:ExternalInterfaceがサポートされているかチェックするけど、セキュリティサンドボックスまでは加味しません。 →ExternalInterface.objectID:IEならobject属性、それ以外ならembedタグのname属性を返すが、objectタグであってもname属性を返してしまう。 ・ちなみにallowScriptAccessは、asからjsを呼ぶときの設定なので、jsからasには関係ない。 →jsで設定する。 ・Security.allowDomainがjsからasを呼ぶときの設定。Security.allowInsecureDomainでドメインを指定する。アスタリスクも使えるけど、全て許可しちゃうので注意。 →asで設定する。 ・無駄に徹夜しないために →id属性には”external~”を決め打ちする。 →動きが怪しい時は非同期処理にしてみる。(setTimeoutやsetInterval) >>SWFWheelから得たノウハウ ・ブラウザはどのobjectタグを見るか? →SafariやIEは外側のobjectタグ、Gecko系は内側のobjectタグ →つまりは、、、外側にはid, name、内側にはname属性。 ・JavaScriptを埋め込むと挙動が変わる →Gecko系のブラウザ保護機能が働く、XPCNativeWrapperなオブジェクトが出てくる。 ■Session2:BetweenAS3 にみるライブラリ設計と最適化(新藤さん) >>設計編 ・”小さなクラス” 重要 ・クラスの責務 (役割, 責任を負う範囲) をできるだけ絞る ・他のクラスもできるだけ知らなくて良いようにする ・良いライブラリは簡単に使える ・きちんとした名前をつける(何をするものかすぐ分かる/副作用が分かる/一般的な命名規則に沿っている/組み合わせで使うものが分かる/true を返すときが何を表すのか分かる (isPlaying, contains)) ・よい設計のために(コードを読む, デザインパターンを知っておく) >>最適化について ・必ず読んでおくGSkinner先生(http://gskinner.com/talks/) ・厳密に型指定することによりハッシュ検索がなくなる →具体的に言うと、 objA:MyClass; [...]