サイトトップ

Director Flash 書籍 業務内容 プロフィール

Adobe Flash非公式テクニカルノート

DisplayObject.rotationX/rotationY/rotationZプロパティ

ID: FN0911001 Platform: All Version: CS4/ActionScript 3.0 Runtime: Flash Player 10/AIR 1.5

DisplayObjectクラス
パッケージ flash.display
継承 DisplayObject → EventDispatcher → Object
rotationX/rotationY/rotationZプロパティ
文法 rotationX:Number
rotationY:Number
rotationZ:Number
プロパティ値 DisplayObjectインスタンスのデフォルト状態からのxyz各軸に対する回転角を、親(DisplayObjectContainer)インスタンスの座標空間における度数で示す。
実装

public function get rotationX():Number
public function set rotationX(value:Number):void

public function get rotationY():Number
public function set rotationY(value:Number):void

public function get rotationZ():Number
public function set rotationZ(value:Number):void

説明
DisplayObjectインスタンスのデフォルト状態からのxyz各軸に対する回転角を、親(DisplayObjectContainer)インスタンスの座標空間において度数で示します。回転の向きは、各軸の正方向に対して時計回りに定められます。角度の値は±180の範囲を基本とします[*1]。つまり、各軸の正の向きに対して、時計回りがプラス、反時計回りはマイナスの角度となります。

[*1] プロパティ値について、[ヘルプ]は値が±180の範囲だと述べ、続けてつぎのように説明します。

この範囲を超える値は、360を加算または減算して、範囲内に収まる値になるように調整されます。

ところが実際には、範囲を超える値も設定できてしまいます。そのため、たとえば回転角を単純に増やしていくような処理では、正しく扱えない数値にまで達してしまうおそれがあります。ですから、プロパティに設定する値は、予め適切な範囲に収めておいた方がよいでしょう。角度の値の範囲を制限する処理については、「角度の値を換算して一定範囲に収める」をご参照ください。

ただし、内部的な角度は、xおよびz軸回りが±180度、y軸回りは±90度で扱われているようです。詳しくは、「インスタンスのy軸における回転角の値の範囲」をお読みください。

なお、DisplayObject.rotationプロパティの値は、±180の範囲の角度に換算されて設定されます。


以下のフレームアクション(スクリプト001)は、タイムラインに配置したMovieClipインスタンスmy_mcを、毎フレーム10度ずつx軸回りに垂直に回転させます。また、コメントアウトされたステートメントを有効にすると、y軸やz軸回りでインスタンスを回転させることができます。なお、角度を一定範囲に収める処理は加えていませんので、trace()関数で出力される角度の値は、制限なく増えていきます(前出注[*1]参照)。

スクリプト001■MovieClipインスタンスをx軸(またはy軸やz軸)回りに回転させる

// フレームアクション
// タイムラインにMovieClipインスタンスmy_mcを配置
var nDegree:Number = 10;
addEventListener(Event.ENTER_FRAME, xRotate);
function xRotate(eventObject:Event):void {
  my_mc.rotationX += nDegree;
  // my_mc.rotationY += nDegree;
  // my_mc.rotationZ += nDegree;
  trace(my_mc.rotationY);// 確認用
}

つぎのフレームアクション(スクリプト002)は、タイムラインに配置したMovieClipインスタンスmy_mcを、インスタンスの基準点から見たマウスポインタの水平位置に応じてy軸回りに水平回転させます(図001)。

スクリプト002■インスタンスをマウスポインタの水平位置に応じて水平に回転させる

// フレームアクション
// タイムラインにMovieClipインスタンスmy_mcを配置
var nX:Number = my_mc.x;
var nDeceleration:Number = 0.3;
addEventListener(Event.ENTER_FRAME, xRotate);
function xRotate(eventObject:Event):void {
  var nRotationY:Number = (mouseX - nX) * nDeceleration;
  my_mc.rotationY += nRotationY;
}


001■インスタンスの基準点から見たマウスポインタの水平位置に応じてインスタンスが水平回転する

参考
[ActionScript 3.0言語およびコンポーネントリファレンス] > [DisplayObject]「rotationXプロパティ」「rotationYプロパティ」「rotationZプロパティ


作成者: 野中文雄
更新日: 2010年8月25日 注[*1]に「インスタンスのy軸における回転角の値の範囲」の引用と解説を追加。
作成日: 2009年11月30日


Copyright © 2001-2009 Fumio Nonaka.  All rights reserved.