我有以下简单的 haxe/openfl 代码,但无法弄清楚为什么它应该为一个目标编译而为其他目标编译失败。我的理解是 OpenFL 应该将 flash API 引入所有支持的语言/平台。
//test.hx
import flash.display.Sprite;
class Test {
static function main() {
var g:Sprite = new Sprite();
g.graphics.drawPath([1, 2], [1.1, 1.2,2.1,2.2]); //problem line
}
}
为 neko 目标编译时编译正常:
$ haxelib run openfl build project.xml neko
但是编译到flash的时候会报错:
$ haxelib run openfl build project.xml flash
./Test.hx:5: characters 23-29 : Array<Int> should be flash.Vector<Int>
./Test.hx:5: characters 23-29 : For function argument 'commands'
这对我来说看起来很奇怪,因为从错误消息看来,对于一个目标,该函数drawPath
需要Array
类型参数,而对于另一个目标,相同的函数需要Vector
类型参数。
知道为什么会发生这种情况,以及如何使这对两个目标都有效吗?
顺便说一句,如果我将其编译为 HTML5,我得到:
$ haxelib run openfl build project.xml html5
./Test.hx:5: characters 3-22 : flash.display.Graphics has no field drawPath
该功能甚至在这里都不存在。上面的结果是使用 Haxe 3.0.1 和截至 2014 年 2 月的最新 openfl。