2012-04-12 8 views
2

私は "Achtung!die kurve"のようなゲームをActionscript 3.0で作ろうとしています。flaファイルからactionscript 3.0へ

これまでのところ、私は「ワーム」の1つの動きをしていて、うまくいきます。

私は別のクラスファイルに分割したいと思っていますが、動作させることができません。 私は.flaファイルと4つの.asファイルを持っています。これまでのところ、私はこれらの2つのコードしか持っていません。すべてのコードをFLAファイルに直接書き込むと、完全に正常に動作しますが、プレーヤークラスに配置すると、ステージに「子を追加する」ことはありません。

ここに私のプレーヤーの.asファイルです:私はhttp://pastebin.com/TAwUYrTU :、http://pastebin.com/hZSxT9cu

私ははaddChildをコメントした理由私は私のmainFile.asでこれを行う

たいので、これはメインファイルからですメインファイルでそれをどのように呼び出すかわからないので、これが問題であると推測しています。

すべてのファイルの名前が同じで同じフォルダに正しく配置されていて、フラッシュには.asファイルが.flaファイルをターゲットにしていると表示されているため、問題はないようです。

ご迷惑をおかけして申し訳ありません。

さらに、誰かが私のスプライトのスピードをどのように変えることができるか知っていれば、それは素晴らしいでしょう!これもうまくいくようには見えません。

敬具 ジェスパー

答えて

1

あなたが参照してゲームを見てみると、それはあなたには、いくつかの衝突検出が必要になるだろうことは明らかです。 pixel-level collision detectionのこのチュートリアルは、あなたを始めるのに便利かもしれません。

現在の設定では、図面のスピードを上げるために表示される唯一の方法は、FLAのフレームレートを上げることです。

現在プレーヤインスタンスにアクセスできないため、プレーヤインスタンスをメインクラスの子として追加することはできません。実際、プレイヤークラス内に複数のスプライトを作成することは非常に非効率的です。より効率的なアプローチは、プレーヤインスタンスのグラフィックスインスタンス内に直接四角形を描画することです。

私は次のことが、あなたがやろうとしていることの出発点になるかもしれないと思います。繰り返しますが、私が何をしているのかを説明することを希望するコメントをいくつか挙げました。

package { 

    import flash.display.MovieClip; 
    import flash.events.KeyboardEvent; 
    import flash.ui.Keyboard; 

    public class MainTrink extends MovieClip { 

     // define a list of players, their color, and controls 
     // this should make it easier to vary the number of players 
     private var players:Array = [ 
      {color: 0xff0000, left: Keyboard.A, right: Keyboard.S}, 
      {color: 0x0000ff, left: Keyboard.O, right: Keyboard.P}, 
      {color: 0x00ff00, left: Keyboard.NUMBER_1, right: Keyboard.NUMBER_2}, 
      {color: 0xffff00, left: Keyboard.LEFT, right: Keyboard.RIGHT}, 
     ]; 

     public function MainTrink() { 

      var playerData:Object; 
      var player:PlayerTrink; 

      // Create a player instance for each player specified in the players array 
      for (var i:int = 0; i < players.length; i ++) 
      { 
       playerData = players[i]; 

       player = new PlayerTrink(); 
       player.color = playerData.color; 
       player.init(); 

       this.addChild(player); 

       // Add a reference to the instance back onto the players 
       // list so that we can access it easily in other methods 
       playerData.player = player; 
      } 

      // add listeners for keyboard events 
      this.stage.addEventListener(KeyboardEvent.KEY_DOWN, _onKeyDown); 
      this.stage.addEventListener(KeyboardEvent.KEY_UP, _onKeyUp); 
     } 

     private function _onKeyDown(event:KeyboardEvent):void 
     { 
      var playerData:Object; 
      var player:PlayerTrink; 

      // Check whether pressed key is a control for one of our players 
      for (var i:int = 0; i < players.length; i ++) 
      { 
       playerData = players[i]; 
       player = PlayerTrink(playerData.player); 

       if (event.keyCode == playerData.left) 
        player.leftKeyDown = true; 

       if (event.keyCode == playerData.right) 
        player.rightKeyDown = true; 
      } 
     } 

     private function _onKeyUp(event:KeyboardEvent):void 
     { 
      var playerData:Object; 
      var player:PlayerTrink; 

      for (var i:int = 0; i < players.length; i ++) 
      { 
       playerData = players[i]; 
       player = PlayerTrink(playerData.player); 

       if (event.keyCode == playerData.left) 
        player.leftKeyDown = false; 

       if (event.keyCode == playerData.right) 
        player.rightKeyDown = false; 
      } 
     } 
    } 

}

そして、FLAと同じディレクトリにこのファイルを含める:

package { 

    // Need to import other classes referenced within this class 
    import flash.display.MovieClip; 
    import flash.display.Sprite; 
    import flash.events.KeyboardEvent; 
    import flash.events.Event; 
    import flash.ui.Keyboard; 

    // By convention classes are usually named using CamelCase 
    public class PlayerTrink extends MovieClip { 

     // Move your properties out of your class constructor 
     private const TURNSPEED:Number = 0.1; 

     private var posX:Number = 50; 
     private var posY:Number = 50; 
     private var dirX:Number = 1; 
     private var dirY:Number = 1; 
     private var dir:Number = 0; 

     private var _leftKeyDown:Boolean = false; 
     private var _rightKeyDown:Boolean = false; 

     private var _color:Number; 

     public function PlayerTrink() { 
      // constructor code 
     } 

     public function init():void 
     { 
      this.addEventListener(Event.ENTER_FRAME, _onEnterFrame); 
     } 

     private function _onEnterFrame(e:Event):void { 
      if(_leftKeyDown) dir -= TURNSPEED; 
      if(_rightKeyDown) dir += TURNSPEED; 
      dirX = Math.cos(dir); 
      dirY = Math.sin(dir); 
      posX += dirX; 
      posY += dirY; 
      drawRect(posX, posY); 
     } 

     private function drawRect(x:Number, y:Number):void { 
      this.graphics.beginFill(_color); 
      this.graphics.drawRect(x, y, 4, 4); 
      this.graphics.endFill(); 
     }       

     public function set leftKeyDown(value:Boolean):void 
     { 
      _leftKeyDown = value; 
     } 

     public function set rightKeyDown(value:Boolean):void 
     { 
      _rightKeyDown = value; 
     }     

     public function set color(value:Number):void 
     { 
      _color = value; 
     }   
    } 
} 
をFLAファイルのドキュメントクラスとしてこれを設定し

関連する問題