11.円柱側面の表現
求む!MCの読み込み方法

最初の頃に豪語(?)したように、FLASH MX2004(AS2)で作成したFLASH(右図)をAS3で動かす、というのを考えています。
これを実現しようとすると、当然たくさんの画像を取り込む必要があります。
例えば、MCの中にMCがあって、その中にさらにMCがある、という構成のMCがあるとすると、このMCを一度読み込めばOK、もちろん下のMCにもアクセスできる、というのなら簡単なのですが、現在の Flex 2 SDK の環境では実現できませんでした(実際はできるのかもしれませんが、わかりませんでした)。
結局、、、MCを一つ一つ読み込む、という原始的な方法でやることにしました。
め、めんどくさ、、、(-_-;)
なんて文句を言うくらいならCS3を買え、ということですね、我慢しましょ!
addChildの使い方
「円柱」の側面は12枚の長方形のMCを歪ませて配置することで描いてます。
表示する場合、これらの位置、形状以外にも重なりを調整するため、深度も考慮する必要があります。
ところで、、、AS3から画像の重なりを調整するswapDepthがなくなったんですよね。
addChildを使って、ディスプレイリストに入れることで同様のことができるんだとか。
なるほど、そのためのaddChildAtなんてのもあるんですね。
今までなら深度としてテキトウな数字にしてましたが、インデックスは0から順にしないとだめなんだそうです。うーん、これはちょっとめんどくさいかも(グチの多い奴だ、まったく)。
ところで、少し迷うのが、、、毎フレームごとにMCの「深度」が変わるような場合は、どのようにしたらいいんでしょう?
ちなみに上の画像のFLASHでは、毎フレームごとにMCの深度を調整、と同時に見えないMCは_visibleをFALSEにしています。
ここで思いつく2つの方法。
1)毎フレーム、全てのMCをリストから削除(removeChild)して、順に入れなおす(addChild)。
2)とりあえず、全てのMCをディスプレイリストに入れておいて、毎フレームaddChildAtで「深度」調整し、見えないMCはvisibleで隠す。
どちらが「真っ当な」書き方なのかわからないので、とりあえず実験してみました。
やっぱりサクサク軽く動く方がよろしいわけで。
実験してみた
単純にどのくらいのFPSが出てるのかな、というのを調べてみました。
| 設定したFPS | 方法1 | 方法2 |
|---|---|---|
| 24 | 22.7 | 22.6 |
| 50 | 49.5 | 49.6 |
| 80 | 81.7 | 81.7 |
| 100 | 96.9 | 97.2 |
- 300フレーム描いた場合のFPSを3回ずつ行った平均
- 毎フレーム、1度ずつ変化(実行結果の例を参照)
- Firefox 2
- Adobe提供の ac_runactivecontent.js を使用
- wmodeはopaqueに設定、背景は白
結局のところ、、、、
FPSで見る限り、どちらもたいして変わりませんでした。特にムービーは24FPSで作成してるんだし。
他に評価すべき項目があるのかもしれませんが、とりあえず現時点ではどちらでもいいことにしようっと。
参考までに、下のリンクは100FPS設定で方法2の場合です。
上のテストでのMCの数は12だったのですが、、、もっとMCの数が増えてから実験すればよかったかな。
まあともかく、これで、円柱の側面を描くことができました。\(^o^)/