AS3 のステージ上でムービークリップ オブジェクトの外部翻訳を防ぐにはどうすればよいですか?
-
21-09-2019 - |
質問
MovieClip オブジェクトがあります。これは、アクションスクリプト (AS3) 用に .swc ファイルにエクスポートされます。
クリップのインスタンスを何も変更せずにステージ上に配置すると、ステージの半分ほど離れた左上隅に表示されます。オブジェクトの右下の象限のみが表示されます)。これは、クリップに登録ポイントがあるためであると理解しています。 ない 左上隅。
ムービークリップで 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 です。
ムービークリップも明らかにそこに位置付けられていますが、なぜでしょうか?この追加の翻訳はどこから来たのでしょうか?
解決
私は、問題を解決したと信じています。
ステージが特定の寸法に設定されていない場合、ステージ上のアイテム(または私の場合、この特定のベクトルオブジェクト)の規模は、いくつかのプリセットスケール/寸法(私はその原点に相対的であると思われますわからない - 。それは、ステージの比率および寸法の影響を受けているようにいくつかのテストでそれが見えます)。
、でもあなたの場合(段階として)ムービークリップ内の行列結果の連結をいくつかのセットを介してスケールばかりとのは、同じ割合で換算値をスケーリング段階増加、のサイズを大きくします明示的にX / Y /幅/高さの値を設定します。
(注:ちょうど閉鎖及び再開放その新しいサイズでウィンドウを同じ動作を生成、ウィンドウのサイズ変更に動的サイズ変更しない)
私はこれが唯一のベクタオブジェクトで発生疑われる?
とにかく、修正は、明示的な幅と高さにステージを設定することです。そして、オブジェクトの変換とスケーリングは、アイデンティティの親マトリックスを使用するように表示され、あなたが期待するようにすべてが機能します。