0

我想更改父容器中 2 个子容器的坐标。最初,我循环遍历父容器的子容器并x,y单独更改它们......但后来只更改父容器的x,y......

问题是......我需要获得每个孩子的个人更改坐标......但是更改父容器的坐标似乎并没有改变孩子相对于舞台的坐标......

x,y问题是......当我改变父母的孩子时,我怎样才能得到孩子的改变x,y

谢谢


因此,如果我这样移动儿童容器:

function NPCMove() {
if (pointA) {
    if (ContainerOfAnimals.x < 400) {
        ContainerOfAnimals.x +=2;
    }
    else {
        pointA = false;
        pointB = true;
    }
}
else if (pointB) {
    if (ContainerOfAnimals.x > 100) {
        ContainerOfAnimals.x-=2;
    }
    else {
        pointB = false;
        pointA = true;                  
    }
}
}

我可以使用这样的方法检查玩家与父容器中每个孩子的距离localToGlobal?(NPC_Array 包含父容器)

for (var i = 0; i < NPC_Array.length; i++) {
//get children containers of each big Container
for (var j = 0; j < NPC_Array[i].children.length; j++) {
    //need child.x's global location now...
    var pt =  NPC_Array[i].localToGlobal(NPC_Array[i].children[j].x, NPC_Array[i].children[j].y);

    var distX = Math.abs(players_Array[0].x - pt.x);
    var distY = Math.abs(players_Array[0].y - pt.y);

    if (distX < 50 && distY < 50) {
        //Player is near child...
4

1 回答 1

3

你会做一个localToGlobal:

var stage = new createjs.Stage("test");

var p = new createjs.Container();
p.x = 200;
p.y = 200;

var c1 = new createjs.Shape();
c1.graphics.beginFill("#FF0000");
c1.graphics.drawRect(0, 0, 100, 100);
c1.graphics.endFill();

var c2 = new createjs.Shape();
c2.graphics.beginFill("#00FF00");
c2.graphics.drawRect(0, 0, 100, 100);
c2.graphics.endFill();
c2.x = 100;

p.addChild(c1);
p.addChild(c2);

stage.addChild(p);

stage.update();

var pt = p.localToGlobal(c2.x, c2.y);
alert("Stage x of c2: " + pt.x);

看到它在行动

于 2013-08-16T17:57:53.067 回答