コードの実行を高速化するには、描画 API を使用してください。
Flash Player 10 および AIR 1.5 には新しい描画 API が用意されており、コード実行パフォーマンスを改善することができます。この新しい API でレンダリングパフォーマンスは向上しませんが、記述が必要なコードの行数を大幅に削減できます。コードの行数が少ないと、ActionScript の実行パフォーマンスが向上します。
新しい描画 API には、次のメソッドが含まれています。
-
drawPath()
-
drawGraphicsData()
-
drawTriangles()
注意:
この章では、3D 関連のメソッドである
drawTriangles()
については扱いません。ただし、このメソッドはネイティブのテクスチャマッピングを処理するので、ActionScript のパフォーマンスを向上させることができます。
次のコードは、描画する線ごとに適切なメソッドを明示的に呼び出します。
var container:Shape = new Shape();
container.graphics.beginFill(0x442299);
var coords:Vector.<Number> = Vector.<Number>([132, 20, 46, 254, 244, 100, 20, 98, 218, 254]);
container.graphics.moveTo ( coords[0], coords[1] );
container.graphics.lineTo ( coords[2], coords[3] );
container.graphics.lineTo ( coords[4], coords[5] );
container.graphics.lineTo ( coords[6], coords[7] );
container.graphics.lineTo ( coords[8], coords[9] );
addChild( container );
次のコードは、上述の例よりも実行コードの行数が少ないので、処理が高速化されます。パスが複雑化するに従って、
drawPath()
メソッドを使用することによって得られるパフォーマンスの向上効果が高くなります。
var container:Shape = new Shape();
container.graphics.beginFill(0x442299);
var commands:Vector.<int> = Vector.<int>([1,2,2,2,2]);
var coords:Vector.<Number> = Vector.<Number>([132, 20, 46, 254, 244, 100, 20, 98, 218, 254]);
container.graphics.drawPath(commands, coords);
addChild( container );
drawGraphicsData()
メソッドでも、同様のパフォーマンス向上を実現できます。