我在定位html5时遇到显示对象的绘制顺序问题。请注意,如果我为flash编译它按预期工作。问题是如此基本我很难相信这是NME的一个问题,而是我缺少的一些关键问题。
假设NME与Flash类似,那么下面的代码应该会产生一个红色矩形,顶部有一个较小的蓝色矩形。但是当我为html5构建时,红色矩形被绘制在顶部!
package;
import nme.display.Bitmap;
import nme.display.Shape;
import nme.display.Sprite;
import nme.display.StageAlign;
import nme.display.StageScaleMode;
import nme.events.Event;
import nme.Lib;
class Main extends Sprite
{
public function new() {
super();
addEventListener(Event.ADDED_TO_STAGE, init);
}
private function init(e) {
var redContainer : Sprite = new Sprite();
var redBox : Shape = new Shape();
redBox.graphics.beginFill(0xaa0000);
redBox.graphics.drawRect(0, 0, 100, 100);
var blueBox : Shape = new Shape();
blueBox.graphics.beginFill(0x0000aa);
blueBox.graphics.drawRect(0, 0, 50, 50);
// Add the sprite container
this.addChild(redContainer);
// Add a blue box, which should appear on top of the (empty) container
this.addChild(blueBox);
// Add a red box to the container.
// It should appear *below* the blue box since the container is below
// the blue box, but the red box is drawn on top of the blue box!
redContainer.addChild(redBox);
}
static public function main() {
Lib.current.addChild(new Main());
}
}
我在Chrome,Firefox和IE9中都有相同的行为。
答案 0 :(得分:1)
我构建你的代码时工作正常: my html5 build。 尝试重新安装最新版本的NME(最新的Haxe)。
在Jeash,Haxe Javascript库中仍然存在DisplayObjects排序问题,但是现在只有当你想稍后重新排序对象时才会出现:
this.addChild(redBox);
this.addChild(blueBox);
this.swapChildren(blueBox, redBox);
我尝试删除并再次添加显示对象,但这不起作用。 setChildIndex也不起作用(https://bugs.launchpad.net/jeash/+bug/1005791)。