如何在kotlin中實現C語言中的函數指針


Game.kt

<code>package com.fly.game

import android.annotation.SuppressLint
import android.app.Activity
import android.content.pm.ActivityInfo
import android.os.Bundle
import android.widget.Toast
import com.fly.graphic.DrawView
import com.fly.graphic.Renderer

class Game : Activity()
{
lateinit var game_view : DrawView
var renderer : Renderer = Renderer()

@SuppressLint("SourceLockedOrientationActivity")
override fun onCreate(savedInstanceState: Bundle?)
{
super.onCreate(savedInstanceState)
requestedOrientation = ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE

renderer.SetDisplay{
Toast.makeText(this,"test",Toast.LENGTH_SHORT).show()
}

game_view = DrawView(this)
game_view.SetRenderer(renderer)

setContentView(game_view)
}
}/<code>


Renderer.kt

<code>package com.fly.graphic

class Renderer()
{
var render : () -> Unit = {};

init
{

}

fun SetDisplay(Display: () -> Unit)
{
render = Display
}

}/<code>


DrawView.kt

<code>package com.fly.graphic

import android.content.Context
import android.graphics.Canvas
import android.view.View

open class DrawView(context : Context) : View(context)
{
private var renderer : Renderer = Renderer()

init
{

}

override fun onDraw(canvas: Canvas?)
{
super.onDraw(canvas)
renderer.render()
}

fun SetRenderer(r : Renderer)
{
renderer = r
}
}/<code>


運行後,如下圖


如何在kotlin中實現C語言中的函數指針


分享到:


相關文章: