Если вам нужно передать информацию из вашего GameView в вашу игру, когда представление получает событие касания, вы можете написать интерфейс GameViewEventListener
и заставить вашу игру реализовать этот интерфейс для прослушивания этих событий просмотра игры.
interface GameViewEventListener {
fun onTapEvent(rowHeight: Double, rowTouch: Double)
// other events
}
В вашем классе GameView вы должны разрешить слушателям подписываться и отписываться от этих игровых событий. Для этого вы можете просто сохранить поле экземпляра:
private var gameEventListener: GameViewEVentListener? = null
Затем, когда происходит событие, вы можете уведомить слушателя об этом:
override fun onSingleTapUp(event: MotionEvent): Boolean {
val colWidth = width / (colCount + 1) // works out the width of each column
var colTouch = event.x.toInt() / colWidth // works out what column has been selected
val rowHeight = height / ((rowCount * 2) + 1)
var rowTouch = event.y.toInt() / rowHeight
gameEventListener?.onTapEvent(rowHeight, rowTouch)
return true
}
Наконец, вам нужно реализовать этот интерфейс в вашем классе Game:
override fun onTapEvent(rowHeight: Double, rowTouch: Double) {
// do something
}
и не забывайте подписываться / отписываться при необходимости (для этого вы можете создать несколько экземпляров методов в GameView):
// whenever you want to start listening for events
gameView.gameEventListener = this
...
// whenever you want to stop listening
gameView.gameEventListener = null