Какого черта я пропускаю? Реализация Node.addLifecycleListener: функции интерфейса OnActivation и OnDeactivation не запускаются - PullRequest
0 голосов
/ 12 апреля 2020

Я реализовал приведенный ниже код, но функции OnActivation и OnDeactivation, реализованные в разделе «addLifecycleListener», никогда не срабатывают, даже если функция OnUpdated срабатывает. Ясно, что мой код несовершенен, но после двух дней работы в Интернете, отслеживания кода и точек останова я нахожусь в тупике.

Мои исследования показывают, что интерфейс TransformChangedListener действительно отображается в файле Node.class. Если я помещаю точку останова в Node.class в функцию «private void deactivate ()», она явно срабатывает каждый раз, когда фокус перемещается от выбранного узла к другому. Тем не менее, мой тост никогда не отображается, и точка останова, которую я поместил в код, где я вызываю тост, никогда не срабатывает.

ПОЖАЛУЙСТА, попробуйте и помогите. На данный момент я приму любое предложение на всех. У меня нет идей.

    var arFragment: ArFragment
    var cubeRenderable: ModelRenderable

    arFragment = supportFragmentManager.findFragmentById(R.id.ux_fragment) as ArFragment

    MaterialFactory.makeOpaqueWithColor(
        this,
        com.google.ar.sceneform.rendering.Color(com.google.ar.sceneform.rendering.Color(Color.YELLOW))
    )
        .thenAccept { material ->

            cubeRenderable = ShapeFactory.makeCylinder(0.05f, 0.25f, Vector3.zero(), material)
            cubeRenderable.isShadowCaster = false
            cubeRenderable.isShadowReceiver = false

            arFragment!!.setOnTapArPlaneListener { hitResult, plane, motionEvent ->

                //Add node A based on the hitResult
                val anchorA = hitResult.createAnchor()
                val anchorNodeA = AnchorNode(anchorA)
                anchorNodeA.setParent(arFragment.arSceneView.scene)

                val nodeA = TransformableNode(arFragment.transformationSystem)
                nodeA.renderable = cubeRenderable
                nodeA.setParent(anchorNodeA)

                arFragment.arSceneView.scene.addChild(anchorNodeA)

                nodeA.addLifecycleListener(object : Node.LifecycleListener {
                    override fun onActivated(node: Node) {
                        Toast.makeText(
                            applicationContext,
                            "Node activated",
                            Toast.LENGTH_LONG
                        )
                            .show()
                    }

                    override fun onUpdated(node: Node, frameTime: FrameTime) {
                        Toast.makeText(
                            applicationContext,
                            "Node updated",
                            Toast.LENGTH_LONG
                        )
                            .show()
                    }

                    override fun onDeactivated(node: Node) {
                        Toast.makeText(
                            applicationContext,
                            "Node deactivated",
                            Toast.LENGTH_LONG
                        ).show()
                    }
                })
            }
        }
...