2011-03-06 34 views
2

我基本上是編寫一個簡單的遊戲引擎,但我遇到了我的精靈/圖像沒有出現時應該......或根本問題!無法讓圖片移動到我想要的位置(並不斷更新)?

我會盡量保持這一點儘可能簡單。我有一個Sprite,GameEngine和Display類。在gameloop中,我有一個方法來設置我的Sprite的新位置(所以它只是設置x和y變量)。接下來我所說的變換方法,它具有以下功能:

public void transform() { 
    affineTransform.setToIdentity(); 
    affineTransform.translate(x, y); 
} 

在此之後,我再調用Draw方法在雪碧:

public void draw() { 
    graphics2D.drawImage(image, affineTransform, jFrame); 
} 

最後,我螺紋我然後調用重繪()上JFrame(顯示類)。我的塗料方法如下:

public void paint(Graphics g) { 
    g.drawImage(backbuffer, insets.left, insets.top, this); 
} 

但是除了黑屏之外沒有任何東西出現!

我也對圖形g和Graphics2D以及何時使用兩者感到困惑。 (重寫的繪圖方法使用Graphics g)。爲了記錄,我通過調用backbuffer.createGraphics()創建了類中的Graphics2D變量;

另一件令我困惑的事情是這個AffineTransform ...我已經閱讀過文檔,但我仍然完全困惑於如何以及何時使用它 - 以及它究竟做了什麼。有沒有比較簡單的解釋?

當然,這應該是工作......我錯過了什麼在這裏?

+1

考慮創建併發布的[SSCCE(http://sscce.org)(請點擊鏈接),這是一個小型的可編譯,可運行的程序,展示了您解決這個問題的最佳嘗試。然後我們可以檢查你的代碼,運行它,修改它,最好能夠幫助你修復它。 – 2011-03-06 15:41:55

回答

2
  1. 要回答你的問題的一部分:

    From the Graphics2D JavaDoc 此Graphics2D類擴展Graphics類,以幾何圖形上提供更復雜的控制,座標轉換,顏色管理和文本佈局。這是在Java(tm)平臺上呈現二維形狀,文本和圖像的基礎類。

    基本上,與Graphics2D你可以做得比你可以做得更多,比你Graphics。並用了Sun JVM 1.5+,it should be safe to cast the Graphics object you get in paint() to Graphics2D

  2. 我只注意到這一點:爲了記錄在案,我有在通過調用backbuffer.createGraphics()創建的類一個Graphics2D變量;

    你應該確保你不是在Graphics[2D]帆布(我會用這個詞來指代該Graphics[2D]對象提供了繪製區域),您以後扔掉繪製。如果您在單獨的畫布上繪製圖像,則應確保將該圖像繪製到實際的顯示畫布上。

  3. 我對AffineTransform沒有很好的解釋,但是這些可能有幫助嗎?

相關問題