对于客户,我开发了一个用于用户界面的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的任何条目代码.
也许有人可以指出我正确的方向.谢谢!
我正在使用NME创建一个小游戏.我喜欢在Neko和C++目标的标题栏中显示目标.那可能吗?
谢谢.
我正在使用Haxe,OpenFL(以前的NME)和HaxeFlixel进行游戏.
然而,问题是,我似乎无法找到一个很好的方法来制作一个Flixel按钮,按下时会关闭游戏.我打算在主菜单上点击"退出"按钮.
有没有简单的方法可以这样做,还是不可能?
好的,我正在尝试将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.
有什么解释吗?
我只是想将我的代码从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中这样做.
谢谢.
所以,我继承了一个带有以下设置的游戏项目:
尽管奇怪的复杂性,整个事情工作得很好; 我们创建了功能性,可用的应用程序,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) 昨天我偶然发现了Haxe NME项目,这是一个非常有前途的想法.但是,仍然无法使用此框架构建复杂的UI.在我看来,构建一个针对这么多不同平台的UI框架似乎是一项令人生畏的任务,因此我认为这不是一种可行的方法,因为即使像Qt和wxWidgets这样老旧成熟的UI框架也不支持很多平台.
但是,在一些漂亮的UI设计器工具的帮助下构建一个特定于平台的UI,然后将UI代码连接到用Haxe编写的UI不可知代码是有意义的.我不知道这是否可行,因为我找不到任何示例,但也许有人已经编写了一些MVC Haxe代码,可以成功连接到不同的平台特定UI,想分享他的经验.谢谢.
我知道haxe nme可以在后端使用opengl来显示游戏的2D精灵,但是有可能直接从nme操作opengl来构建一个跨平台的ios和android纯3D opengl游戏吗?
我正在尝试创建一个桌面应用程序,它将加载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) 我尝试使用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 ×10
nme ×10
ios ×3
hxcpp ×2
air ×1
android ×1
c++ ×1
enum-flags ×1
enums ×1
fdb ×1
flags ×1
flashdevelop ×1
haxeflixel ×1
neko ×1
openfl ×1
opengl-es ×1
xml-parsing ×1