在 Haxe 中导入本地 类

Importing local classes in Haxe

我正在 Haxe 中开始我的第一个重要项目,但遇到了一些障碍。

问题是,如果我尝试在 Main.hx 以外的文件中写入 class,它不会被编译。我试过使用 import 但似乎不起作用。

我正在使用 vim 作为我的 ide 和一些不错的插件(Youcompleteme、syntastic 和 vaxe),唯一的 haxelib 是 openfl。

这是我使用命令 openfl create project :

时创建的样板文件

Project.xml

<?xml version="1.0" encoding="utf-8"?>
<project>

    <meta title="ProjetSession" package="com.sample.projetsession" version="1.0.0" company="Company Name" />
    <app main="Main" path="Export" file="ProjetSession" />

    <source path="Source" />

    <haxelib name="openfl" />

    <assets path="Assets" rename="assets" exclude="openfl.svg" />
    <icon path="Assets/openfl.svg" />

</project>

ProjetSession.hxproj

<?xml version="1.0" encoding="utf-8"?>
<project version="2">
  <!-- Output SWF options -->
  <output>
    <movie outputType="CustomBuild" />
    <movie input="" />
    <movie path="project.xml" />
    <movie fps="30" />
    <movie width="800" />
    <movie height="600" />
    <movie version="1" />
    <movie minorVersion="0" />
    <movie platform="Lime" />
    <movie background="#FFFFFF" />
    <movie preferredSDK=";3;" />
  </output>
  <!-- Other classes to be compiled into your SWF -->
  <classpaths>
    <class path="D:\Development\Haxe\openfl" />
    <class path="d:\Development\Haxe\lime" />
    <class path="Source" />
    <class path="Export\html5\haxe" />
  </classpaths>
  <!-- Build options -->
  <build>
    <option directives="openfl=3.0.0-beta&#xA;lime=2.1.3&#xA;tools=2.1.3&#xA;no-compilation&#xA;openfl-html5&#xA;canvas&#xA;lime-html5&#xA;html5&#xA;web&#xA;html5" />
    <option flashStrict="False" />
    <option noInlineOnDebug="False" />
    <option mainClass="ApplicationMain" />
    <option enabledebug="False" />
    <option additional="--remap flash:openfl&#xA;--macro allowPackage(&quot;flash&quot;)" />
  </build>
  <!-- haxelib libraries -->
  <haxelib>
    <!-- example: <library name="..." /> -->
  </haxelib>
  <!-- Class files to compile (other referenced classes will automatically be included) -->
  <compileTargets>
    <!-- example: <compile path="..." /> -->
  </compileTargets>
  <!-- Paths to exclude from the Project Explorer tree -->
  <hiddenPaths>
    <hidden path="obj" />
  </hiddenPaths>
  <!-- Executed before build -->
  <preBuildCommand>"$(CompilerPath)/haxelib" run lime build "$(OutputFile)" $(TargetBuild) -$(BuildConfig) -Dfdb</preBuildCommand>
  <!-- Executed after build -->
  <postBuildCommand alwaysRun="False" />
  <!-- Other project options -->
  <options>
    <option showHiddenPaths="False" />
    <option testMovie="Custom" />
    <option testMovieCommand="" />
  </options>
  <!-- Plugin storage -->
  <storage />
</project>

html文件由vaxe自动生成。

定义 class 并导入它,在输出中编译 class 是不够的。你需要的是 "use" 它。这可以通过在 main 函数中引用 class 来实现。为此,只需直接使用 class 或使用任何其他直接或间接引用该 class 的代码。 这是该语言的一大优势,它不会用不需要的代码使您的应用程序的输出过载。这也意味着您可以放心地使用第三方库,因为您知道只有您使用的库的位会嵌入到您的输出中。