레이저 무기 발사체 (레이저 빔 자체의 인스턴스)에 대한 코드를 적용하여 레이저가 실제 레이저와 비슷한 기능을 수행 할 때, 나는 모든 것을 훌륭하게 작동 시켰습니다 ... 발사체 x 축뿐만 아니라 y 축과 x 축에서 계속 늘어납니다. 이제 scaleMode와 같은 것을 사용할 수 없도록해야한다는 것을 알았지 만, 내가 찾은 최선의 방법은 "stage.scaleMode = StageScaleMode.NO_SCALE;"과 같은 코드 라인을 사용하는 것입니다. 인스턴스 자체 및 레이저 빔의 클래스 코드 내에서 ADDED 이벤트에 이와 같은 것을 적용하려고하면 오류 1120이 발생합니다.축 중 하나를 늘일 때 인스턴스에 대해 다른 축의 자동 늘이기를 중지하려면 어떻게합니까?
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);
}
}
}
}
scalemode를 비활성화 할 필요가 없습니다. 인스턴스의 scaleX 값을 조정하면됩니다. 레이저는 항상 왼쪽과 오른쪽으로 수평으로 가고 있습니까? 아니면 다른 방향으로 회전 할 수 있습니까? 그렇다면 레이저를 확장해야하지만 레이저는 회전하는 컨테이너에 보관해야합니다. 레이저를 돌리면 x 축이 변경됩니다. 그러나 레이저를 회전시키지 않고 대신 부모를 회전 시키면 작동 할 것입니다. –
스트레치 코드에서 너비를 조정하면 레이저가 수평 인 한 정상적으로 작동합니다. 레이저의 각도가 위 또는 아래 인 경우 너비를 높이면 scaleY 값이 조정되지 않지만 레이저의 상대 높이 중 일부는 x 축 자체에 노출됩니다. –
this.scaleX뿐만 아니라 this.width도 시도했기 때문에 이상합니다. 두 시나리오 모두에서 Y 축 또는 수평 확장이 x 축/너비와 함께 증가하고있었습니다. 그리고 아니요,이 둘 중 어느 것도 회전하고 있지 않습니다. 그러나 레이저 빔의 스케일 모드를 구체적으로 비활성화해야한다고 말하면 어떻게 할 수 있습니까? – XirmiX