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
}
}
运行后,如下图

本文介绍了一个简单的2D游戏开发流程,使用自定义的DrawView和Renderer类来处理游戏视图和渲染逻辑。游戏在横屏模式下运行,并在启动时显示测试消息。

1058

被折叠的 条评论
为什么被折叠?



