Thoughts on why you are seeing slowdown:

1) Perhaps you don't have save/restore state implemented correctly and
the OS is starting a second instance of your game when you switch
perspectives?  (the 2 running at once theory)

2)  Perhaps you are drawing more somehow in landscape?

3)  Perhaps you are resizing a portrait background into landscape
every frame?  (This is the one I'd look at first.  Make sure you are
drawing bitmaps 1-to-1 and not stretching or resizing every frame.  If
you are going to need to rotate, resize, etc use a Transform, but make
sure not to do anything computationally intensive frame-by-frame
unless you have to - EG if you need to scale your background to fit
the new orientation, do that _once_ onto a new canvas/bitmap and
redraw that bitmap onto the surface.

On Oct 20, 10:43 am, mscwd01 <[EMAIL PROTECTED]> wrote:
> Thanks for the update...
>
> I believe I am using a SurfaceView, I edited the LunarLander game
> which has things like SurfaceHolders I am making use of. I use a
> simple Canvas and draw onto it in much the same way you described,
> i.e. base images first then draw another image on top. I was just
> wondering whether Android had a layer manager much like J2ME does in
> the GameCanvas class.
>
> Anyway thanks for your help, I believe I can implement the game now.
>
> Oh, one last question - why does my game run faster when the emulator
> is in a portrait orientation? When I switch to landscape the game
> slows by at least 20 FPS. Is this normal?
>
> Thanks
>
> On Oct 20, 3:55 pm, Robert Green <[EMAIL PROTECTED]> wrote:
>
> > Something like that.  Play around with it and I'm sure you'll find a
> > way to make it work.
>
> > Here's how I do mine:
>
> > When initializing the game/map, I load the map resource and draw it
> > onto a bitmap.
>
> > My Main Loop:
>
> > update()
> > draw()
>
> > My update method does:
>
> > updatePhysics (moves players, checks collisions)
> > updateAI (figures out next move for AI players)
> > updateState (for state transitions)
> > updateAnimations
> > updateSound
>
> > My draw method does:
>
> > draws background/map bitmap to surface canvas
> > draws objects or anything under the players to canvas
> > draws players to surface canvas
> > draws FX, explosions, etc over players to surface canvas
> > draws scores, text or anything on the very top to surface canvas
>
> > I've been very careful to write efficient math for physics, AI and
> > collisions.  I also was careful so as to draw the absolute minimum as
> > 2d drawing is a little expensive in android.  Overall I get a
> > framerate around 40-45 FPS on my emulator.
>
> > Also - if you're not already, use a SurfaceView.
>
> > On Oct 19, 6:37 pm, mscwd01 <[EMAIL PROTECTED]> wrote:
>
> > > Thanks for your reply,
>
> > > So just to recap...
> > > I draw the main maze png background image and then have another image
> > > I draw on top of this which is fully transparent apart from lines of
> > > non transparent pixels which represent the maze walls. That sounds
> > > nice and easy.
>
> > > To make this work I'd need to find out the center point (coordinates)
> > > of the screen, determine which coordinates the playing piece current
> > > fills (i.e. y,x,y+10,x+10) and then check to see whether any of these
> > > pixels are also occupied by the mask "walls" layer.
>
> > > Could you let me know the best way to implement multiples layers, i.e.
> > > the maze background image, the mask walls image and the playing piece.
>
> > > Also could you let me know how you retrieve a section of pixels from
> > > an image, so I can determine whether the mask layer for example has
> > > walls in a section occupied by the playing piece.
>
> > > Many thanks!
>
> > > On Oct 19, 10:38 pm, Robert Green <[EMAIL PROTECTED]> wrote:
>
> > > > How did you express your walls programmatically?  Did you use tiles or
> > > > did you draw lines?
>
> > > > If you used tiles, the collision detection is very easy.  If the next
> > > > move will cause the player to enter the tile, game over.
>
> > > > If you drew the walls on a full coordinate system, you have to keep
> > > > the coordinates that you used in an array or list or wherever and
> > > > write a little algorithm that checks to see if the position of the
> > > > player on the next tick will intersect with a wall.
>
> > > > I used the second method for my game and it works very well.
>
> > > > I just wrote all this then reread and saw that you used a png
> > > > background.  Here's what you can do to use that:
>
> > > > Create a second background that is only black and white and masks the
> > > > png background you have.  Load both but of course only draw your
> > > > normal one.  Load the mask into a bitmap and for collision detection,
> > > > just call bitmap.getPixel() for the next position of your player.  If
> > > > it's the wall color (let's say you use white for walls), there is a
> > > > collision.
>
> > > > On Oct 19, 5:51 am, mscwd01 <[EMAIL PROTECTED]> wrote:
>
> > > > > I am fairly new to android, although I have been using Java for a
> > > > > while.
>
> > > > > I am creating a 2d maze based game which consists of a bunch of walls
> > > > > and a rotating player piece (which rotates 360 degrees), while trying
> > > > > to get from the entrance to the exit of the maze - without touching
> > > > > the walls.
>
> > > > > My question is, what is the best way to represent the walls of the
> > > > > maze and the playing piece (which rotates, hence doesn't always occupy
> > > > > the same location on screen) so that I can effectively check for
> > > > > collisions between the two entities?
>
> > > > > The level itself will be quite small so the maze will be a png
> > > > > background image which moves when the player moves up, down, left or
> > > > > right (the playing piece will remain at the center of the screen). I
> > > > > was thinking of drawing a polygon object over the walls of the png
> > > > > image and try to detect collisions between the rectangle playing piece
> > > > > and the polygon shape - is this possible?
>
> > > > > There may be a better way, if there is please let me know!
>
> > > > > Thanks- Hide quoted text -
>
> > > > - Show quoted text -
>
>
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to android-developers@googlegroups.com
To unsubscribe from this group, send email to
[EMAIL PROTECTED]
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to