DisplayObjectのheightプロパティの自動変更を防止する方法はありますか?私のswfファイルの高さは32ピクセルですが、コンテンツに合わせて自動的にサイズが変更されます。下のコードは、これを証明することができます。最初のフレームenemy.heightは32ですが、後で27.5になり、これがスクリプトを駄目にします。DisplayObjectの高さの変更を防止する
getRect()とgetBounds()はまったく同じものを返します。また、最初のフレームで正しい高さを示し、2番目のフレームではそれが変わる理由を最初から27.5に示す必要があることを知りたいと思います。
package {
import flash.display.Sprite;
import flash.events.Event;
public class Main extends Sprite {
private var enemy:Sprite;
[Embed(source = '../lib/enemy.swf')] private var swf:Class;
public function Main():void {
if (stage) init();
else addEventListener(Event.ADDED_TO_STAGE, init);
}
private function update(e:Event):void {
trace(enemy.height);
}
private function init(e:Event = null):void {
removeEventListener(Event.ADDED_TO_STAGE, init);
enemy = new swf();
addChild(enemy);
addEventListener(Event.ENTER_FRAME, update);
}
}
}
はい、これはうまくいくソリューションですが、ActionScript開発者がこのデフォルトの動作を停止できないというのは奇妙なことです。今はADDED_TO_STAGEを聞いて、高さを保存し、実際の高さに代わり、その高さに基づいて計算を行います。 – Veehmot
あなたがASを多用するほど、MovieClipのようなオールインワンのクラスはプログラマを念頭に置いて作成されたのではなく、Flashの純粋なアニメーション時代の遺物であることに気付くでしょう。 –
私はこの「ハッキー」とも呼ばず、サイズを維持するのが通常の習慣です。 – alxx