雨と風と快晴と 2.0

個人の勉強とPCライフに役立つツールをめざすブログ。
個人としてはWebクリエイターとして活躍中(?)。

ActionScript3.0 1つのSWFでローディング

2010年04月25日 | プログラミング

ローディング処理で悩んでいたが、やっと解決。

AS2の時は普通に1フレーム目(シーン1とか)にローディングのスクリプトを書いて、gotoAndStop(2)で2フレーム目に飛ばす方法で1つのFlash内でローディングを行っていた。タイムラインベースで処理をしていたからできた技。

しかし、AS3を始めてからはクラス定義をして.asファイルで何でもやろうとしているため、ローディングはプリローダswfを用意して読み込ませる方法や、自分自身をローダーと最小限のコンテンツに抑え、別途外部のSWFや画像を子としてロードしてやる方法で対応していた。

で、どうしてもちょっと重めのコンテンツを1つのSWFで実装しなければならなかったため、悩んだ末、ある方法を思いついた。


まずは、Flash自体のドキュメントクラス定義はここでは設定しない。
そして、1フレーム目にローディングのスクリプトを書いてしまう。
ローディングが完了したらgotoAndStop(2) で2フレーム目に。(ここはAS2の時と一緒)


this.stop();
var info : LoaderInfo = root.loaderInfo;
info.addEventListener(ProgressEvent.PROGRESS, updateLoadingBar);
info.addEventListener(Event.COMPLETE, displayContent);

function updateLoadingBar(event){
  // ローディングバーを動かす処理
}

function displayContent(event){
  this.gotoAndStop(2);
}



続いて、2フレーム目にはコンテンツを配置。この時、ばらばらに配置するのではなく、すべてのコンテンツをMovieClipとしてラップし、リンケージのクラスで、Flash自体に定義する予定だったクラスを割り当てる。
重要なのは「1フレーム目に書き出し」のチェックを外すこと。これをしないと、文字通り1フレーム目に書き出されるため、ローディングバーの表示タイミングが遅れ、表示と同時にローディング終了という意味のない結果に・・・。



あとは通常通りにasファイルにスクリプトを記述するだけでよい。
他のクラスの読み込みなども、多分、問題ないはず。

っていうか、良く見たらAS2の時とやり方としては同じだった。
だとすると、みんな当たり前にこの方法でやっているってこと?実は今さらな感じかも。

書いていて気付いたが、1フレーム目のローディング中のスクリプトも、別にFlash内に書かなくてもFlash自体のドキュメントクラス定義のas(コンテンツとは別のas)に記述しても良いかも。全てasで管理した方が分かりやすいかな?後でやってみよう。


ガンダムカフェ?ヤバいでしょう?

2010年04月14日 | ひとまず。
秋葉原にガンダムカフェなるものが4/24(土)にオープンするらしい。

ファーストガンダムの地球連邦軍の基地「ジャブロー」にちなんで南米産のコーヒー豆を使った「ジャブローコーヒー」というのが飲めるそうだ。

サイトを見た感じだと、連邦軍の軍服を着たウェイトレスがいるようなので、そういう趣味の人も楽しめるだろう。

初日はマニアが行列を作ること間違いなし。

夕方からはバーになるようなので、ガンダムを肴に楽しいひと時を送れそうだ。

とはいえ、自分はいかないかな。

http://g-cafe.jp/

BSが見れなくなった・・・

2010年04月02日 | いつもの生活から
最近、WOWOWの映像がかなり悪くなっていて、何が原因なのかと思っていた。
というより、とうとう映らなくなった・・・。
アンテナ経由の他のBSのチャンネルも見ることができない。でもCSはかろうじて受信できる。なぜだ・・・。
いくら強風だからと言って、アンテナの向きが変わるわけがないしなぁ。

で、色々と見てみてやっと理由が分かった。


原因はパラボラアンテナから室内手前に伸びている同軸ケーブルが錆びて、断線寸前だったこと。(触ったらポロッと取れたけど)
コネクタ部分にしっかりゴムキャップはしてあったのだが、ケーブルの角度が悪く雨水が入り錆びてしまったようだ。

まったく誰のせいだよ。

これからケーブルだけ買ってきて付け替えるのだが、アンテナの先に手が届くかな・・・。全部取り外すのは面倒だよ(泣)

今度はビニールテープでしっかりとめておくとするか。