如何在kotlin中实现C语言中的函数指针

Game.kt


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)
    }
}

Renderer.kt

package com.fly.graphic

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

    init
    {

    }

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

}

DrawView.kt

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
    }
}

运行后,如下图

Screenshot_2020-03-23-18-36-38.png

发布了2 篇原创文章 · 获赞 2 · 访问量 80

猜你喜欢

转载自blog.csdn.net/qq_19863981/article/details/105055213