2011-09-05 84 views
5

我正在開發一款遊戲,並且我想設置遊戲的佈局,使其可以在多個設備屏幕上工作。所以,我不想從asset's folder中獲取圖像,而是在尋找某種方式從drawable folder中獲取圖像。所以,以後我可以根據設備的屏幕獲取圖像。如何從可繪製文件夾獲取資源 - AndEngine

更新:

我嘗試了用

mFaceTextureRegionLifeLine = (TiledTextureRegion) TextureRegionFactory.createFromResource(mTextureLifeLine, this, R.drawable.icon, 100, 100); 

而且,它發射我和錯誤如下─

09-05 19:02:38.923: ERROR/AndroidRuntime(4161): FATAL EXCEPTION: main 
09-05 19:02:38.923: ERROR/AndroidRuntime(4161): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.engine/com.engine.BallDemo}: java.lang.ClassCastException: org.anddev.andengine.opengl.texture.region.TextureRegion 
09-05 19:02:38.923: ERROR/AndroidRuntime(4161):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2663) 
09-05 19:02:38.923: ERROR/AndroidRuntime(4161):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679) 
09-05 19:02:38.923: ERROR/AndroidRuntime(4161):  at android.app.ActivityThread.access$2300(ActivityThread.java:125) 
09-05 19:02:38.923: ERROR/AndroidRuntime(4161):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033) 
09-05 19:02:38.923: ERROR/AndroidRuntime(4161):  at android.os.Handler.dispatchMessage(Handler.java:99) 
09-05 19:02:38.923: ERROR/AndroidRuntime(4161):  at android.os.Looper.loop(Looper.java:123) 
09-05 19:02:38.923: ERROR/AndroidRuntime(4161):  at android.app.ActivityThread.main(ActivityThread.java:4627) 
09-05 19:02:38.923: ERROR/AndroidRuntime(4161):  at java.lang.reflect.Method.invokeNative(Native Method) 
09-05 19:02:38.923: ERROR/AndroidRuntime(4161):  at java.lang.reflect.Method.invoke(Method.java:521) 
09-05 19:02:38.923: ERROR/AndroidRuntime(4161):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868) 
09-05 19:02:38.923: ERROR/AndroidRuntime(4161):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626) 
09-05 19:02:38.923: ERROR/AndroidRuntime(4161):  at dalvik.system.NativeStart.main(Native Method) 
09-05 19:02:38.923: ERROR/AndroidRuntime(4161): Caused by: java.lang.ClassCastException: org.anddev.andengine.opengl.texture.region.TextureRegion 
09-05 19:02:38.923: ERROR/AndroidRuntime(4161):  at com.engine.BallDemo.onLoadResources(BallDemo.java:132) 
09-05 19:02:38.923: ERROR/AndroidRuntime(4161):  at org.anddev.andengine.ui.activity.BaseGameActivity.onCreate(BaseGameActivity.java:57) 
09-05 19:02:38.923: ERROR/AndroidRuntime(4161):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) 
09-05 19:02:38.923: ERROR/AndroidRuntime(4161):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627) 
09-05 19:02:38.923: ERROR/AndroidRuntime(4161):  ... 11 more 

因此,如果可能的話讓我知道。 謝謝,Suri Sahani。

回答

4

這裏會爲你做到這一點的方法:如果你需要創建一個平鋪的紋理區域

public static TextureRegion createFromResource(final Texture pTexture, final Context pContext, final int pDrawableResourceID, final int pTexturePositionX, final int pTexturePositionY) 

,使用此:

public static TiledTextureRegion createTiledFromResource(final Texture pTexture, final Context pContext, final int pDrawableResourceID, final int pTexturePositionX, final int pTexturePositionY, final int pTileColumns, final int pTileRows) 

希望這有助於。

+0

感謝您的回覆,我想,之前也並解僱了我一個錯誤,請看看我的更新問題。 –

+0

@suri sahani,我已經更新了我的答案,請檢查它 – Egor

+0

@suri sahani,最後兩個參數是你在列和行中的瓦片數量。例如,如果您有6個圖塊:2行,每個圖塊包含3個圖塊,則應該傳遞(3,2)作爲參數。 – Egor

3

如果單純(如R.drawable.icon),那麼根據您的設備就會把它從文件夾中/res/這是最合適的設備指定drawble ID:

/res/drawable/icon.png 
/res/drawable-large/icon.png 

意味着使用第二個PNG的大型設備。

有關supporting multiple screens的更多信息,請參閱android網站。

0

如果你想獲取從繪製文件夾的圖像,你應該試試這個 - >

Context ctx = getApplicationContext(); 
Resources r = ctx.getResources(); 
Drawable d = r.getDrawable(R.drawable.image_name);