2017-01-21 1 views
0

인터넷에서이 코드를 가져와 게임 Pong이 내 AS3 문서에서 작업하도록했습니다. 그러나 나는 코드에서 초보자이며, 게임에서 모바일 게임을해야한다는 과제가 있기 때문에이 게임을 모바일에서 작동 시키려고합니다. 화살표 키를 사용하기 때문에 기본적으로 버튼 대신 버튼을 사용하고 위쪽 화살표와 아래쪽 화살표로 바꿉니다. 나는 그 일을 할 수있는 코드 유형을 모른다. 버튼을 눌렀을 때 플레이어가 어떤 버튼에 따라 위 또는 아래로 움직이지만, 코드를 대체 할 위치와 제거 할 부분이 확실하지 않은 것과 같은 것입니다. 당신이 안드로이드 또는 iOS 용 AIR를 사용하여 컴파일 할 수 있습니다, 모바일AS3에서는 화살표 키를 사용하는 대신 플레이어가 언론에서 움직일 수있게하는 2 개의 버튼을 어떻게 추가합니까?

package { 

    import flash.display.MovieClip; 

    import flash.events.KeyboardEvent; 

    import flash.ui.Keyboard; 

    import flash.events.Event; 

    public class Pong extends MovieClip { 
     //constants 

     private var pongUp:MovieClip = new PongUp ; 

     private var pongDown:MovieClip = new PongDown ; 

     const ballspeed:int = 10; 
     const playerspeed:int = 7; 
     const computerspeed:int = 10; 
     const computerIntelligence:int = 7;//intelligence is 7 out of 10 

     //global variables 
     var vx:int = - ballspeed;// x component of velocity of ball (velocity is speed with direction) 
     var vy:int = ballspeed;// y component of velocity of ball 
     var v1:int = 0;// initial velocity of player 
     var v2:int = 0;// initial velocity of computer 
     var playerScore:int = 0; 
     var computerScore:int = 0; 

     var player:MovieClip = new PongPlayer ; 
     var computer:MovieClip = new PongComputer ; 
     var ball:MovieClip = new PongBall ; 

     public function Pong() { 
      //init();  
      addEventListener(Event.ADDED_TO_STAGE,init); 

     } 
     //this function will add all event listeners 
     function init(e:Event):void { 
      stage.addEventListener(KeyboardEvent.KEY_DOWN,KeyDown); 
      stage.addEventListener(KeyboardEvent.KEY_UP,KeyUp); 
      stage.addEventListener(Event.ENTER_FRAME,EnterFrame); 

      addChild(player); 
      addChild(computer); 
      addChild(ball); 

      player.x = 23; 
      player.y = 300; 

      computer.x = 637; 
      computer.y = 311; 

      ball.x = 308; 
      ball.y = 328; 

      addChild(pongUp); 

      pongUp.x = 25; 
      pongUp.y = 700; 

      addChild(pongDown); 

      pongDown.x = 530; 
      pongDown.y = 700; 


     } 
     // this function resets the game 
     function reset():void { 
      player.y = stage.stageHeight/2; 
      computer.y = stage.stageHeight/2; 
      ball.x = stage.stageWidth/2; 
      ball.y = stage.stageHeight/2; 
      if (Math.abs(Math.random() * 2) > 1) 
      { 
       vx = - ballspeed; 
      } 
      else 
      { 
       vx = ballspeed; 
      } 
      if (Math.abs(Math.random() * 2) > 1) 
      { 
       vy = - ballspeed; 
      } 
      else 
      { 
       vy = ballspeed; 
      } 
     } 


     //pongDown.addEventListener (MouseEvent.MOUSE_DOWN,moveDown); 

     //function moveDown (e:MouseEvent): void 

     //{ 





     //}  
     //this function sets the velocity of player when key is pressed 
     function KeyDown(event:KeyboardEvent):void { 
      if (event.keyCode == Keyboard.UP) 
      { 
       v1 = - playerspeed; 
      } 
      else if (event.keyCode == Keyboard.DOWN) 
      { 
       v1 = playerspeed; 
      } 
     } 
     //this function sets the velocity of player to 0 if key is released 
     function KeyUp(event:KeyboardEvent):void { 
      if (event.keyCode == Keyboard.UP || event.keyCode == Keyboard.DOWN) 
      { 
       v1 = 0; 
      } 
     } 

     //This function is executed when a frame changes 
     function EnterFrame(event:Event):void { 
      //variable decleration 
      var pHalfHeight = player.height/2;// half height of player(used for collisions) 
      var pHalfWidth = player.width/2;// half width of player (used for collisions) 
      var bHalfHeight = ball.height/2;// half height of ball(used for collisions) 
      var bHalfWidth = ball.width/2;// half width of ball (used for collisions) 

      //moving the player 
      player.y += v1; 
      //limiting the motion of player (it should not move beyond the stageheight) 
      if (player.y + pHalfHeight > stage.stageHeight) 
      { 
       player.y = stage.stageHeight - pHalfHeight; 
      } 
      else if (player.y - pHalfHeight < 0) 
      { 
       player.y = 0 + pHalfHeight; 
      } 

      //moving the ball 
      ball.x += vx; 
      ball.y += vy; 

      //moving the computer automatically 
      if (Math.abs(Math.random() * 10) < computerIntelligence) 
      { 
       var d:int = computer.y - ball.y; 
       if (Math.abs(d) > pHalfHeight) 
       { 
        if ((d > 0)) 
        { 
         v2 = - computerspeed; 
        } 
        else 
        { 
         v2 = computerspeed; 
        } 
       } 
      } 
      computer.y += v2; 
      //limiting the motion of computer (it should not move beyond the stageheight) 
      if (computer.y + pHalfHeight > stage.stageHeight) 
      { 
       computer.y = stage.stageHeight - pHalfHeight; 
      } 
      else if (computer.y - pHalfHeight < 0) 
      { 
       computer.y = 0 + pHalfHeight; 
      } 

      //collision with horizontal walls 
      if (ball.y + bHalfHeight >= stage.stageHeight || ball.y - bHalfHeight <= 0) 
      { 
       vy *= -1; 
      } 

      //collision with player and computer 
      if (ball.x - bHalfWidth <= player.x + pHalfWidth) 
      { 
       if (Math.abs(ball.y - player.y) <= pHalfHeight) 
       { 
        vx = ballspeed; 
        if ((v1 != 0)) 
        { 
         vy = 2 * v1; 
        } 
       } 
      } 
      else if (ball.x + bHalfWidth >= computer.x - pHalfWidth) 
      { 
       if (Math.abs(ball.y - computer.y) <= pHalfHeight) 
       { 
        vx = - ballspeed; 
        if ((v2 != 0)) 
        { 
         vy = v2; 
        } 
       } 
      } 

      //collision with vertical walls & updating scores 
      if (ball.x + bHalfWidth >= stage.stageWidth) 
      { 
       playerScore += 1; 
       reset(); 
      } 
      else if (ball.x - bHalfWidth <= 0) 
      { 
       computerScore += 1; 
       reset(); 
      } 

      //display the score on the textfield 
      //txtPlayer.text = String(playerScore); 
      //txtComputer.text = String(computerScore); 
     } 
    } 

} 
+0

화면상의 단추에 마우스 이벤트 수신기를 추가하십시오. –

+0

MouseEvent.CLICK 또는 MouseEvent.MOUSE_DOWN을 찾으십시오. –

+0

알았습니다. 시도해 보겠습니다. – BigBeann

답변

0

:

다음은 "퐁"클래스 파일입니다. 대체 그런

function KeyDown(event:TouchEvent):void { 
    if (event.stageY < player.y){ 
     v1 = - playerspeed; 
    }else if (event.stageY > player.y){ 
     v1 = playerspeed; 
    } 
} 

function KeyUp(event:TouchEvent):void { 
    v1 = 0; 
} 

:

//this function will add all event listeners 
    function init(e:Event):void { 
     stage.addEventListener(KeyboardEvent.KEY_DOWN,KeyDown); 
     stage.addEventListener(KeyboardEvent.KEY_UP,KeyUp); 

로 :

//this function sets the velocity of player when key is pressed 
    function KeyDown(event:KeyboardEvent):void { 
     if (event.keyCode == Keyboard.UP) 
     { 
      v1 = - playerspeed; 
     } 
     else if (event.keyCode == Keyboard.DOWN) 
     { 
      v1 = playerspeed; 
     } 
    } 
    //this function sets the velocity of player to 0 if key is released 
    function KeyUp(event:KeyboardEvent):void { 
     if (event.keyCode == Keyboard.UP || event.keyCode == Keyboard.DOWN) 
     { 
      v1 = 0; 
     } 
    } 

로 : 그런 다음 대체 할 수

//this function will add all event listeners 
    function init(e:Event):void { 
     stage.addEventListener(TouchEvent.TOUCH_BEGIN, KeyDown); 
     stage.addEventListener(TouchEvent.TOUCH_END, KeyUp); 

을 그리고에 의해 대신으로 KeyboardEvent의 TouchEvent를 사용해야합니다 대체 :

import flash.events.KeyboardEvent; 

: 화면에 손가락을 누르고 있으면

import flash.events.TouchEvent; 

지금은 "선수는"그 Y 위치를 향해 이동합니다. 게임에서 X 축을 사용하는 경우 Y를 X로 변경하십시오!

희망이 도움이됩니다.