私は _background:MovieClip (本のページを表す) の中心について拡大縮小と回転操作を実行している Flash アプリを持っています。この MC の GESTURE_ROTATE および GESTURE_SCALE イベントに単純なイベント リスナーがあり、いくつかの変数 currentRotation および currentScaleX、currentScaleY を更新します。次に、アプリの ENTER_FRAME イベントで次のコードをトリガーします。
私が遭遇している問題は、MC を約 60 度または -60 度の制限を超えて回転させるか、わずかにスケーリングして回転させると、MC が振動し始め、最終的に制御不能になり、画面から外れて激しく回転することです。私はそれをデバッグするためにいくつかのことを試しました.Math.flooring currentRotationValueとcurrentScaleX / Yの値を10分の1に丸めることさえ試みました(Math.floor(currentScale * 10)/ 10)が、これらのどちらも解決しないようですそれ。この時点で少し立ち往生しており、できる限り調査を試みましたが、何も見つかりませんでした。助言がありますか?おそらく各フレームでこの操作を行うことに問題はありますか?
private function renderPage(e:Event) {
var matrix:Matrix = new Matrix();
// Get dimension of current rectangle.
var rect:Rectangle = _background.getBounds(_background.parent);
// Calculate the center.
var centerX = rect.left + (rect.width/2);
var centerY = rect.top + (rect.height/2);
// Translating to the desired reference point.
matrix.translate(-centerX, -centerY);
matrix.rotate(currentRotation / 180) * Math.PI);
matrix.scale(currentScaleX, currentScaleY);
matrix.translate(centerX, centerY);
_background.transform.matrix = matrix;
}