ジオメトリの例:マトリックス変換の表示オブジェクトへの適用Flash Player 9 以降、Adobe AIR 1.0 以降 DisplayObjectTransformer サンプルアプリケーションには、Matrix クラスを使用して表示オブジェクトを変換する、次のような機能がいくつか示されます。
このアプリケーションでは、マトリックス変換のパラメーターを次のように調整するためのインターフェイスが使用できます。 ![]() ユーザーが「変換」ボタンをクリックすると、アプリケーションにより適切な変換が適用されます。 ![]() 元の表示オブジェクトと、-45°回転し、50%拡大 / 縮小した表示オブジェクト このサンプルのアプリケーションのファイルを入手するには、www.adobe.com/go/learn_programmingAS3samples_flash_jp を参照してください。 DisplayObjectTransformer アプリケーションのファイルは、Samples/DisplayObjectTransformer フォルダーにあります。 このアプリケーションは次のファイルで構成されています。
MatrixTransformer クラスの定義MatrixTransformer クラスには、Matrix オブジェクトの図形変換を適用する静的メソッドが含まれます。 transform() メソッドtransform() メソッドには、次の各パラメーターが含まれます。
戻り値は、結果のマトリックスです。 transform() メソッドは、クラスの次の静的メソッドを呼び出します。
それぞれ、ソースマトリックスに変換を適用して返します。 skew() メソッドskew() メソッドは、マトリックスの b および c プロパティを調整して、マトリックスを傾斜します。オプションのパラメーター unit によって、傾斜角度の定義に使用する単位が決まります。必要に応じて、メソッドは angle 値をラジアンに変換します。 if (unit == "degrees")
{
angle = Math.PI * 2 * angle / 360;
}
if (unit == "gradients")
{
angle = Math.PI * 2 * angle / 100;
}
傾斜変換を適用するために、skewMatrix Matrix オブジェクトが作成され、調整されます。最初は、次のように、同一のマトリックスです。 var skewMatrix:Matrix = new Matrix(); skewSide パラメーターによって、傾斜を適用する側が決まります。「right」が設定されている場合、次のコードでマトリックスの b プロパティが設定されます。 skewMatrix.b = Math.tan(angle); それ以外の場合、次のように Matrix の c プロパティが調整され、下側が傾斜されます。 skewMatrix.c = Math.tan(angle); 次の例で示すように、2 つのマトリックスを連結することによって、結果の傾斜が既存のマトリックスに適用されます。 sourceMatrix.concat(skewMatrix); return sourceMatrix; scale () メソッド次の例では、縮尺率がパーセントで指定されている場合、まず scale() メソッドで縮尺率を調整してから、マトリックスオブジェクトの scale() メソッドを使用します。 if (percent)
{
xScale = xScale / 100;
yScale = yScale / 100;
}
sourceMatrix.scale(xScale, yScale);
return sourceMatrix;
アプリケーションからの MatrixTransformer.transform() メソッドの呼び出しアプリケーションには、ユーザーが変換パラメーターを指定するためのユーザーインターフェイスがあります。 パラメーターが指定されると、次のように、パラメーターの値と表示オブジェクトの transform プロパティの matrix プロパティを Matrix.transform() メソッドに渡します。 tempMatrix = MatrixTransformer.transform(tempMatrix,
xScaleSlider.value,
yScaleSlider.value,
dxSlider.value,
dySlider.value,
rotationSlider.value,
skewSlider.value,
skewSide );
次に、アプリケーションは戻り値を表示オブジェクトの transform プロパティの matrix プロパティに適用し、変換がトリガーされます。 img.content.transform.matrix = tempMatrix; |
|