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
4

1 回答 1

3

正如Haxe 文档所述:

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

您必须gameLogic用小写字母命名您的包G才能被识别为正确的包名称。最新文档中的相关部分读起来稍微复杂一些,但就这个问题而言,本质上是相同的:

定义:模块

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

模块及其同名的包含类型的区别在设计上是模糊的。事实上,寻址 haxe.ds.StringMap 可以认为是 haxe.ds.StringMap.StringMap 的简写。后一个版本由四个部分组成:

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

此处更详细地概述了名称解析的算法。

于 2014-12-14T16:55:26.587 回答