我正在使用KineticJS,但是当我尝试删除舞台上的一个图层上的两个组件(一个Kinetic.Image实例和一个Kinetic.Text实例)时,我得到未捕获的typerror,即使我把我的代码放在try catch块中。未捕获的TypeError:无法调用未定义的方法'getLayer'
什么是导致错误?
这是相关代码
var arr = myStage.getChildren()[1].get(".sceneComponents");
for (var i =0; i<arr.length; i++)
{
try
{
//arr[i].setVisible(false); // Setting its visibility to false works absolutely fine
arr[i].remove(); //Trying to remove like this throws the uncaught error
}
catch(ex)
{
console.log(ex);
}
}
这是完全错误日志。
Uncaught TypeError: Cannot call method 'getLayer' of undefined kinetic.js:37
Kinetic.Node.getLayer kinetic.js:37
Kinetic.Shape.drawHit kinetic.js:42
Kinetic.Container.drawHit kinetic.js:41
Kinetic.Layer.drawHit kinetic.js:44
Kinetic.Container.drawHit kinetic.js:41
Kinetic.Container.draw kinetic.js:41
tick mainScript.js:221 //This is refering to the myStage.draw() line in my code
UPDATE:
当我用它来删除组件 -
layer.arr[i].remove();
我得到在同一行
TypeError: Cannot read property '0' of undefined
登录的ARR,看看是否有存在价值是不应该存在。 – Klaasvaak
@Klaasvaak他们绝对没问题。我的怀疑正在走向我使用删除功能的方式。在文档中,它没有解释如何使用它。我使用它的方式是对的吗? –
您可以尝试使用Layer.remove – Klaasvaak