2010-01-16 18 views
9

Attualmente sto avviando un motore di gioco in Android, prima incursione nella piattaforma e ho le nozioni di base, tuttavia sono incerto sul modo migliore per avvicinarsi all'indipendenza della risoluzione quando si usa SurfaceView per disegnare grafica.Risoluzione indipendenza in Android SurfaceView

ricerca di indicazioni su come mantenere il gioco/sprite ecc tutti guardando la stessa indipendentemente dello schermo, ovviamente, non sarebbe efficiente per scalare tutti gli sprite ogni fotogramma o conservare molte varianti per le risoluzioni diverse

risposta

5

Dovresti ridimensionare gli sprite quando li carichi. Sto indovinando che li stai caricando come Bitmap da una risorsa, giusto? Se questo è il caso, allora tutto quello che dovete fare è qualcosa di simile:

BitmapFactory.Options options = new BitmapFactory.Options(); 
options.outHeight = spriteHeight * scale; 
options.outWidth = spriteWidth * scale; 

Bitmap sprite = BitmapFactory.decodeResource(mContext.getResources(), R.drawable.sprite, options) 

Dove scala si basa sulla variazione della dimensione dello schermo.

+0

Cheers Casey, con questa soluzione pensi che sarebbe meglio incorporare gli sprite più alti possibili per le risoluzioni Android più grandi come il Nexus e quindi ridimensionare la grafica per i dispositivi più vecchi? – Tom

+0

Penso che sia così, le cose tendono ad apparire migliori quando le riduci di più rispetto a quando le riduci. – CaseyB

+0

Così ho provato questo codice, e ho esaminato la documentazione .. per qualche motivo lo sprite viene sempre emesso alla stessa dimensione anche se ho hardcode outHeight e outWidth variables. – Tom

1

ci sono due approcci semplici:

Prime:

su creazione di una visione superficiale, si chiede:

onSizeChanged (int w, int h, int oldw, int oldh) 

Creare un paio di variabili globali, x & y, quindi se si ignora questo con:

onSizeChanged(int w, int h, int oldw, int oldh){ 
this.w=w; 
this.h=h; 
} 

Poi in qualsiasi disegno o gioco calcoli è possibile utilizzare la finestra w e h.

Secondo:

chiamata getWidth() & getHeight() nel disegno e gioco calcoli.

Buona fortuna con il tuo gioco!

+0

Grazie Laurence, la mia domanda è più mirata a come affrontare il ridimensionamento se in bitmap in modo che il gioco appaia uguale su tutte le piattaforme ... – Tom

Problemi correlati