Stage.addchild将物体带到前面
问题描述:
我有一个排序游戏,有10个元素以正确的顺序拖放。Stage.addchild将物体带到前面
当我开始拖动一个物体时,我希望它出现在所有其他物体的前面。由于createjs没有zindex属性,我被告知用stage.adchild(sequenceNumbers)将该项目读到舞台上;
如何正确地将此添加到mousedown或pressmove功能?
for (var a = 0; a < gameData.Terms.length; a++) {
rect = new createjs.Shape();
rect.graphics.beginFill("blue").drawRoundRect(0, 0, 350, 30, 8);
rect.name = a;
var name = new createjs.Text(gameData.Terms[a].Definition, "14pt arial bold", "white");
name.id = gameData.Terms[a].Name;
name.textAlign = "left";
name.y = rect.y + 2;
name.x = rect.x + 4;
var sequenceNumbers = new createjs.Container();
sequenceNumbers.landingSpot = landingSpots[a];
landingSpots[a].sequenceNumber = sequenceNumbers;
sequenceNumbers.addChild(rect, name);
stage.addChild(sequenceNumbers);
sequenceNumbers.x = 300;
sequenceNumbers.y = xOffset;
xOffset += 40;
var startPositionX;
var startPostitionY;
sequenceNumbers.on('mousedown', function (e) {
stage.adchild(sequenceNumbers);
var posX = e.stageX;
var posY = e.stageY;
startPositionX = e.stageX;
startPositionY = e.stageY;
this.offset = { x: this.x - posX, y: this.y - posY };
});
sequenceNumbers.on("pressmove", function (evt) {
evt.currentTarget.x = evt.stageX;
evt.currentTarget.y = evt.stageY;
var posX = evt.stageX;
var posY = evt.stageY;
this.x = posX + this.offset.x;
this.y = posY + this.offset.y;
stage.update();
});
sequenceNumbers.on("pressup", function (evt) {
var stuffUnderMouse = landingSpotContainer.getObjectsUnderPoint(evt.rawX, evt.rawY, 0);
var oldSpot = evt.currentTarget.landingSpot;
var spotToMoveTo = null;
for (var i = 0; i < stuffUnderMouse.length; ++i) {
if (typeof stuffUnderMouse[i].landingSpot !== 'undefined' && stuffUnderMouse[i].landingSpot != oldSpot) {
spotToMoveTo = stuffUnderMouse[i].landingSpot;
break;
}
}
}
答
只需再次添加孩子其父容器:
evt.currentTarget.parent.addChild(evt.currentTarget);
应该做的鼠标事件函数内的伎俩。
注意该函数被称为addChild而不是adchild。
我一直在回应http://*.com/questions/33109223/adjusting-zindex-with-createjs/33109263#33109263 - 请参阅我的最新评论。请注意,重新发布很难提供帮助。 – Lanny