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

3次元空間の角度のプロパティ値を使うときの注意点

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

ぜひご覧ください。

無料で視聴する すべての加入プランを見る
または
3次元空間の角度のプロパティ値は、一定の範囲に収めておく方が安心です。
講師:
08:40

字幕

DisplayObject クラスの 回転のプロパティについて 注意点とその対処方法をご説明します それに先立って Adobe のサイトのヘルプで リファレンスを確認してみましょう Adobe のサイトは いわゆるレスポンシブな デザインになっていますので ナビゲーションのインターフェースは 画面サイズによって若干変わります 選ぶのはサポートです そして製品ごとの ヘルプがあるんですけれども 下にスクロールしていきます Flash Player ではありません Flash のアプリケーションですので ご注意ください Flash です そして今回は プロパティについて調べてみますので その時にはリファレンスです ActionScript 3 リファレンスガイドを選びます そしてクラス DisplayObject というクラスを調べたいので クラスを選択です そうしますと左の方に クイック検索という欄があります ABC 順になっていますけれども 結構長くなっていますから ここを使った方が良いでしょう DisplayObject ですので Display ぐらいまで入れると DisplayObject が出てきました 選択します そして調べたいのは 回転のプロパティです 3 次元の回転のプロパティですから rotationX rotationY rotationZ ですね 代表して rotationY 水平回転のプロパティを見てみます クリックです 説明を読みますと rotationY は 0 から始まって時計回りが 0 から 180 で指定します 今度は 0 から反時計回りの場合には -180 までの範囲の値を設定します この範囲を超える値は 360 を加算または減算して 範囲内に収まるように つまり ±180 の間になる様に 調整されますと書いてあります ところが実際には調整されません 実際のムービーで確かめてみましょう ではブラウザは閉じてしまいましょう サンプルの Flash ムービーファイル fla ファイルが開いてあります 動きを予め ムービープレビューで確かめます マウスポインタの中心からの 離れ方 方向によって 3 次元で インスタンスが回転します この時 rotationY の プロパティを使っています では swf を閉じて スクリプトを確認してみましょう メインタイムラインに フレームアクションが書かれていますので キーフレーム スクリプトの書いてあるフレームを 右クリックしてアクションパネルを開きます これがインタラクティブな アニメーションを定めた フレームアクションです 先ず EventListener の登録 addEventListener で イベントはアニメーションでは ENTER_FRAME が乗積です そこに Listener 関数を登録します これが Listener 関数です マウスポインタと これはインスタンスの x 座標を 変数に取っているんですが インスタンスの中心に 基準点がありますので 結構ステージの中心から と同じ意味になりますが 差を取ってあげます そのピクセルに比例する係数 0.2 を掛けて 回転する角度を求めてみます その角度をインスタンス インスタンス名は my_mc という名前が付けてあるんですが その rotationY に足し込むことによって 回転するということです 回転角が実際に どんな値になっているか調べたいので トレース関数を加えましょう trace 見たいのは この回転角ですね my_mc.rotationY の プロパティの値はどうなっているか コントロールキーまたは コマンドキーを押しながらドラッグすると コピーになります ムービープレビューで確かめてみましょう 制御メニューからムービープレビューです インスタンスが マウスポインタの位置によって 座標が - になったり + になったりしていますね では極端にもう + でいきましょう 端っこの方に置きます 数字が下の方へ行ってしまって 見えないので一旦消去しましょうか 全然 360 よりも大きくなっていますね 5000 また消去しましょうか いつまででも大きくなりそうですね これはまずいです では swf を閉じましょう 出力パネルはタイムラインに 切り替えましょう 数学的には 角度がいくら大きくなろうが 或いはマイナスになろうが関係ありません けれどもコンピューターの場合には 扱える数値の数値の 桁数には上限があります その上限を超えることは なかなかないでしょうけれども 超えないと言い切ることもできません ですから 一定の範囲に収めることが必要です すると変数の nRotationY の値を いきなりプロパティに加えてしまう ということは避けなければなりません ですから変数の方に プロパティの値を加えて 変数の方に先ず持っておきます コピーをしますので コントロール若しくはコマンドドラッグです こちらにプロパティの値を足し込みます これもコピーしましょう ドラッグしながら コントロール若しくはコマンドです そして今度はこの nRotationY の値を 360 の範囲に収めたいと思います またコピーを持ってきます コントロール若しくはコマンドドラッグ さて ここで使うのが剰余 割った余りを求める演算子です % が その記号なんですけれども 割った余り何で割った余りかというと 今回は 360 と入れます そうすると 360 で割った余りが 変数に改めて入ります どういうことかと言うと 360 は OK なんですが 360 の場合は余り 0 ですね 359 までは OK で 360 になると 0 に戻ってしまいます 123 と どんどん増えていきます マイナスも同様です これで 360 を超えることは なくなりましたので この変数の値を 今度は足し込んではいけませんね この変数の値が最終的な角度ですので = です トレース関数は まだ残っていますので ムービープレビューで確かめてみましょう 制御メニューからムービープレビューです 先ず + 方向ですね たまに消去します 360 を超えませんね マイナスに行ってみましょう 消去です マイナスまでは行かないですね そろそろ どうでしょうか 行きました 351 を超えたら 5 に戻っていますね これで無事 ±360 度の中に 収まったということです ではタイムラインに切り替えます 因みに 3 次元の rotationX rotationY rotationZ でなく 2 次元の rotation であれば これはちゃんと ±180 の範囲に収まる様に プロパティ値が修正されます ですから 3 次元の回転を使う場合の 問題ということになります それでは 3 次元の 回転のプロパティを使った場合の 注意とその対処方法についてまとめます rotationX rotationY rotationZ というのが 各軸周りの 3 次元の回転を表す プロパティなんですけれども 回転角はヘルプには ±180 の範囲という様に書いてあるんですが 実際にはどんどん大きく 或いは小さくなってしまいます それに対応するには どうしたら良いかと言うと 先ず変数の方に 設定したい値を 360 よりも大きくても どんどん設定を先ず入れてしまいます その後 360 の剰余を求めてあげれば 360 を超えた分については また 360 から 0 1 2 という風に戻りますので 360 ±360 の範囲内に 収まるということです

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

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

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

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

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

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