2012-07-26 21 views
3

我正在使用andEngine爲Android開發遊戲。我必須動態更改精靈圖像。在J2ME中,我使用Sprite.setImage()indengine

sprite.setImage("img.png"); 

但在andengine,我沒能找到方法

//sprite.setImage(?); -In andengine 

任何解決方案?

回答

7

我認爲使用TextureRegion是一個更好的方式來改變精靈的形象。

添加以下代碼org.anddev.andengine.entity.sprite

public void setTextureRegion(TextureRegion textureRegion) { 
    this.mTextureRegion = textureRegion; 
} 

然後你就可以用這種方法改變形象。您可以檢查andengine示例以瞭解如何從圖像創建紋理區域。

PS,如果mTextureRegion是最終的,只刪除final語法。

+0

這種方式是改變精靈圖像的最簡單的方法..謝謝..! – Andy 2012-09-04 08:40:21

+0

這已經很久沒有可能。至少2年前,該字段mTextureRegion已被標記爲final,源代碼如下https://github.com/nicolasgramlich/AndEngine/blob/GLES2/src/org/andengine/entity/sprite/Sprite.java?source= C – Sojurn 2014-03-03 05:20:01

0

我相信你必須手動完成,即分離/隱藏精靈並附加/顯示不同的精靈。

+0

我必須爲單個精靈動態地更改5到6個圖像,所以我必須使用6個不同的精靈。任何可以使用單個精靈完成dis的方法? – Andy 2012-07-26 12:07:58

+0

是的,或者你也可以使用動畫精靈。不要擔心精靈的數量,而引擎應該很容易處理。 – JohnEye 2012-07-26 12:11:35

+0

我正在使用一個動畫的精靈,我必須替換另一個5到6個圖像,它又有幾幀。有沒有一種簡單的方法,我可以做dis而不創建一個不同的精靈? – Andy 2012-07-26 12:18:26

3

您需要使用TiledSprite而不是簡單的SpriteTiledSprite需要TiledTextureRegion作爲參數。您創建一個包含圖像的單一TiledTextureRegion,其中包含需要在精靈上設置的所有小圖像。然後你打電話setCurrentTileIndex(index)其中index是你需要放置在精靈上的圖像的索引。

+0

那圖像的寬度和高度約束是什麼? – Andy 2012-07-26 12:24:49

+0

我需要檢查像素級別的碰撞,所以我使用PixelPerfectAnimatedSprite,所以我也可以檢查TiledSprite的像素級別碰撞? – Andy 2012-07-26 12:55:34

+0

@安迪抱歉,我沒有使用像素完美的碰撞,所以我不知道。我根據精靈編寫自己的碰撞函數。關於寬度和高度,你是指包含小圖像還是小圖像的大圖像? – 2012-07-26 13:10:05

-1

我解決了這個問題,通過分離我的精靈,爲我的精靈分配一個新的精靈(mySprite = new Sprite(...)),並再次附加我的精靈。