我一直在浏览Haxe/OpenFL/Flixel的网站,但我很难理解每个人的用途.
据我了解:
Haxe是一种可以部署到多个平台的语言.OpenFL与Flash有关.Flixel是一个帮助您制作游戏的库.
谁能纠正我/让它更清楚.
我正在使用Haxe,OpenFL(以前的NME)和HaxeFlixel进行游戏.
然而,问题是,我似乎无法找到一个很好的方法来制作一个Flixel按钮,按下时会关闭游戏.我打算在主菜单上点击"退出"按钮.
有没有简单的方法可以这样做,还是不可能?
拿这个代码:
function createGUIHud():Void
{
this.screen.gameHud = new NormalGameHud(10, 0, this.screen.getTextureAtlas());
this.screen.gameHud.x = FlxG.width - (this.screen.gameHud.width + GameSize.getPositionByPlatform(10));
this.screen.gameHud.y = GameSize.getPositionByPlatform(10);
}
// NormalGameHud.hx
public function new(lives:Int = 10, corn:Int = 0, textureAtlas:SparrowData)
{
super(0, 0, 30);
this.lives = lives;
this.cornCount = corn;
this.textureAtlas = textureAtlas;
this.createScoreboard();
this.createLivesCount();
this.createCornCounter();
}
Run Code Online (Sandbox Code Playgroud)
'textureAtlas'是通过引用传递还是被复制?
http://api.haxeflixel.com/flixel/util/loaders/SparrowData.html
我知道PHP通过引用传递对象,除非另有说明(以&为前缀),否则会复制像Arrays这样的东西.Haxe同样适用吗?
谢谢.
(我正在使用 HaxeFlixel 的 dev 分支)
要创建一个新FlxPoint
变量,我可以做三件事之一......
var pt:FlxPoint = new FlxPoint();
var pt:FlxPoint = FlxPoint.weak();
var pt:FlxPoint = FlxPoint.get();
Run Code Online (Sandbox Code Playgroud)
通过阅读方法注释,我发现某种池化可能会加速创建FlxPoint
s。在什么情况下我应该使用这三种方式中的每一种来创建一个新的FlxPoint
?
我有几个函数要么接受FlxPoint
s 作为参数,要么返回它们。我应该复制FlxPoint
它本身的作用,并.weak()
用来创建它们,并.putWeak()
回收传递给函数的点吗?
对我来说,它似乎.get()
适用于长期变量(玩家开始位置、存储在数组中用于路径查找的点等),并且.weak()
适用于临时变量(在函数中计算的中间值)。这是正确的吗?
第一天HaxeFlixel编码器.愚蠢的错误,但谷歌没有帮助我.
如何使用Haxe,NME和Flixel跟踪FlashDevelop输出.它在使用C++执行时有效,但对于Flash没有任何作用!
我试过了
trace("hello");
Lib.trace("hello"); //With correct imports
Run Code Online (Sandbox Code Playgroud)
对不起,现在感觉很蠢!
我正试图在我的HaxeFlixel游戏中设置一个保存功能.
一些背景:有问题的对象是一个Player
扩展的实例FlxSprite
.保存数据存储在我为其制作的自定义类的实例中.该实例存储在StringMap
(键是保存名称)中,通过将其序列化为a中的变量来保存FlxSave
.
创建保存数据并编写它可以正常工作.但是,重新读取保存数据会使消息"无效字段:像素"崩溃.pixels
是一个来自FlxSprite的字段,但它不是序列化字符串中的第一个这样的字段,所以它可能不是那样的.
如果它有用,那个字段的声明是y6:pixelsn
- 即:
y
开始一个名为......的字段6:
一串长度为6的字符串......pixels
(字符串)n
空值我正在学习使用Haxe语言的HaxeFlixel教程.现在我对Haxe没有任何经验,但是我决定勇敢地学习这个教程,因为我有Java和Haxe的经验,因为一种语言似乎与Java非常相似.
到目前为止,情况进展顺利.但是,我遇到了这段代码,我有几个问题:
class FSM
{
public var activeState:Void->Void;
public function new(?InitState:Void->Void):Void
{
activeState = InitState;
}
public function update():Void
{
if (activeState != null)
activeState();
}
}
Run Code Online (Sandbox Code Playgroud)
现在我明白这是一个被调用的类,FSM
并且有一个名为的变量activeState
.
这是我的问题:
是什么类型的activeState
?我会理解是否有类似activeState:Void
但->
完成的内容是什么?它被用作指针吗?它是一个指向另一个void变量的void指针吗?
什么是?
前InitState:Void->Void
意味着什么?
在if语句之后,activeState
使用括号将其称为函数.但是,它activeState
是一个变量而不是一个函数.那么if语句究竟做了什么呢?
还有一个问题:
public var playerPos(default, null):FlxPoint;
Run Code Online (Sandbox Code Playgroud)
我的理解playerPos
是实例FlxPoint
类,但到底是什么的default
和null
做的?
我试图找到最好的解决方案来加扰或编码用HaxeFlixel编写的游戏的资产(特别是图像/纹理).在我的项目的根目录中有一个文件夹assets/images
,这就是我存储的所有游戏纹理的位置.
如果我为桌面构建游戏,我的图像将保留在此文件夹中.
我如何编码我的纹理,以便在构建之后没人能看到它?
我有一个异构的FlxGroup包含:10 FlxSprite和4 FlxText.我用add(obj)函数添加所有对象,并通过add函数确定它们的z-index.
我想在程序运行时动态更改我的FlxGroup中对象的z-index值(例如:单击鼠标).
我尝试过这样的事情:
我目前正在使用Haxe,特别是haxeflixel用于开发.真正让我烦恼的一件事是构建/编译时间.我甚至没有编译到c ++目标,但决定编译到neko vm,因为我认为它可能更快.然而; neko debug(或release)的编译时间大约是4或5秒.每次我想看到一个结果时都要等这么久才会让它变得糟透了:).
我甚至尝试使用-v命令进行调试,占用时间最多的部分是:
Running command: BUILD
- Copying library file:
C:\HaxeToolkit\haxe\lib\lime/2,9,1/legacy/ndll/Windows/lime-legacy.ndll -> export/windows/neko/
bin/lime-legacy.ndll
- Running command: haxe export/windows/neko/haxe/release.hxml
Run Code Online (Sandbox Code Playgroud)
从上面的摘录看,似乎一切都表现正常,这让我担心,因为我不希望正常这么慢.
现在4到5秒对一些人来说可能看起来不是很多,但是Golang,javascript,java和其他超级快速编译的语言在那里 - 我被宠坏了.还有另一个我可以编译的目标,我不知道哪个会比neko vm编译更快?有什么办法可以提高编译速度或进一步调试编译速度慢的原因吗?
所以我试图使用 HaxeFlixel 创建一个平台游戏,但我遇到了一个问题:在 FlxSprite 对象的x
值超过 648 后,FlxG.collide
似乎根本不起作用。这是问题的gif。如您所见,当播放器x
< 648 时它FlxG.collision
工作正常,但当它变得更大时停止工作。
该级别由Wall
扩展的类的对象组成,FlxSprite
唯一的区别是它的构造函数加载墙图并将其immovable
属性设置为true
. FlxG.collide
被称为player
第一个参数,a FlxGroup
(包含墙壁)作为第二个参数。我不确定这是否重要,但FlxState
'ssuper.update
之前已被调用FlxG.collide
。
我在HaxeFlixel中遇到一些非常简单的问题,但我无法在网上找到任何一个引用.
我需要做的就是旋转一个FlxSprite
.在线有多个.rotation
可以设置的值的引用,但是我的精灵由于某种原因无法访问它.
任何人都可以帮到这里,我不知道从哪里开始.
我正在创建的图形是类型Player
,它扩展FlxSprite
并使用loadGraphic()
.
老实说,我不知道这个函数是如何被调用的(我确信它是一个简单的东西),我也不知道如何有效地搜索它(当我用谷歌搜索它时我没有找到它).
我在Haxe中有一组字符串变量调用
public static var variable01:String;
public static var variable02:String;
public static var variable03:String;
public static function TextContent()
{
variable01 = new String("abc");
variable02 = new String("def");
variable03 = new String("ghi");
}
Run Code Online (Sandbox Code Playgroud)
还有一个显示变量中文本的函数
_message = variable01;
_Dialogue = new FlxText(60, 400, 100, _message);
Run Code Online (Sandbox Code Playgroud)
当用户点击屏幕时,我希望显示中的变量更改为下一个.有没有办法简单地改变变量的数量?我需要能够为另一个对话框更改变量的文本,因为那时会有另一组具有相同模式的变量(text01,text02,text03等...)
haxe ×13
haxeflixel ×13
openfl ×3
compilation ×1
flashdevelop ×1
haxelib ×1
lime ×1
nme ×1
rotation ×1
sprite ×1
string ×1
trace ×1
variables ×1
z-index ×1