2011-06-10 110 views
0

我做了一個非常基本的乒乓遊戲(在工作),我的問題是,球移動「模糊」..我增加幀率,但它似乎還沒有確定..任何想法?乒乓遊戲示例

package src { 
    import flash.display.*; 
    import flash.display.MovieClip; 
    import flash.display.Stage; 
    import flash.display.Sprite; 
    import flash.display.BitmapData; 
    import flash.events.*; 
    import flash.events.MouseEvent; 
    import flash.net.*; 
    import flash.filters.*; 
    import flash.text.*;  
    import flash.xml.*; 
    import flash.geom.*; 

    public dynamic class pong00 extends Sprite{ 

     public var playerA:pongPlayer = new pongPlayer(); 
     public var playerB:pongPlayer = new pongPlayer(); 
     public var ball01:Ball00 = new Ball00(); 
     public var ballDegree:Number = 45; 
     public var ballAngelRadian:Number = 0; 
     public var ballColisionStage:Boolean = false; 
     public var ballAngelRadianVector:Number = 1; 
     public var ballSpeed = 16; 

     public function pong00():void{ 
      addChild(playerA); 
      addChild(playerB); 
      addChild(ball01); 
      ballAngelRadian = (ballDegree * Math.PI/180);         stageOrginizer(); 
     } 
     private function stageOrginizer():void{ // put on the stage 
      tita_txt.text = " Ready "; // .. a text box on stage .. 
      playerA.x = 20; playerB.x = stage.stageWidth - 20; 
      playerA.y = playerB.y = stage.stageHeight/2; 
      ball01.x = stage.stageWidth/2; 
      ball01.y = stage.stageHeight/2; 
      stage.addEventListener(MouseEvent.MOUSE_MOVE, io); 
      stage.addEventListener(Event.ENTER_FRAME, FL); 
     } 
     public function io(evt:MouseEvent):void{ //// mouse 
      if (ball01.x < (stage.stageWidth/2)){ 
       playerA.y = mouseY; 
      }else{ 
       playerB.y = mouseY; 
      } 
     } 
     public function FL(evt:Event):void{  /// stage enter frame 
      if (!(ballColisionStage)){ 
      ball01.x -= ballAngelRadianVector * (Math.cos(ballAngelRadian) * ballSpeed); 
      ball01.y -= ballAngelRadianVector * (Math.sin(ballAngelRadian) * ballSpeed); 
      } 
      if ((ball01.x < 0) || (ball01.x > stage.stageWidth)){ 
       tita_txt.text = " ooops !!! "; // .. a text box on stage .. 
       impact(0); 
      } 
      if ((ball01.y < 0) || (ball01.y > stage.stageHeight)){ 
       impact(180); 
      } 
      if((ball01.hitTestObject(playerB)) || (ball01.hitTestObject(playerA))){ 
       tita_txt.text = "";// .. atext box on stage .. 
       impact(0); 
      } 
     } 
     public function impact(fee:int):void{ 
      ballAngelRadianVector = -ballAngelRadianVector; 
      ballDegree = fee - ballDegree ; 
      ballAngelRadian = (ballDegree * Math.PI/180); 
     } 
    } 
} 
+0

不能真正編譯這個 - 你可以上傳的SWF或東西,並提供一個鏈接,所以我可以看到你的意思? http://www.filedropper.com/ – Marty 2011-06-10 05:14:42

+0

http://www.filedropper.com/pong00 – 2011-06-10 05:20:47

+0

你對我的回答不滿意嗎? – Marty 2011-06-10 06:18:11

回答

1

從我所看到的一切都是完美的。模糊效果是在較暗的背景上由白球引起的錯覺。

如果將幀率降低爲10,則會看到沒有模糊效果。

PS。在遊戲中做得很好 - 如果你需要這個空間的幫助,請告訴我!

+0

檢查此.. http://www.kataxco.com/num/num04.html和http://www.kataxco.com/zd/zd04.html ..兩個相同的引擎(使用箭頭鍵左右旋轉).. :)), – 2011-06-10 05:34:49

+0

非常好。保持。 – Marty 2011-06-10 05:38:57

+0

太好了,謝謝.. – 2017-07-01 08:57:32

0

我建議你使用tweenlite引擎進行動畫製作。我從來沒有對這個庫有任何問題,這對動畫非常棒。你可以下載它在http://www.greensock.com/TweenLite

+0

TweenLite對此會很糟糕。它用於從A點移動到B點一次,而不是像在遊戲中一樣不斷更新位置。 – grapefrukt 2011-06-10 08:39:08

+0

這就是你錯了我的朋友:)我已經制作了一個網絡攝像頭運動檢測庫,並且我使用TweenLite進行光標的不斷動畫。如果你將TweenLite的時間設置爲0.1,你可以做很好的動畫而不會給你的系統帶來壓力(我已經完成了這方面的研究)。 – 2011-06-10 08:43:07

+0

如果你需要位置插值,也許,但對於更新每一幀的遊戲,你沒有讓我信服。但是,每一個都是他自己的! – grapefrukt 2011-06-10 08:45:06