2016-05-26 7 views
-1

Adob​​e Animate(Warmage.as)内にムービークリップクラスを作成し、ステージ(addChild(char))に追加しました。私はプロパティにアクセスしようとcharの未定義のプロパティを言う。しかし、私はWarmageのクラスを作成し、そのインスタンス(char)を作成しました。Flash AS3 Playerのムービークリップの問題とインスタンスの作成

package 
{ 

import flash.display.MovieClip; 
import flash.events.Event; 
import flash.events.KeyboardEvent; 
import flash.ui.Keyboard; 
import flash.utils.Timer; 

public class Main_class extends MovieClip 
{ 
    //player stats 
    var hsp:Number = 0; 
    var vsp:Number = 0; 
    var floor:Number = 1318; 
    var attackCounter = 5; 
    var doubleJumpCount = 0; 

    //Player states 
    var rightSide:Boolean = false;  
    var rDown:Boolean = false; 
    var lDown:Boolean = false; 
    var jumped:Boolean = false; 
    var onGround:Boolean = false; 
    var crouchMode:Boolean = false; 
    var attackMode:Boolean = false; 
    var canDoubleJump = false; 

    public function Main_class() 
    { 
     var char:Warmage = new Warmage();//Adds player to the level 
     char.x = 500; 
     char.y = 300; 
     addChild(char); 

     stage.addEventListener(Event.ENTER_FRAME, gameLoop);//Stage listens no matter what 
     stage.addEventListener(KeyboardEvent.KEY_DOWN, keyPressed); 
     stage.addEventListener(KeyboardEvent.KEY_UP, keyReleased); 
    } 
    function gameLoop(e:Event):void 
    { 
     if(rDown) 
      { 
      char.x += 10; 
      } 
     if(lDown) 
      { 
      char.x -= 10; 
      } 
    } 
    function keyPressed(e:KeyboardEvent):void 
    { 
     if(e.keyCode == Keyboard.RIGHT) 
      { 
      rDown = true; 
      } 
     if(e.keyCode == Keyboard.LEFT) 
      { 
      lDown = true; 
      } 
     if(e.keyCode == Keyboard.UP && onGround) 
      { 
      jumped = true; 
      //doubleJumpCount += 1; 
      } 
     if(e.keyCode == Keyboard.DOWN && onGround) 
      { 
      crouchMode = true; 
      } 
     if(e.keyCode == Keyboard.SPACE && onGround) 
      { 
       attackMode = false; 
      } 
    } 
    function keyReleased(e:KeyboardEvent):void 
    { 
     if(e.keyCode == Keyboard.RIGHT) 
      { 
      rDown = false; 
      } 
     if(e.keyCode == Keyboard.LEFT) 
      { 
      lDown = false; 
      } 
     if(e.keyCode == Keyboard.UP) 
      { 
      jumped = true; 
      } 
     if(e.keyCode == Keyboard.DOWN) 
      { 
      crouchMode = false; 
      } 
     if(e.keyCode == Keyboard.SPACE) 
      { 
      attackMode = true; 
      } 
    } 

} 
} 
+0

を「理解、変数のスコープ」をお読みください。 –

答えて

4

ローカル変数を使用しているので。

public function Main_class() 
{ 
    var char:Warmage = new Warmage();//Adds player to the level 

    trace(char); // OK. You can available char inside of this function. 
} 

function gameLoop(e:Event):void 
{ 
    trace(char); // You can not available that variable here. 
} 

グローバル変数を使用します。関数の外に変数を宣言します。

private var char:Warmage; 

public function Main_class() 
{ 
    char = new Warmage();//Adds player to the level 
    char.x = 500; 
    char.y = 300; 
    addChild(char); 

    trace(char); // OK 
} 

function gameLoop(e:Event):void 
{ 
    trace(char); // OK 
} 

私は誰がエラーを投げているコードのビットを掲示せずに、この上であなたを助けるすることが困難になると思う
http://help.adobe.com/en_US/ActionScript/3.0_ProgrammingAS3/WS5b3ccc516d4fbf351e63e3d118a9b90204-7f9d.html

関連する問題