11.円柱側面の表現

求む!MCの読み込み方法

NO EXCEPTIONS

最初の頃に豪語(?)したように、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^)/

→12.円柱クラス1

10.Flash Tracerを使ってみる2←