2011-09-05 13 views
5

Sto lavorando a un gioco e voglio impostare il layout del gioco in modo che funzioni su schermi di dispositivi multipli. Quindi, invece di recuperare immagini da asset's folder, sto cercando un modo per recuperarlo dallo drawable folder. Quindi, in seguito potrò ottenere le immagini in base allo schermo del dispositivo.Come ottenere risorse dalla cartella estraibile - AndEngine

Aggiornamento:

ho provato usando

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

E, mi ha sparato con e senza errori sotto-

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 

Quindi, se è possibile me lo faccia sapere. Grazie, Suri Sahani.

risposta

4

Ecco il metodo che farà questo per voi:

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

Se avete bisogno di creare una zona di venatura di piastrelle, utilizzare questo:

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) 

Spero che questo aiuti.

+0

Grazie per la risposta, ho provato anche che prima e mi ha licenziato un errore, per favore guarda la mia domanda di aggiornamento. –

+0

@suri sahani, ho aggiornato la mia risposta, per favore controlla – Egor

+0

@suri sahani, Gli ultimi due parametri sono il numero di tessere che hai in colonne e righe. Ad esempio se hai 6 tessere: 2 righe con 3 tessere ciascuna, dovresti passare (3, 2) come parametri. – Egor

3

Se è sufficiente specificare l'id drawble (come R.drawable.icon) quindi a seconda del dispositivo tirerà dalla cartella in /res/ che è più appropriato per il dispositivo:

cioè,

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

Significherebbe che i dispositivi di grandi dimensioni hanno utilizzato il secondo png.

Vedere il sito Android per ulteriori informazioni su supporting multiple screens.

0

Se si desidera prelevare le immagini dalla cartella drawable, si dovrebbe provare questo ->

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