2012-08-28 210 views
0
一起移動

我的問題是在我做的只是用不同_boundary(樓)_player一起移動閃存_saw是在舞臺只是靜態影片剪輯與玩家

public class PiggyRun extends MovieClip 
{ 


private var _vy:Number; 
private var _vx:Number; 

我在劇本球員

public var _player:player; 
public var _boundary:Boundary; 
public var _rp:RG; 

我宣佈剛纔看到一樣與邊界

public var _saw:saw; 
public var _jump:Boolean=true; 



    public function PiggyRun():void 
    { 
    _rp.visible=false; 
    _vx=0; 
    _vy=0; 
    _player.gotoAndStop('walking'); 
    stage.focus= stage; 
    this.addEventListener(Event.ENTER_FRAME,enterFrameHandler); 
    stage.addEventListener(KeyboardEvent.KEY_DOWN, kDHandler); 
    stage.addEventListener(KeyboardEvent.KEY_UP, kUHandler); 


    } 

     private function enterFrameHandler(e:Event):void 
     { 

我增加x方法,因爲它是一個正在運行的遊戲

 _vy+=2; 
     _vx+=.5; 

     if(_vx>10) 
     { 
      _vx=10 
     } 
     _player.x+=_vx; 
     _player.y+=_vy; 




     borders(); 
     stageFocus(); 
     sawblade(); 
     } 

的控制時,按下

 private function kDHandler(e:KeyboardEvent):void 
     { 

      switch(e.keyCode) 
      { 

       case 38: 
       if(_jump){ 
       _jump=false;  
       _vy=-20; 

       } 
       break; 


       default: 



      } 
     } 

我刪除了這個功能

 private function kUHandler(e:KeyboardEvent):void 
     { 
      switch(e.keyCode) 
      { 


      } 
     } 

     private function borders():void 
     { 
      if(_vy > 0) 
      { 
       if (_player.y>stage.stageHeight) 
       { 
        _player.x=_rp.x; 
        _player.y=_rp.y; 
        _boundary.x=0; 
        _boundary.y=0; 
        _saw.x=0; 
        _saw.y=0; 
        _vy=0; 
        _vx=0; 

       }else{ 
        var border:Boolean=false; 

        if(_boundary.hitTestPoint(_player.x,_player.y,true)) 
        { 
        border=true; 

        } 
         if (border) 
         { 
          while(border) 
          { 

          _player.y-=0.05; 

          _jump=true; 
          border=false; 
           if(_boundary.hitTestPoint(_player.x,_player.y,true)) 
           { 
           border=true; 

           } 
          } 
          _vy=0; 

         } 
       } 
      } 
     } 

我其中把這個函數的內容,如果玩家擊中鋸片就會重生回_rp的位置,但我傷心的2 movieclips不會見,因爲他們同時移動 ,即使我強制把_saw連同它功能不起作用

 private function sawblade():void 
     { 
      if(_vy > 0) 
      { 
       if (_player.y>stage.stageHeight) 
       { 
        _player.x=_rp.x; 
        _player.y=_rp.y; 
        _boundary.x=0; 
        _boundary.y=0; 
        _saw.x=0; 
        _saw.y=0; 
        _vy=0; 
        _vx=0; 

       }else{ 
        var sawn:Boolean=false; 

        if(_saw.hitTestPoint(_player.x,_player.y,true)) 
        { 
        sawn=true; 

        } 
         if (sawn) 
         { 
          while(sawn) 
          { 

          _player.x=_rp.x; 
          _player.y=_rp.y; 
          _boundary.x=0; 
          _boundary.y=0; 
          _saw.x=0; 
          _saw.y=0; 
          _vy=0; 
          _vx=0; 
          _jump=true; 
          sawn=false; 
           if(_saw.hitTestPoint(_player.x,_player.y,true)) 
          { 
           sawn=true; 

           } 
          } 
          _vy=0; 

         } 
       } 
      } 
     } 
     private function stageFocus():void 
     { 
      _boundary.x+=(stage.stageWidth * 0.5)-_player.x; 
      _player.x=stage.stageWidth*0.5; 
      _saw.x=5; 
     } 





} 
+0

檢查是否將_Child()_saw對象添加到_player對象。似乎_saw.parent等於_player,這使得它隨着玩家移動。 – Vesper

+0

這樣讀取代碼有點困難。試着在上面清楚地問你的問題。然後有一個堅實的代碼塊(附加評論而不是換行符)。和@Vesper一樣,我也對你實例化'Player'和'Saw'以及如何將它們添加到舞臺上感興趣。 –

+0

我沒有任何addChild,它是一個非常基本的Flash遊戲,我只是將它們繪製到舞臺上並使它們符號而添加了看到和播放器 –

回答

0

我看了一下你的fla,並且你沒有發現任何有關你的MovieClip定位的奇怪。問題在於你的stageFocus函數。你經常把你的鋸子的位置定位在x = 5,你的玩家處於舞臺的中心位置。只有_boundary被移動。所以你應該像移動_boundary那樣移動你的_saw

private function stageFocus():void 
{ 
    var playerOffset:int = (stage.stageWidth * 0.5)-_player.x; 

    _boundary.x+= playerOffset; 
    _player.x=stage.stageWidth*0.5; 
    _saw.x+=playerOffset; 
} 

而在更一般的說明中,我認爲你在這裏有點頭痛。嘗試縮小你的遊戲概念,或者甚至可以開始use a framework