2014-04-17 130 views
1
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位置。重置球員x位置(Flash As3)

這就是我通過查看教程(「卡通智能」)所做的;

在我的播放器類中,我有一個重置功能。

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;

但我不能這樣做,因爲舞臺轉換和協調系統變化。

爲了讓玩家回到舞臺的原始座標,舞臺必須滾動。

這是我的想法,或者地面和敵人必須做相反的事情?

+0

如果你能解釋一下你的問題多一點,我會很高興你指出正確的方向。我一直在創造一款平臺遊戲,所以我一定會有經驗來幫助你。你到底需要什麼幫助? – DrakeTruber

+0

@DrakeSwartzy謝謝你!我現在在工作,但後來像2小時的時間回覆生病 – Moynul

+0

@DrakeSwartzy基本上,character.x總是= stage.stageWith/2 – Moynul

回答

1

我對最近的答案表示誠摯的歉意。好的,所以你說,當角色掉下來時,你不希望屏幕一直滾動回到角色的起始位置。你需要做的是找到角色和地面的起始位置(以及任何其他層,如背景等)。然後,無論您的秋季功能何時到位,只需將角色和背景位置設置爲其起始座標即可。

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

你不需要道歉,不需要請。我在敵人級別中有重置功能。在添加保存他們的x和y pos。 ResetPoint =(x.y);然後我調用這個goblin.reset();當玩家跌倒時。但它的屏幕 – Moynul

+0

好吧:)這是你在找什麼? – DrakeTruber

+0

所以這不適用於你的代碼?將這些行放入「fall」函數內會發生什麼? – DrakeTruber

0

例如,假設您有一個檢查點。如果玩家擊中檢查點charResetPoint = 100。如果玩家跌倒,則將其設置爲x pos至charResetPoint

但是我無法移動玩家x的位置,因爲我的代碼會始終是stage.stageWidth/2。

所以理論上很難做出一個resetPoint,因爲當我加入goblin 1.x時,它的x pos是900,如果我向右滾動goblon1 x pos會改變。萬物x pos會發生變化,階段也會變化。

我無法對概念的把握,sortlry