1

actionscript (AS3) 用に .swc ファイルにエクスポートされた MovieClip オブジェクトがあります。

クリップのインスタンスを変更せずにステージに配置すると、ステージの約半分の左上隅に表示されます (つまり、オブジェクトの右下の象限だけが表示されます)。これは、クリップの登録点が左上隅ではないためだと理解しています。

ムービークリップで getBounds() を呼び出すと、クリップの境界を取得できます (おそらく、整列されている「ポイント」から)。これは、(左: -303、上: -100、右: 303、下: 100)、クリップ x と y から左と上の値を差し引くことができます。

clip.x -= bounds.left;
clip.y -= bounds.top;

これにより、クリップがステージ上で完全に整列し、クリップの左上がステージの隅に直角に配置されているように見えます。

しかし!そのロジックに従うと、ステージの中央に配置するときに機能しないようです。

clip.x = (stage.stageWidth / 2);
etc...

これにより、クリップがステージの右下隅にあるクレイジーなパラレル ユニバースが作成されます。

私が持っている唯一の手がかりは、以下を見ていることです:

clip.transform.matrix

clip.transform.concatenatedMatrix
  • マトリックスの tx 値は 748 (ステージの高さの半分) ty 値は 426 (ステージの高さの半分)

  • concatenatedMatrix の tx 値は 1699.5、ty 値は 967.75 です。

それは明らかにムービークリップが配置される場所でもありますが、なぜでしょうか? この追加の翻訳はどこから来たのですか?

4

1 に答える 1

1

私は問題を解決したと信じています。

ステージが特定の寸法に設定されていない場合、ステージ上のアイテム(または私の場合はこの特定のベクトルオブジェクト)のスケールは、いくつかの事前設定されたスケール/寸法(起源はわかりません- -いくつかのテストでは、ステージの比率と寸法の影響を受けているように見えます)。

ステージのサイズを大きくすると、そのスケーリング値が大きくなります。これにより、行列の連結のセットによって、x / y / width / heightを明示的に設定した場合でも、ムービークリップが(ステージと)同じパーセンテージでスケーリングおよび変換されます。値。

(注:動的にサイズを変更するだけではありません。ウィンドウのサイズを変更し、その新しいサイズでウィンドウを閉じてから再度開くと、同じ動作が発生します)

これはベクトルオブジェクトでのみ発生すると思いますか?

とにかく、修正はステージを明示的な幅と高さに設定することです。次に、オブジェクトの変換とスケーリングはID親マトリックスを使用しているように見え、すべてが期待どおりに機能します。

于 2010-03-19T20:47:11.680 に答える