ジオメトリの例:マトリックス変換の表示オブジェクトへの適用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; |
![]() |