2012-07-11 91 views
0

我正在ActionScript 3.0中制作泡泡射击游戏,并且在放置泡泡时遇到问题。它应该是这个样子:如何为气泡射击游戏放置气泡? AS3.0

00000000 
00000000 
00000000 
00000000 

,但我只是将第一个和第三排的那一刻,我不知道我做错了什么。这里是我到目前为止的代码:

bubble_mc:(这是我的气泡,有6个不同的气泡)

package { 
    import flash.display.MovieClip; 
    public class bubble_mc extends MovieClip { 
     public function bubble_mc(val:uint,row:uint,col:uint) { 
      gotoAndStop(val+1); 
      name=row+"_"+col; 
      x=50+col*36; 
      y=40+row*36; 
     } 

    } 

} 

主:

package { 
    import flash.display.Sprite; 
    import flash.events.KeyboardEvent; 
    import flash.events.Event; 
    public class Main extends Sprite { 
     private const ROT_SPEED:uint=2; 
     private const R:uint=18; 
     private const D:Number=R*Math.sqrt(3); 
     private var bubbleArr:Array=new Array(); 
     private var cannon:cannon_mc; 
     private var bubble:bubble_mc; 
     private var left:Boolean=false; 
     private var right:Boolean=false; 
     private var bubCont:Sprite; 
     public function Main() { 
      placeContainer(); 
      placeCannon(); 
      stage.addEventListener(KeyboardEvent.KEY_DOWN,onKDown); 
      stage.addEventListener(KeyboardEvent.KEY_UP,onKUp); 
      addEventListener(Event.ENTER_FRAME,onEFrame); 
     } 
     private function placeCannon():void { 
      cannon=new cannon_mc(); 
      addChild(cannon); 
      cannon.y=385.5; 
      cannon.x=320; 
     } 
     private function onKDown(e:KeyboardEvent):void { 
      switch(e.keyCode) { 
       case 37 : 
        left=true; 
        break; 
       case 39 : 
        right=true; 
        break; 
      } 
     } 
     private function onKUp(e:KeyboardEvent):void { 
      switch(e.keyCode) { 
       case 37 : 
        left=false; 
        break; 
       case 39 : 
        right=false; 
        break; 
      } 
     } 
     private function onEFrame(e:Event):void { 
      if (left) { 
       cannon.rotation-=ROT_SPEED; 
      } 
      if (right) { 
       cannon.rotation+=ROT_SPEED; 
      } 
     } 
     private function placeContainer():void { 
      bubCont=new Sprite(); 
      addChild(bubCont); 
      bubCont.graphics.lineStyle(1,0xffffff,1); 
      for (var i:uint=0; i<4; i++) { 
       if (i%2==0) { 
        for (var j:uint=0; j<15; j++) { 
         bubbleArr[i]=new Array(); 
         bubbleArr[i][j]=Math.floor(Math.random()*6); 
         bubble = new bubble_mc(bubbleArr[i][j],i,j); 
         bubCont.addChild(bubble); 
        } 
       } else { 
         if (j<14) { 
          bubbleArr[i][j]=Math.floor(Math.random()*6); 
          bubble = new bubble_mc(bubbleArr[i][j],i,j); 
          bubble.x=68+i*36; 
          bubCont.addChild(bubble); 
         } 
       } 
      } 
     } 
    } 
} 
+0

有什么问题吗? – Florent 2012-07-11 09:30:39

+0

我已经解决了!如果有人遇到同样的问题,请输入以下代码: – JNeander 2012-07-11 09:31:53

+0

您应该将您的解决方案作为答案添加,然后接受您自己的答案。这样,它就会显示为回答并接受寻找as3问题的其他人。 – Ribs 2012-07-12 20:46:30

回答

0

我已经解决了!如果有人有同样的问题,这里是我解决它的代码! (我对x坐标进行的更改事.. doesnh't)

bubble_mc:

package { 
    import flash.display.MovieClip; 
    public class bubble_mc extends MovieClip { 
     public function bubble_mc(val:uint,row:uint,col:uint) { 
      gotoAndStop(val+1); 
      name=row+"_"+col; 
      x=59+col*36; 
      y=40+row*36; 
     } 
    } 
} 

主要

package { 
    import flash.display.Sprite; 
    import flash.events.KeyboardEvent; 
    import flash.events.Event; 
    public class Main extends Sprite { 
     private const ROT_SPEED:uint=2; 
     private const R:uint=18; 
     private const D:Number=R*Math.sqrt(3); 
     private var bubbleArr:Array=new Array(); 
     private var cannon:cannon_mc; 
     private var bubble:bubble_mc; 
     private var left:Boolean=false; 
     private var right:Boolean=false; 
     private var bubCont:Sprite; 
     public function Main() { 
      placeContainer(); 
      placeCannon(); 
      stage.addEventListener(KeyboardEvent.KEY_DOWN,onKDown); 
      stage.addEventListener(KeyboardEvent.KEY_UP,onKUp); 
      addEventListener(Event.ENTER_FRAME,onEFrame); 
     } 
     private function placeCannon():void { 
      cannon=new cannon_mc(); 
      addChild(cannon); 
      cannon.y=385.5; 
      cannon.x=320; 
     } 
     private function onKDown(e:KeyboardEvent):void { 
      switch(e.keyCode) { 
       case 37 : 
        left=true; 
        break; 
       case 39 : 
        right=true; 
        break; 
      } 
     } 
     private function onKUp(e:KeyboardEvent):void { 
      switch(e.keyCode) { 
       case 37 : 
        left=false; 
        break; 
       case 39 : 
        right=false; 
        break; 
      } 
     } 
     private function onEFrame(e:Event):void { 
      if (left) { 
       cannon.rotation-=ROT_SPEED; 
      } 
      if (right) { 
       cannon.rotation+=ROT_SPEED; 
      } 
     } 
     private function placeContainer():void { 
      var iRow:Boolean=false; 
      bubCont=new Sprite(); 
      addChild(bubCont); 
      bubCont.graphics.lineStyle(1,0xffffff,1); 
      for (var i:uint=0; i<4; i++) { 
       if (! iRow) { 
        for (var j:uint=0; j<15; j++) { 
         bubbleArr[i]=new Array(); 
         bubbleArr[i][j]=Math.floor(Math.random()*6); 
         bubble = new bubble_mc(bubbleArr[i][j],i,j); 
         bubCont.addChild(bubble); 
         iRow=true; 
        } 
       } else { 
        for (j=0; j<15; j++) { 
         bubbleArr[i]=new Array(); 
         bubbleArr[i][j]=Math.floor(Math.random()*6); 
         bubble = new bubble_mc(bubbleArr[i][j],i,j); 
         bubble.x=77+j*36; 
         bubCont.addChild(bubble); 
         iRow=false; 
        } 
       } 
      } 
     } 
    } 
}