Я реализовал приведенный ниже код, но функции 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()
}
})
}
}