2011-09-05 12 views
5

Estoy trabajando en un juego y quiero configurar el diseño del juego de manera que funcione en varias pantallas de dispositivos. Por lo tanto, en lugar de ir a buscar imágenes desde asset's folder, estoy buscando una forma de recuperarlo del drawable folder. Entonces, después puedo obtener las imágenes de acuerdo con la pantalla del dispositivo.Cómo obtener recursos de la carpeta dibujable - AndEngine

Actualización:

lo probé usando

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

Y, me despidió con y error a continuación-

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 

lo tanto, si es posible que me haga saber. Gracias, Suri Sahani.

Respuesta

4

Aquí está el método que va a hacer esto para usted:

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

Si necesita crear una región de textura de azulejos, utilice esto:

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) 

Espero que esto ayude.

+0

Gracias por la respuesta, he intentado también que antes de que me despidan y un error, por favor vaya a mi pregunta de actualización. –

+0

@suri sahani, actualicé mi respuesta, por favor verifique – Egor

+0

@suri sahani, los últimos dos parámetros son el número de mosaicos que tiene en columnas y filas. Por ejemplo, si tiene 6 fichas: 2 filas con 3 fichas en cada una, debe pasar (3, 2) como parámetros. – Egor

3

Si sólo tiene que especificar el ID de drawble (Tales como R.drawable.icon) a continuación en función del dispositivo que se tire de la carpeta en /res/ que es más adecuado para el dispositivo:

es decir,

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

Significaría que los dispositivos grandes usaron el segundo png.

Consulte el sitio de Android para obtener más información sobre supporting multiple screens.

0

Si quiere ir a buscar imágenes de la carpeta estirable, deberías probar este ->

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