我最近开始摆弄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
答案 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的简写。后者 版本由四部分组成:
- 包haxe.ds
- 模块名称StringMap
- 类型名称StringMap
- 类型参数Int
醇>
更详细地概述了名称解析算法here。