private AnchorNode anchorNode;
private void removeAnchorNode(Node nodeRemove) {
//Remove an anchor node
if(nodeRemove instanceof AnchorNode){
if(((AnchorNode)nodeRemove).getAnchor() != null) {
((AnchorNode) nodeRemove).getAnchor().detach();
}
}
if (!(nodeRemove instanceof Camera) && !(nodeRemove instanceof Sun)) {
nodeRemove.setParent(null);
}
}
我的删除功能在上面
FloatingActionButton dlt =(FloatingActionButton) findViewById(R.id.delete);
dlt.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//delete();
removeAnchorNode(anchorNode);
}
});
在这一部分我调用了函数,但是当它工作时它只删除最后添加的对象,然后它不适用于其他对象。我的错在哪里?我找不到它。
你的removeAnchorNode函数似乎足够正常。问题可能在于您“选择”anchorNode的方式。
我猜你可能是在你创建的anchorNode对象中存储了最后创建的AnchorNode
,因此delete函数最初起作用。但是当您再次执行此操作时,需要选择要删除的节点。虽然Sceneform负责选择节点(当你触摸它时),你需要在anchorNode变量中明确地存储引用,否则你只是一次又一次地传递已经删除的AnchorNode
。