0

バージョン 10 以降の flashplayer で使用できる rotationX/Y/Z プロパティをいじっています。テスト目的で、立方体を作成し、その 3 つの側面 (上、前、下) にキャンバス オブジェクトを配置し、トゥイーンを作成して値を取得しました。 90 度チューリングに必要です。3 つのサイド キャンバス オブジェクトが小さく、それほど複雑でない要素階層で満たされている場合、rotationX = xx を使用して立方体 (キャンバス) を回転させることはうまく機能します。より大きく複雑なコンテンツを使用すると、速度が低下します。次のアイデアは、キャンバス要素のコンテンツを削除し、代わりにコンテンツのスナップショット画像に置き換えることでした。ターンを開始する前に、ターンが実行された後、元のコンテンツが再び側面に戻されます。これにより、パフォーマンスが大幅に向上します。トゥイーンを使用すると、ローテーションの最後のステップは tweenEnd ハンドラーとして呼び出される関数で行われます。この関数では、キャンバスのコンテンツをコピーして戻すプロセスも実行されます。残念ながら、これにより、最後の回転ステップで立方体が短時間ハングします。その理由は、回転と元のコピーが同時に行われるためです。だから私は電話した後、しばらく待つことができましたcube.rotationX = endValueタイマーまたはを使用しsetTimeout(func, 500)ますが、これは醜いです。私の質問は次のとおりです。cube.rotationX = endValue一定期間呼び出した後、ローテーションのデータを計算し、ローテーション自体を実行する必要があります。ローテーションが終了した時点を見つけて、コピーを開始できるようにする方法はありますか?

事前にありがとうタイラー

4

2 に答える 2

0

ローテーションが完了したときにディスパッチされるデフォルトのイベントはありません。しかし、callLater() 関数を使用してコンテンツをコピーすることを考えています。それを試してみてください。

于 2011-02-02T22:06:02.030 に答える
0

まさにその点で、回転の終了を示すイベントはありません。callLater()使用する代わりに使用するソリューションsetTimeout()は改善のように見えますが、一定の時間を待つことは常に「マシン x で動作することを期待する」ことになるためです。ヒントをありがとうございました!

挨拶

タイラー

于 2011-02-03T13:47:53.490 に答える