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

迪伦·塞特鲁洛(Dylan Cetrulo)

我最近一直在玩弄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
詹斯

正如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

此处详细概述用于名称解析的算法

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章