gpt4 book ai didi

javascript - CreateJS - 更新子级与父级的坐标

转载 作者:行者123 更新时间:2023-11-28 20:21:15 25 4
gpt4 key购买 nike

我想更改父容器内 2 个子容器的坐标。最初,我循环遍历父容器的子容器并单独更改它们的 x,y...但随后更改父容器的 x,y 更有意义>...

问题是...我需要获取每个子项的单独更改坐标...但是更改父容器的坐标似乎不会更改子项相对于舞台的坐标...

问题是...当我改变 parent 的x,y时,如何获得 child 的x,y变化?

谢谢

<小时/>

因此,如果我像这样移动 child 的容器:

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...

最佳答案

你会做一个 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);

See it in action

关于javascript - CreateJS - 更新子级与父级的坐标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18278834/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com