标签: nme

从iOS应用程序运行Haxe - hxRunLibrary()错误

对于客户,我开发了一个用于用户界面的iOS + Android应用程序Cordova (PhoneGap).现在,作为这个应用程序的更新,我正在尝试添加一个用Haxe编写的游戏.最初这个游戏是为这个游戏编写的Flash target,但是我已经更新了它以便与C++目标一起工作Android and iOS.

在Android上,很容易Cordova使用活动将其与应用程序集成(Haxe部分作为单独的活动运行),但我在iOS上实现类似结果时遇到一些麻烦.

到目前为止,我已经尝试将所有hxcpp生成的代码包含在我的项目中(就像当你执行"nme build ios"时NME设置XCode项目一样),hxRunLibrary()当我希望游戏运行时,我正在调用我的代码.

问题是hxRunLibrary()似乎想要创建自己的UIApplication实例,由于我的主应用程序已经在运行实例,因此失败并出现以下错误:

*** Assertion failure in void UIApplicationInstantiateSingleton(Class)(), /SourceCache/UIKit_Sim/UIKit-2380.17/UIApplication.m:2037
*** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'There can only be one UIApplication instance.'
Run Code Online (Sandbox Code Playgroud)

我认为这可能与SDL有关,Haxe将其用于图形.根据我的理解,SDL需要从应用程序的主要功能运行,这与Cocoa产生冲突,也需要从main函数运行.

这有什么简单的方法吗?我查看了hxcpp源代码,但无法找到UIApplication相关代码或SDL的任何条目代码.

也许有人可以指出我正确的方向.谢谢!

haxe hxcpp ios nme

38
推荐指数
1
解决办法
792
查看次数

NME在C++和Neko目标中更改窗口标题

我正在使用NME创建一个小游戏.我喜欢在Neko和C++目标的标题栏中显示目标.那可能吗?

谢谢.

c++ haxe neko nme

9
推荐指数
1
解决办法
214
查看次数

如何退出Haxe/OpenFL计划?

我正在使用Haxe,OpenFL(以前的NME)和HaxeFlixel进行游戏.

然而,问题是,我似乎无法找到一个很好的方法来制作一个Flixel按钮,按下时会关闭游戏.我打算在主菜单上点击"退出"按钮.

有没有简单的方法可以这样做,还是不可能?

haxe nme openfl haxeflixel

7
推荐指数
1
解决办法
3226
查看次数

无法为Android编译NME

好的,我正在尝试将NME示例文件初始构建到Android设备上.

我可以为HTML5,Flash和Windows等平台构建,但是我无法在Android上进行构建 - 我总是会收到错误说:

Unable to find a javac compiler;
com.sun.tools.javac.Main is not on the classpath.
Perhaps JAVA_HOME does not point to the JDK.
Is is currently set to "C:\Program Files (x86)\Java\jre7"
Run Code Online (Sandbox Code Playgroud)

好的 - 显而易见吧?但我检查,复查,重新启动,编辑环境变量并取得绝对确保JAVA_HOME变量实际上是指向的JDK.

有什么解释吗?

android haxe hxcpp nme

6
推荐指数
1
解决办法
890
查看次数

Haxe - 将枚举作为标志发送到函数

我只是想将我的代码从C#转换为Haxe NME.我使用枚举作为标志.

[Flags]
enum State
{
    StateOne    = 1,
    StateTwo    = 2,
    StateThree  = 4
}
Run Code Online (Sandbox Code Playgroud)

并使用它

if (someObj.HasState(State.StateOne | State.StateTwo))
{
    // Contains both the states. Do something now.
}
Run Code Online (Sandbox Code Playgroud)

我不知道如何在Haxe NME中这样做.

谢谢.

enums flags haxe enum-flags nme

6
推荐指数
2
解决办法
1164
查看次数

AIR版本更新后,Haxe/NME游戏在iOS设备上失败

所以,我继承了一个带有以下设置的游戏项目:

  • 游戏本身的核心SWF,用Haxe(3.0)/ NME(4.0.2)编写,利用Starling框架,使用FlashDevelop编译为Flash目标
  • AS3包装器,用于处理各种设备通信需求(例如,检测设备功能,管理电话锁定状态和暂停游戏/静音音乐等).这被编译到自己的SWF(AIR 3.6)中,这是实际启动的,然后加载"核心"SWF并将其添加到舞台上.
  • 随后使用ADT(也称为AIR 3.6)将此AS3 SWF及其资产(包括核心SWF)打包为目标格式(APK/IPA).

尽管奇怪的复杂性,整个事情工作得很好; 我们创建了功能性,可用的应用程序,a)在Android和iOS设备上工作,以及b)通过提交标准.

快进几个月; 该游戏现已通过测试版,并已准备好进行初始发布.Android,一切都很顺利.iOS,另一方面......在我们尝试将1.0上传到iTunes Connect前几天,Apple改变了他们的要求.突然间,我们收到错误"提交到App Store的应用程序和应用程序更新必须使用Xcode 5.1.1或更高版本的公共(GM)版本以及iOS 7 SDK或更高版本构建.不要提交使用beta构建的应用程序软件." 很好,这个错误让很多开发人员在9月份绊倒了.最终Adobe发布了AIR 15,打包的IPA再次满足了Apple的提交要求.

不幸的是,更新到AIR 15会破坏applecart.我们现在能够上传IPA,但具有讽刺意味的是,它无法在iOS设备上运行.加载屏幕(由纯AS3"包装器"SWF生成)出现,但是当标题屏幕(由"核心"SWF生成)应该出现时,什么都没有.黑屏,没有活动,或者(在某些后来的尝试中),即时,无消息的应用程序消失).在iOS控制台上没有生成错误,在FDB中单步执行应用程序时(直到应用程序蒸发并且FDB失去与远程主机的连接)才会发生任何不当行为.

其他重要信息:

我尝试更新过程中涉及的每个组件,AIR 15和16 beta的各种更新.所有列出的haxelibs.我们甚至尝试将"核心"项目(以最粗略的方式)移植到OpenFL.所有这些都导致版本适用于Windows(桌面,而不是手机),在Android上工作,但不适用于iOS.

Haxelib图书馆:原文:

actuate: 1.6.4 [1.6.5]
air3: [0.0.1]
haxelib_client: [3.1.0-rc.3]
hxcpp: [3.0.2]
nme: [4.0.2]
openfl: [1.0.6]
openfl-tools: [1.0.10] 1.0.8
starling: [1.2.2]
swf: [1.0.2]
Run Code Online (Sandbox Code Playgroud)

特别好吃的:

actuate: 1.7.0 [1.7.5]
air3: [0.0.1]
haxelib_client: 3.1.0-rc.3 [3.1.0-rc.4]
hxcpp: 3.0.2 [3.1.39]
hxcs: [3.1.1]
lime: [2.0.0-alpha.4]
nme: [4.0.2] 5.1.8
openfl-compatibility: [1.0.1]
openfl-html5: [1.4.2-beta]
openfl-native: [1.4.0]
openfl-tools: [1.0.10]
openfl: 1.1.1 2.0.1 [2.1.2]
starling: [1.2.2]
swf: …
Run Code Online (Sandbox Code Playgroud)

air haxe fdb ios nme

5
推荐指数
0
解决办法
471
查看次数

Haxe NME UI:MVC应用程序设计的最佳实践

昨天我偶然发现了Haxe NME项目,这是一个非常有前途的想法.但是,仍然无法使用此框架构建复杂的UI.在我看来,构建一个针对这么多不同平台的UI框架似乎是一项令人生畏的任务,因此我认为这不是一种可行的方法,因为即使像Qt和wxWidgets这样老旧成熟的UI框架也不支持很多平台.

但是,在一些漂亮的UI设计器工具的帮助下构建一个特定于平台的UI,然后将UI代码连接到用Haxe编写的UI不可知代码是有意义的.我不知道这是否可行,因为我找不到任何示例,但也许有人已经编写了一些MVC Haxe代码,可以成功连接到不同的平台特定UI,想分享他的经验.谢谢.

model-view-controller user-interface haxe nme

4
推荐指数
1
解决办法
2794
查看次数

是否有可能在ios和android中构建一个带有haxe nme的opengl游戏?

我知道haxe nme可以在后端使用opengl来显示游戏的2D精灵,但是有可能直接从nme操作opengl来构建一个跨平台的ios和android纯3D opengl游戏吗?

haxe opengl-es ios nme

3
推荐指数
1
解决办法
1710
查看次数

如何加载XML文件并使用Haxe解析它

我正在尝试创建一个桌面应用程序,它将加载itunes播放列表xml文件并使用Haxe和框架haxenme解析它.

我认为我遇到的问题可能是文件名中的空格未被正确转义,但我对此并不是100%肯定.

这是我到目前为止的代码.

package com.mattwallace.appname.actions;

    import nme.Assets;
    import haxe.xml.Fast;

    class GetPlayListAction 
    {
        public function new():Void
        {
            super();
        }

        public function execute():Void
        {

            var xml:Xml = Xml.parse(getXMLDesktopString());
            trace(xml);
        }

        private function getXMLDesktopString():String
        {

            var xmlString:String = sys.io.File.getContent(
                nme.filesystem.File.userDirectory.url + 
                "/Music/iTunes/iTunes Music Library.xml");
            return xmlString;
        }
    }
Run Code Online (Sandbox Code Playgroud)

haxe xml-parsing nme

3
推荐指数
1
解决办法
3604
查看次数

'cp'不被识别为内部或外部命令

我尝试使用FlashDevelop中的自定义构建来运行项目:

$(CompilerPath)\haxe.exe $(ProjectDir)\compile-js.hxml
Run Code Online (Sandbox Code Playgroud)

,但出现此错误:

无法将“ cp”识别为内部或外部命令,

这是compile-js.hxml文件,有什么办法解决吗?

compile-js.hxml

#sources
-main Cocktail
-cp ../../src/
-cp src

#binary
-js bin/js/Main.js
--macro Cocktail.create('src/index.html','Main')

#copy assets directory
-cmd cp -R assets bin\js\
Run Code Online (Sandbox Code Playgroud)

haxe flashdevelop nme

3
推荐指数
2
解决办法
1万
查看次数