ActionScript 3.0による3次元表現の基礎

インスタンスの重ね順を決める

全333コースを10日間無料で

ぜひご覧ください。

無料で視聴する すべての加入プランを見る
または
インスタンスの重ね順を、どのようにして決めればよいか考えます。
講師:
06:46

字幕

Flash で 3 次元で オブジェクトを扱う時に 気を付けなければいけないこととして オブジェクトの重ね順があります Flash Player は 3 次元を 扱うことができるようになりましたので z 軸 つまり奥行きによって 遠近法が与えられます けれども その見た目は変わるんですが 重ね順については Flash Player が元々持っている 仕様がそのまま適用されるため 奥に行ったものを奥に置く 手前に来たものを手前に出す という重ね順の処理は プログラマーが 自分でやらなければいけません ここでは実際にスクリプトを書く前に どう考えたら良いかということについて ご説明します では swf は閉じましょう この Flash ムービーファイルの ライブラリには ビットマップが 2 つあります それぞれにクラス名を付けてあります これらをインスタンスを作って スクリプトでダイナミックに ステージに表示しているんです 具体的には先ず 入れ物となる Sprite インスタンスを作って それをメインタイムラインの 子どもとして加えています この中にビットマップを 加えようということです 先ず 1 つ目の ライブラリのビットマップ カタカナのビットマップですけれども そのインスタンスを作ったら 英語の Bitmap Bitmap クラスのオブジェクトの中に new 演算子コンストラクタで 引数に渡します これで先ず 1 つのインスタンスが 出来上がります もう 1 つのインスタンスの イメージを同じように作って それぞれを Sprite メインタイムラインに加えた Sprite の子どもとして つまり英語ですね Sprite の中に Bitmap があるという形で 1 つ目を加え 2 つ目を加えています この時 重ね順というのは 後から加えたものが必ず 手前に来るというのが Flash の仕様です ですから重ね順を変えるには この順番を変えてあげる必要があります その変えるスクリプトは ちょっと置いておいて どうやって前後を判断したら良いかと そのことについて考えましょう これは Sprite インスタンスと その中に入れたビットマップの オブジェクトを上から見た図です 上から見ると 2 つのビットマップは 下駄の歯のように 前後に並んでいます Sprite は勿論透明なんですけれども ここは丸で表示しました ですから z 軸が前後ですね 上から見ています そして x 軸が左右 y 軸は勿論この点です そして始めは全面が手前に 後面が後ろ側に 当たり前ですね という風になっています そしてこの時の Sprite の回転角 rotationY は 0 度です Sprite を反時計回りに 90 度 つまり−90 度した場合と 時計回りに 90 度した場合を 図に 2 つ書いてみました この間は全面が手前でいいんですよね ですからrotationYの値 Sprite の rotationY の値が −90 以上 90 以下までは 全面を手前にしておけばいい訳です そうすると それよりも もっと回転してしまった場合 つまり −90 よりも 小さくなった場合 つまり −120 とかになった場合ですね その場合は 今度は後面が手前になります また時計回りで 90 より大きくなった場合 120 度になった場合 また ここも後面が手前に来ます ですから 90 と −90 で 区切れば良いということですね ただ 気を付けなければいけないのは −180 より超えてしまったとか +180 よりも超えてしまったという場合は また前後関係が変わります ですからこの考え方は rotationY の角度の値が ±180 度の範囲に入っているということが 前提になります では もう 1 つ重ね順を入れ替えるための メソッドとプロパティについても 触れておきましょう Sprite インスタンスの中に入れた 子どもの DisplayObject インスタンスの 重ね順を変えるには setChildIndex というメソッドを使います 親の Sprite に対して setChildIndex というメソッドを呼び出し 引数として どのオブジェクト どの子オブジェクト 今回具体的には ビットマップのオブジェクトですけれども それを指定して 番号を第 2 引数に渡します この番号というのは重ね順が 0 からスタートして 連番が付けられていますので その子オブジェクトの連番を 幾つにしなさいという風にしてあげると その位置に入ります 次に親オブジェクトの中に DisplayObject インスタンスが 全部でいくつ要るのかと 何人の子どもがいるのか というのを調べるのが numChildrenというプロパティです これはインスタンスの数ですから 一番手前のインスタンスの番号は この numChildren -1 になります というのは連番は 0 からスタートします numChildren は インスタンスの数ですから 最後の人の番号というのが 数よりも1 少ないということで ここにちょっと気を付けてください では Sprite インスタンスの中に 下駄の歯のように 平行に入れたオブジェクトの 前後の決め方についてまとめましょう 先ず Sprite インスタンスの中に 2 つのオブジェクトが入っています インスタンスを Sprite ごと回しますから 角度で前後関係を決めることができます つまり Sprite インスタンスの rotationY のプロパティが −90 から 90 の間の場合は 全面がそのまま手前です それを超えた場合 つまり −90 よりも小さくなった場合 或いは 90 よりも大きくなった場合には 後ろの面が手前に出てくることになります 但し この前提として rotationY の角度が ±180 度に収まっていることが必要です もう 1 つ 重ね順を変える時に使う メソッドとプロパティです 先ず 重ね順を変えるには 親オブジェクトに対して setChildIndex というメソッドを呼び出します 引数は重ね順を変えるオブジェクトと 0 から始まる連番の中の 何番目にするのかというインデックスです 次に親オブジェクトの中に 子オブジェクトが幾つかあるかと 何人の子どもがいるかというのを 調べるのが numChildren です 但し一番手前のインスタンスの インデックスは numChildren 数よりも 1 少ないということに 注意してください

ActionScript 3.0による3次元表現の基礎

このコースではActionScript 3.0の基礎を学んだ人を対象に、3次元空間を使ったオブジェクトの動かし方について学習します。ActionScript 3.0の3次元を扱うクラスの扱い方を説明するとともに、その基礎となる数学や物理の考え方についても解説します。

3時間53分 (29 ビデオ)
現在、カスタマーレビューはありません…
 

このコースは、「オンデマンド」でご利用可能であり、ダウンロードすることもオンラインで見ることもできます。

ダウンロードすると、オフラインでコースを使用し、豊富なインターフェースをフルに活用できます。複数のデバイスを使用したり、 一度に全コースをダウンロードしたくない場合は、アカントにログインして、ストリーミング・ビデオとしてコースのレッスンを視聴してください。

ビデオトレーニングをお楽しみいただけますように! お問い合わせは、cs-jp@lynda.com宛までご連絡ください。