当为激光武器射弹(激光束本身的一个实例)应用代码时,激光器的作用类似于真实的激光器,我的一切工作都很好...除了事实上射弹在y轴和x轴上保持伸展,而不仅仅是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);
}
}
}
}
答案 0 :(得分:1)
您应该专门更改scaleX
而不是width
。您需要将激光绘制为100像素长并说出10像素宽(品尝),然后一旦确定所需的激光距离,就将scaleX
设置为desiredWidth/100
,这应该是通过Y消除激光缩放。