技術評論社より発売された拙著
アニメーションの重さを測るふたつの物差し
アニメーションが重いとか軽いとかいわれるとき,
ベクターグラフィックスが軽いといわれるのは,
他方,
- ベクターグラフィックス
- 数学的なデータ→容量は小さい
- ビットマップに変換
(ラスタライズ) して描画→CPU負荷が高い
- ビットマップグラフィックス
- ピクセルごとのデータ→容量は大きい
- ピクセルをスクリーンに映す→CPU負荷が低い
とくにPCの環境では,
平行移動のアニメーションではDisplayObject.cacheAsBitmapプロパティをtrueにする
まずは,
メインタイムラインに書くフレームアクションは,
つぎに,
スクリプト1 数多くのインスタンスを上から下にスクロールさせる
// フレームアクション: メインタイムライン
var nStageHeight:int = stage.stageHeight;
var nCount:uint = 500;
var instances:Vector.<MovieClip> = new Vector.<MovieClip>(nCount);
for (var j:uint = 0; j < nCount; j++) {
var _mc:MovieClip = new MyClass();
instances[j] = _mc;
addChild(_mc);
_mc.x = Math.random() * stage.stageWidth;
_mc.y = Math.random() * stage.stageHeight;
}
addEventListener(Event.ENTER_FRAME, xMove);
function xMove(eventObject:Event):void {
for (var i:uint = 0; i < nCount; i++) {
var instance:MovieClip = instances[i];
instance.y += 5;
if (instance.y > nStageHeight) {
instance.y -= nStageHeight;
}
}
}
アニメーションの速さを確かめるので,
[ムービープレビュー]
アニメーションするインスタンスは,
以下のスクリプト2では,
スクリプト2 インスタンスDisplayObject.
// フレームアクション: メインタイムライン
var nStageHeight:int = stage.stageHeight;
var nCount:uint = 500;
var instances:Vector.<MovieClip> = new Vector.<MovieClip>(nCount);
for (var j:uint = 0; j < nCount; j++) {
var _mc:MovieClip = new MyClass();
instances[j] = _mc;
addChild(_mc);
_mc.x = Math.random() * stage.stageWidth;
_mc.y = Math.random() * stage.stageHeight;
_mc.cacheAsBitmap = true;
}
addEventListener(Event.ENTER_FRAME, xMove);
function xMove(eventObject:Event):void {
for (var i:uint = 0; i < nCount; i++) {
var instance:MovieClip = instances[i];
instance.y += 5;
if (instance.y > nStageHeight) {
instance.y -= nStageHeight;
}
}
}