Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/346.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在Android中拖动和删除ARCore节点?_Java_Android_Kotlin_Augmented Reality_Arcore - Fatal编程技术网

Java 如何在Android中拖动和删除ARCore节点?

Java 如何在Android中拖动和删除ARCore节点?,java,android,kotlin,augmented-reality,arcore,Java,Android,Kotlin,Augmented Reality,Arcore,我有问题,我想拖动并删除ArFragment中的对象。我尝试将ontouchlistener添加到每个节点,并将ondraglistener添加到删除区域。这是我的代码: 这是我的触摸听众 override fun onTouch(view: View, motionEvent: MotionEvent): Boolean { if (motionEvent.getAction() === MotionEvent.ACTION_DOWN) { va

我有问题,我想拖动并删除ArFragment中的对象。我尝试将ontouchlistener添加到每个节点,并将ondraglistener添加到删除区域。这是我的代码:

这是我的触摸听众

    override fun onTouch(view: View, motionEvent: MotionEvent): Boolean {
        if (motionEvent.getAction() === MotionEvent.ACTION_DOWN) {
            val data = ClipData.newPlainText("", "")
            val shadowBuilder = View.DragShadowBuilder(
                view
            )
            view.startDrag(data, shadowBuilder, view, 0)
            view.setVisibility(View.INVISIBLE)
            return true
        } else {
            return false
        }
    }
}
这是我用于删除区域的draglistener

internal class MyDragListener: View.OnDragListener {

    override fun onDrag(v: View, event: DragEvent): Boolean {
        when (event.getAction()) {
            DragEvent.ACTION_DRAG_STARTED -> {
                v.visibility = View.VISIBLE
            }
            DragEvent.ACTION_DRAG_ENTERED -> v.visibility = View.VISIBLE
            DragEvent.ACTION_DRAG_EXITED -> v.visibility = View.GONE
            DragEvent.ACTION_DROP -> {
            }
            DragEvent.ACTION_DRAG_ENDED -> v.visibility = View.GONE
            else -> {
            }
        }// do nothing
        return true
    }
}
这是我当前的删除节点(所有节点)


请帮帮我,我被卡住了,已经在谷歌上搜索了

这里有一个简单的代码片段,展示了如何创建和删除节点:

AnchorNode anchorsNode = new AnchorNode(anchor);
anchorsNode.setParent(arFragment.getArSceneView().getScene());

Node holdNode = new Node();
holdNode.setParent(anchorsNode);
holdNode.setRenderable(yourModelRenderable);

holdNode.setOnTouchListener(new Node.OnTouchListener() {

    @override
    public boolean onTouch(HitTestResult hitTestResult, 
                             MotionEvent motionEvent) {

        anchorsNode.removeChild(holdNode);
        return true;
    }
});
或者,您可以使用post中的示例代码


如果您想知道如何在ARCore中拖动节点,请阅读RW post。

谢谢,删除节点工作得很好,我已经实现了拖动,但是当我将节点拖动到我之前定义的特定位置(图像视图)时,draglistener似乎不工作。问题是所有ARCore和Sceneform功能都没有很好的文档记录。
AnchorNode anchorsNode = new AnchorNode(anchor);
anchorsNode.setParent(arFragment.getArSceneView().getScene());

Node holdNode = new Node();
holdNode.setParent(anchorsNode);
holdNode.setRenderable(yourModelRenderable);

holdNode.setOnTouchListener(new Node.OnTouchListener() {

    @override
    public boolean onTouch(HitTestResult hitTestResult, 
                             MotionEvent motionEvent) {

        anchorsNode.removeChild(holdNode);
        return true;
    }
});