重置玩家x位置(Flash As3)

时间:2014-04-17 21:24:15

标签: actionscript-3 flash

    private function scrollStage():void 
    {
        if (lastPosX != lastPosX)
        {
            canScrollStage = false;
        }
        else
        if (lastPosX == lastPosX)
        {
            canScrollStage = true;
        }

        if (canScrollStage)
        {
            if (rightKey)
            {
                //move background left
                //something.x +=(stage.stageWidth * 0.5) - character.x * 2;
            }
            else
            if (leftKey)
            {
                //move backgrounf Roight 
            }

            for (var b:int = 0; b  < childrenOnStage; b++)
            {   
                if (getChildAt(b).name == "enemy")
                {
                    getChildAt(b).x +=(stage.stageWidth * 0.5) - character.x
                }

            }
            ground.x += (stage.stageWidth * 0.5) - character.x
        }
        else
        {
            //move the background 
        }
        // do this last, everything moves around object 
        character.x = stage.stageWidth * 0.5;
        lastPosX = character.x;
    }

有人告诉我在玩家周围移动物体然后更新玩家x位置。

这是我通过查看教程(“卡通智能”)所做的事情;

在我的播放器类中,我有一个重置功能。

    private var xSpeed:int;
    private var resetPos:Point;



    public function player() 
    {

        addEventListener(Event.ADDED_TO_STAGE, onAdd)

    }

    private function onAdd(e: Event): void 
    {
        xSpeed = 3;
        resetPos = new Point(x, y);
    }

    public function reset():void
    {
        x = resetPos.x;
        y = resetPos.y;
        //trace(resetPos);
        //trace(resetPos + "player");
    }   

当玩家摔死时,此功能称为

    private function playerFalls():void 
    {
        if (character.y > stage.stageHeight)
        {
            //take life away and go back to check point or back to reset 
            character.x = stage.stageWidth * 0.5;
            character.y = 20;
            //goblin1.reset();
            //goblin2.reset();
            //goblin3.reset();


            //stage.x = stage.stageWidth * 0.5;
            //canScrollStage = false;
        }
    }

如果我使用

            character.x = stage.stageWidth * 0.5;

然后我的角色在中间结束,但它会在中间结束,因为滚动功能总是指示玩家在中心。

            character.x = (stage.stageWidth * 0.5) - 400;// moves him back

但是如果角色从屏幕左侧掉下来,那么他就会被移回去。 任何人都有解决方案吗?

我的问题是,我想将玩家的x位置重置为300,将y位置重置为10;

但我不能这样做,因为阶段转移和协调系统改变。

为了让玩家回到舞台的原始坐标,舞台必须滚动。

这是我的想法,或者地面和敌人必须做相反的事情?

2 个答案:

答案 0 :(得分:1)

我真诚地为迟到的答案道歉。好的,所以你的说法是当角色落下时你不希望屏幕一直滚动回角色的开始位置。你需要做的是找到角色和地面的起始位置(以及任何其他层,如背景等)。然后,无论您的坠落功能到位,只需将角色和背景位置设置为起始坐标。

function fall(){
    char.x=charStartX;
    char.y=charStartY;
    ground.x=groundStartX;
    ground.y=groundStartY;
    //etc
}

答案 1 :(得分:0)

例如,让我们说你有一个检查点。如果玩家点击检查点charResetPoint = 100.如果玩家跌倒然后将其设置为x pos到charResetPoint

但是我无法移动玩家x位置,因为我的代码总是将stage.stageWidth / 2。

所以理论上很难制作一个resetPoint,因为当我添加goblin 1.x时,它的x pos是900,如果我向右滚动goblon1 x pos会改变。 Everythings x pos改变了阶段。

我无法掌握这个概念,排序