2014-01-25 50 views
0

我对Flash完全陌生,并且正在尝试在FlashDevelop中学习ActionScript3的FlashPunk。 我一直在使用本教程(http://dev.tutsplus.com/tutorials/an-introduction-to-flashpunk-the-basics--active-9638),并在第10步:碰撞。“未定义属性的访问”错误AS3 FlashPunk

它曾经说过要向World.as类中添加一些代码,但是当我这样做时,出现错误“Error:Access of undefined property _gameEntity”。这也发生在_box上。

我猜这是与变量被私人定义有关,因此World.as无法访问它们。

override public function update():void 
    { 
     // update the entities 
     var e:Entity = _updateFirst; 
     while (e) 
     { 
      if (e.active) 
      { 
       if (e._tween) e.updateTweens(); 
       e.update(); 
      } 
      if (e._graphic && e._graphic.active) e._graphic.update(); 
      e = e._updateNext; 
     } 
     //collisions 
     super.update(); 

     var entityArray:Array = []; 

     getType("GameEntity", entityArray); 

     for each (var entity:Entity in entityArray) 
     { 
      entity.x = entity.x > 550 ? 550 : entity.x; 
      entity.y = entity.y > 400 ? 400 : entity.y; 
     } 

     if (_gameEntity.collideWith(_box, _gameEntity.x, _gameEntity.y)) 
     { 
      trace("Collision!"); 
     } 
    } 

任何帮助表示赞赏:)

回答

0

确保私人VAR _gameEntity是GameWorld.as内定义之前,提交后的游戏世界一流的声明和的游戏世界和更新功能。

public class GameWorld extends World 
{ 
    private var _gameEntity:GameEntity; <---------IT GOES HERE 

    public function GameWorld() 
    { 
     // blah blah 
    } 

    override public function update():void 
    { 
     // blah blah 
    } 
} 

希望它能帮助。

+0

这就是我有,我_gameEntity和_box都在功能之前,这一点和世界后延定义:公共类游戏世界扩展的世界 \t { \t \t私人VAR _gameEntity:GameEntity; \t \t \t \t private var _box:Box; \t \t \t 公共\t功能游戏世界() \t \t { \t \t \t _gameEntity =新GameEntity(); \t \t \t _box = new Box(); \t \t \t \t \t \t add(_gameEntity); \t \t \t add(_box); \t \t \t \t \t \t _box.x = 200; \t \t \t _box.y = 150; \t \t \t \t \t \t addGraphic(新的图像(图像),0,50,50); \t \t} – user2078994

+0

我不知所措。我无法下载flashpunk,因为官方网站坏了(从来不是一个好兆头)。尝试评论你认为可能导致问题的代码行,直到错误消失,然后你会更好地了解在哪里寻找错误。我将从步骤10中添加的代码开始。对不起,我无法提供更多帮助。 – Frankenscarf

+0

好的,谢谢你的帮助:) – user2078994

相关问题