Estoy usando Adobe Animate HTML5 Canvas. EaselJS también se aplicaría.
¿Cómo puedo comprobar si un símbolo/MC es hijo de otro símbolo/MC?
Por lo tanto, se agrega un símbolo/MC como elemento secundario de lensParentLeft a continuación. Luego quiero verificar si es un hijo de ese padre en una función posterior:
function onMouseUp(evt){ var item = evt.currentTarget; item.drag = false; var pt = item.localToLocal(item.dot.x, item.dot.y, item.LFLensHolder.hitBox); if(item.LFLensHolder.hitBox.hitTest(pt.x, pt.y) ){ item.x = item.LFLensHolder.x; item.y = item.LFLensHolder.y; item.lensParentLeft.addChild(item); } } La última función es la siguiente, probablemente en la declaración de condición if(item.drag) :
function onMouseMove(evt){ var item = evt.currentTarget; if (item.drag){ var pt = item.parent.globalToLocal(evt.stageX, evt.stageY); item.x = pt.x - item.offset.x; item.y = pt.y - item.offset.y; } }Puede utilizar el método contains . Hace una verificación recursiva de los padres hasta el escenario para encontrar un antepasado.
https://createjs.com/docs/easeljs/classes/Container.html#method_contains
if (someParent.contains(evt.currentTarget)) { // Do something } Tenga en cuenta que contains también devolverá verdadero si verifica un símbolo contra sí mismo.
Esto funcionó para mí:
if (item.parent == this.lensParentLeft) { //do stuff } En este caso, solo quería cambiar el padre del símbolo con un nombre de instancia del item de lensParentLeft al escenario.
Entonces, agregué this.addChild(item); dentro de los tirantes.