代码之家  ›  专栏  ›  技术社区  ›  danny

如何在kotlin中使用图形2d与paint()

  •  0
  • danny  · 技术社区  · 1 年前

    我想开始制作一个2d视频游戏,我找到了一个java教程。然而,我想使用kotlin,因为我听说它更好,我是java和kotlin编程的新手,我需要把这个

    Graphics2d g2 = Graphics2D(g)
    

    在科特林,我无论如何都没有通过搜索找到。

    如果你想知道(但我认为这无关紧要)JPanel类文件在这里:

    import java.awt.Color
    import java.awt.Dimension
    import java.awt.Graphics
    import java.awt.Graphics2D
    import javax.swing.JPanel
    
    
    class GamePanel : JPanel(), Runnable{
        //Screen settings
        var originalTileSize = 16
        var scale = 3
        var tileSize = originalTileSize * scale
        var maxScreenCol = 16
        var maxScreenRow = 12
        var gameThread = Thread()
        var screenWidth = maxScreenCol * tileSize // 768
        var screenHeight = maxScreenRow * tileSize // 576 TO CHANGE????
    
        init {
            this.setPreferredSize(Dimension(screenWidth, screenHeight))
            this.setBackground(Color.BLACK)
            this.setDoubleBuffered(true)
        }
    
        // Game Thread code
        public fun startGameThread(){
            gameThread = Thread(this)
            gameThread.start()
        }
    
        // run the game loop
        public override fun run(){
            while (gameThread != null){
                update()
                repaint()
            }
        }
    
        public fun update(){
            // Nothing for now
        }
    
        public override fun paintComponent(g : Graphics) {
            super.paintComponent(g)
            Graphics2D g2 = Graphics2D(g)
        }
    }
    
    1 回复  |  直到 1 年前
        1
  •  1
  •   Yahor Barkouski    1 年前

    在Kotlin中,使用 as 关键字,例如:

    val g2 = g as Graphics2D
    

    您也可以使用带有 as? ,返回 null 如果无法进行强制转换,而不是抛出异常:

    override fun paintComponent(g: Graphics) {
        super.paintComponent(g)
        val g2 = g as? Graphics2D
        if (g2 != null) {
            // Use g2 as needed...
        }
    }