webForumDet fria alternativet

J2ME - Skapa bakgrund med layer

5 svar · 338 visningar · startad av Elvis

ElvisMedlem sedan maj 200548 inlägg
#1

Borde inte nedanstående kodsnutt i Java J2ME, skapa en bakgrund som är 10*10 rutor stor, och där varje ruta innehåller en bild som är 70*70 pixlar stor?
Koden generar enbart en enda bildruta på 70*70 pixlar, och jag förstår inte riktigt varför?

private void createBackground(String backgroundImageName)
      throws IOException {
  
    Image backgroundImage = Image.createImage(backgroundImageName);
    int[] map = {2,0,0,0,0,0,0,0,0,0,
	2,0,0,0,0,0,0,0,0,0,
	2,0,0,0,0,0,0,0,0,0,
	2,0,0,0,0,0,0,0,0,0,
	2,0,0,0,0,0,0,0,0,0,
	2,0,0,0,0,0,0,0,0,0,
	2,0,0,0,0,0,0,0,0,0,
	2,0,0,0,0,0,0,0,0,0,
	2,0,0,0,0,0,0,0,0,0,
	1,1,1,1,1,1,1,1,1,1};

    mBackground = new TiledLayer(10, 10, backgroundImage, 70, 70);
    mBackground.setPosition(96, 0);
    for (int i = 0; i < map.length; i++) {
      int column = i % 10;
      int row = (i - column) / 10;
      mBackground.setCell(column, row, map[i]);
   }
    mAnimatedIndex = mBackground.createAnimatedTile(0);
    mBackground.setCell(0, 0, mAnimatedIndex);
    mBackground.setCell(0, 0, mAnimatedIndex);
    mLayerManager.append(mBackground);
  }
ElvisMedlem sedan maj 200548 inlägg
#2

Löste problemet via eget tangentbord. :)

Problemet är nog att varje ruta inte kan vara så stor som 70*70. När jag provade med att skapa rutor i storleken 48*48 så fungerade det.
Har inte undersökt det vidare, men det verkar finnas begränsningar vad gäller storleken på bilderna i funktionen.

LimeMedlem sedan sep. 2001961 inlägg
#3

Frågan är vad det är du är ute efter?? Vet inte om du använder TiledLayer på rätt sätt... Kolla på http://developers.sun.com/techtopics/mobility/midp/articles/game/index.html

Jag har använt tiles med storlek över 100 px så det ska inte vara problemet...

ElvisMedlem sedan maj 200548 inlägg
#4

Tack för länken och tipset!

Exprimenterar lite med spel-API:et, och är nog säker på att jag använder tiledLayer på rätt sätt. Vet inte varför första exempelkoden inte fungerade, då den andra gjorde det? Kanske var det någon annan kod i programmet som spökade.

Har lagt upp en TiledLayer med hjälp av småbilder, som ska förställa en liten spelplan. Sedan har jag placerat en figur i mitten på skärmen, som man går runt med. Men gubben är alltid placerad mitt på skärmen, och det är bakgrunden/TiledLayer jag flyttar beroende på vilket håll man för styrspaken.
Tycker det verkar vara ett bra upplägg.

API:et är väldigt effektivt har jag upptäckt och man blir som ett barn på nytt när man får programmera sina småspel. :)

LimeMedlem sedan sep. 2001961 inlägg
#5

Jepp, jag håller med. Det som de flesta verkar ha lite svårt att förstå med just TiledLayer är att den tar en bild och delar upp den i andra bilder och att mappen man skickar med är referens till den delen av bilden.

Men som du säger så är det busenkelt att med denna teknik "flytta" en bakgrund. Själv så använder jag >> och << för att flytta bitarna... fundera en stund på den du...

ElvisMedlem sedan maj 200548 inlägg
#6

Lime skrev:

Själv så använder jag >> och << för att flytta bitarna... fundera en stund på den du...

Jo, den ska jag fundera på.

Finns mycket att upptäcka då ja precis börjat utveckla för mobiltelefoner, och jag är faktiskt lite imponerad över hur lätt och smidigt det faktiskt är. Men jag ska nog förr eller senare kunna klura ut hur man använder ">>" och "<<" för att flytta delbilderna. :)

126 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
124 ms — hämta tråd, inlägg och bilagor (db)