如果添加一个movieClip移动独立于舞台?

时间:2015-04-09 18:35:35

标签: actionscript-3 flash actionscript

在我的闪光游戏中,如果我的角色跳到敌人的电影剪辑上,它会在MovieClip(root).addChild(spawn1);之间从另一个类产生3个小兵。在我的仆人班里,我把他们的代码放在了地上,然后停在地上,也跟着我的角色。

我有一个VCam(虚拟相机)movieClip跟随我的角色(谁在舞台上移动,而不是在他周围的舞台)使用此代码内置:

import flash.events.Event;
import flash.geom.Matrix;
import flash.geom.Rectangle;
import flash.geom.Point;
import flash.display.MovieClip;

//VCam
addEventListener(Event.ENTER_FRAME, handleEnterFrame);
function handleEnterFrame(event:Event):void {
    if (parent) {
        parent.scaleX = 1 / scaleX;
        parent.scaleY = 1 / scaleY;

        if (rotation == 0) {
            parent.x = (width / 2 - x) / scaleX;
            parent.y = (height / 2 - y) / scaleY;
            parent.rotation = 0;
        } else {
            var bounds:Rectangle = getBounds(this);
            var angle:Number = rotation * Math.PI / 180;

            var midX:Number = -x / scaleX;
            var midY:Number = -y / scaleY;
            var rx:Number = -bounds.width / 2;
            var ry:Number = -bounds.height / 2;

            var cos:Number = Math.cos(angle);
            var sin:Number = Math.sin(angle);
            var rotatedX:Number = rx * cos - ry * sin;
            var rotatedY:Number = ry * cos + rx * sin;
            var cornerX:Number = midX - rotatedX;
            var cornerY:Number = midY - rotatedY;

            cos = Math.cos(-angle);
            sin = Math.sin(-angle);
            parent.x = cornerX * cos - cornerY * sin;
            parent.y = cornerY * cos + cornerX * sin;

            parent.rotation = -rotation;
        }
    }
}

addEventListener(Event.REMOVED, handleRemoved, false, 0, true);
function handleRemoved(event:Event):void 
    {
    removeEventListener(Event.ENTER_FRAME, handleEnterFrame);
    removeEventListener(Event.REMOVED, handleRemoved);
    }

当我和我的角色一起跳跃时,似乎那些仆从跟随我的伏击声的运动并且没有正常行为,随着相机跳跃并且在角色落下时坠落地面。

如果我通过addChild(m_clip);通常从主时间轴添加一个孩子,那就不会那样了。

有一个简单的解决方法吗?谢谢!

这是minions类代码:

    package  {

        import flash.display.*;
        import flash.events.*;


        public class EnemySpawned extends MovieClip {

            protected var gravitysp: Number = 1;
            protected var ySpeedsp: Number = 0;
            protected var Speedsp: Number = 6.5;
            var charMTL:MovieClip;

            public function EnemySpawned() 
            {
                this.addEventListener(Event.ENTER_FRAME, movement);
                trace('exist');
            }
            function movement(event:Event):void
            {
                var MTL:MovieClip = MovieClip(root);
                charMTL = MTL.char1;

                ySpeedsp += gravitysp;
                if(! MTL.ground_1.hitTestPoint(this.x, this.y, true))
                {
                    this.y += ySpeedsp;
                }
                if(ySpeedsp > 40)
                    {
                        ySpeedsp = 40;
                    }
                for(var j:int = 0; j<20; j++)
                    {
                        if(MTL.ground_1.hitTestPoint(this.x, this.y, true))
                            {
                                this.y--
                                ySpeedsp = 0;
                        }
                }

            var Distance:Number = charMTL.x - this.x;
            if(Distance < -charMTL.width/2 - this.width/2)
            {
                this.x -= Speedsp;
            }
            if(Distance > charMTL.width/2 + this.width/2)
            {
                this.x += Speedsp;
            }

        }
    }

}

通过代码没有移动ground_1 movieClip。

0 个答案:

没有答案