レーザー兵器発射体(レーザービーム自体のインスタンス)のコードを適用すると、レーザーを実際のものと同様に動作させることができました。 x軸だけでなく、y軸とx軸の伸びを保ちました。今、scaleModeのようなものを無効にする必要があることがわかりましたが、私が見つけた最高のものは "stage.scaleMode = StageScaleMode.NO_SCALE;"のようなコード行ですインスタンスそのものと、レーザービームのクラスコード内のADDEDイベントにこのようなものを適用しようとするとエラー1120が発生します。軸の1つを伸ばすときに、インスタンスに対して他の軸の自動ストレッチを停止するにはどうすればよいですか?
package
{
import flash.display.MovieClip;
import flash.events.*;
public class weapon3projectileCode extends MovieClip
{
private var _root:Object;
public function weapon3projectileCode()
{
addEventListener(Event.ADDED, beginClass);
}
private function beginClass(event:Event):void
{
_root = MovieClip(root);
this.scaleMode = StageScaleMode.NO_SCALE;
this.scaleX = .25;
this.scaleY = .2;
}
private function entFrame(event:Event):void
{
if (_root.gamePaused == false)
{
x += speed;
if (stretchWhile < stretchTill)
{
this.width += 25;
this.x = _root.playerShip.x;
this.y = _root.playerShip.y;
}
else if (stretchWhile < shrinkTill)
{
this.width -= 25;
}
else if (stretchWhile >= shrinkTill)
{
this.width = .25;
removeEventListener(Event.ENTER_FRAME, entFrame);
_root.projectilePlayerContainer.removeChild(this);
}
stretchWhile ++;
if(this.x > (stage.width+ this.width))
{
removeEventListener(Event.ENTER_FRAME, entFrame);
_root.projectilePlayerContainer.removeChild(this);
}
}
if (_root.removeProjectiles == true)
{
removeEventListener(Event.ENTER_FRAME, entFrame);
_root.projectilePlayerContainer.removeChild(this);
}
}
}
}
スケーラーモードを無効にする必要はありません。インスタンスのscaleX値を調整するだけです。レーザーは常に左右に横たわっているのですか、それとも他の方向に回転することができますか?もしそうなら、あなたはレーザーをスケールするだけで、レーザーは回転する容器に入れる必要があります。レーザーを回転させると、x軸が変わります。しかし、レーザーを回転させず、代わりに親を回転させれば、それは動作します。 –
ストレッチコードの幅を調整すると、レーザーが水平である限り、これは正常に機能します。レーザーの角度がそれよりも上または下にある場合、幅を拡大/縮小すると、scaleYの値は調整されませんが、レーザーの相対的な高さの一部がx軸自体に表示されます。 –
これは奇妙です。this.scaleXと同様にthis.widthも試みましたが、両方のシナリオではY軸または水平方向のストレッチがx軸/幅と共に増加していました。そして、これらの2つのうちどれも回転していません。しかし、レーザービームのスケールモードを特に無効にする必要があると言うと、どうすればいいでしょうか? – XirmiX