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

3

最近我开始琢磨 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

我第一个猜测是,你需要将GameLogic的首字母小写以被识别为包名“gameLogic”。 - JensG
1个回答

3
Haxe文档所述:

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

你必须使用小写字母G命名你的包为gameLogic才能被识别为正确的包名。在最新文档中相关部分的阅读略微复杂,但在这个问题上本质上意思相同:

定义:模块

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

模块及其同名类型之间的区别是模糊的。事实上,haxe.ds.StringMap的寻址可以被认为是haxe.ds.StringMap.StringMap的简写。后者由四个部分组成:

  1. 包haxe.ds
  2. 模块名称StringMap
  3. 类型名称StringMap
  4. 类型参数Int
名称解析算法在此处有更详细的概述。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接