ビットマップのインスタンスを動的に配置する
つぎに,
今回,
ひとつ注意しなければならないのは,
そこで,
var myBitmap:Bitmap = new Bitmap(new Image0(0, 0));
addChild(myBitmap);
このフレームアクションでひとつ注目してほしいのは,
もっとも,
前掲スクリプト1に修正を加えよう。[ライブラリ]のビットマップイメージを動的に配置して,
スクリプト2 動的に配置したビットマップイメージをマウスポインタの水平位置に応じて水平回転
// タイムライン: メイン
// [ライブラリ]のビットマップに[クラス]としてImage0を設定
var mySprite:Sprite = new Sprite(); // Spriteインスタンスを生成
var myBitmap:Bitmap = new Bitmap(new Image0(0, 0));
var nX:Number = stage.stageWidth / 2;
var nDeceleration:Number = 0.3;
mySprite.x = nX;
mySprite.y = stage.stageHeight / 2;
myBitmap.x = -myBitmap.width / 2; // Bitmapインスタンスの位置合わせ
myBitmap.y = -myBitmap.height / 2; // 親Spriteインスタンスの基準点が中心にくるように
addChild(mySprite);
mySprite.addChild(myBitmap); // Bitmapインスタンスは親Spriteインスタンスの入れ子にする
addEventListener(Event.ENTER_FRAME, xRotate);
function xRotate(eventObject:Event):void {
var nRotationY:Number = mySprite.rotationY + (mouseX - nX) * nDeceleration;
mySprite.rotationY = xGetDegrees(nRotationY);
}
function xGetDegrees(nDegrees:Number):Number {
nDegrees += 180;
nDegrees %= 360;
nDegrees += 360;
nDegrees %= 360;
nDegrees -= 180;
return nDegrees;
}
最初のステートメントで,
これで,
- ※2
- 「[ライブラリ]のビットマップに自動設定したクラスに渡す引数」
参照。 - ※3
- なお,
BitmapDataクラスには位置座標のプロパティはない (前述のとおり, DisplayObjectクラスを継承しないので)。よって, ビットマップイメージをBitmapインスタンスの中で位置合わせすることはできない。
今回解説した次のサンプルファイルがダウンロードできます。
- スクリプト1および2サンプルファイル
(CS4形式/ 約16KB)