导入类时未找到类异常:Haxe(使用OpenFL + Flixel库)

时间:2014-12-14 15:53:54

标签: packages importerror haxe directory-structure haxeflixel

我最近开始摆弄HaxeFlixel并且在尝试制作一个真正简单的游戏时,我遇到了这个错误:

source/PlayState.hx:10: characters 7-16 : Class not found : GameLogic

现在这不是我第一次尝试编程游戏或任何东西,但我不知道为什么会出现这个错误。对于初学者来说,GameLogic甚至不是一个类,它是一个包。当我尝试从我的GameLogic包导入基本的Player类时出现错误。

我的基本玩家类:

 package GameLogic;

 import flixel.FlxSprite;
 import flixel.util.FlxColor;

 class Player extends FlxSprite {

     public function new(X:Float=0, Y:Float=0) {
         super(X, Y);
         makeGraphic(32, 32, FlxColor.WHITE);
     }

 }

抛出异常的地方:

     import GameLogic.Player;

 class PlayState extends FlxState{

     private var p:Player;

     override public function create():Void{
         p = new Player(20, 20);
         add(p);
         super.create();
     }

我的[相关]目录结构:

  | src
  | | GameLogic
  | | | Player.hx
  | | PlayState.hx

1 个答案:

答案 0 :(得分:3)

正如Haxe docs所述:

  

包名称中路径的每个部分必须以小写字母开头,并且与所有类型一样,包中的类型名称必须以大写字母开头。因此My.Pack是一个无效的包,就像my.Pack一样。同样,my.pack.e不是有效的类型名称或导入

您必须使用小写gameLogic命名您的包G,才能将其识别为正确的包名称。 up-to-date docs中的相关部分读起来稍微复杂一些,但实质上对于这个问题意味着相同:

  

定义:模块

     

所有Haxe代码都以模块组织,使用   路径。实质上,每个.hx文件代表一个可能包含的模块   几种类型。类型可以是私有的,在这种情况下只有它   包含模块可以访问它。

     

模块的区别及其包含的同名类型   模糊不清的设计。实际上,解决haxe.ds.StringMap可以   被认为是haxe.ds.StringMap.StringMap的简写。后者   版本由四部分组成:

     
      
  1. 包haxe.ds
  2.   
  3. 模块名称StringMap
  4.   
  5. 类型名称StringMap
  6.   
  7. 类型参数Int
  8.   

更详细地概述了名称解析算法here