当拉伸其中一个轴时,如何停止另一个轴的自动拉伸?

时间:2016-12-10 19:01:32

标签: actionscript-3 flash

当为激光武器射弹(激光束本身的一个实例)应用代码时,激光器的作用类似于真实的激光器,我的一切工作都很好...除了事实上射弹在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);
            }
        }
    }
}

1 个答案:

答案 0 :(得分:1)

您应该专门更改scaleX而不是width。您需要将激光绘制为100像素长并说出10像素宽(品尝),然后一旦确定所需的激光距离,就将scaleX设置为desiredWidth/100,这应该是通过Y消除激光缩放。