blog music artwork youtube channel contact
kategorie aktywność fizyczna
filozofia i nauka
informatyka
sztuka i twórczość
wszystkie wpisy
linki wpisy w rss
komentarze w rss
wirtualna biblioteka zajawki droga
aikido
ostre koło



tagi

J2ME Scrolling Canvas

I’ve started to learn J2ME yesterday and I was looking for a easy way to scroll canvas in J2ME but without success (some people were even arguing that it’s impossible) and then I figured something out so here’s a little recipe…

Instead of putting graphics directly on the screen like in this part of an example code:

class CanvasList extends Canvas implements CommandListener{
    private Image image;

    public void paint(Graphics g){
       g.setColor(53,53,53); g.fillRect(0,0,width,height_that_is_too_big_to_fit);

We have to put it into the memory first:

class CanvasList extends Canvas implements CommandListener{
    // private Image image;

    public void paint(Graphics g){
       Image image = Image.createImage(width, put_here_max_height_of_your_picture);
       Graphics ig = image.getGraphics();
       ig.setColor(53,53,53); ig.fillRect(0,0,width,height_that_is_too_big_to_fit);

As you maybe figured out, you should use something else than a rectangle to see the difference – this is only an example. Now we need to display our canvas on the screen:

g.drawImage(image, 0, 0, Graphics.TOP | Graphics.LEFT);

And the most important part – how to make this thing move? It’s very simple. If you want to look at the bottom of canvas that is outside the screen just do something like this:

g.translate(0,-50); // moving graphic 0 px horizontal and -50 vertical
g.drawImage(image, 0, 0, Graphics.TOP | Graphics.LEFT);
repaint();

You can move your canvas using phone keypad by placing a variable in g.translate and changing it’s value after pressing a key. Here is little example:

protected void keyPressed(int keyCode){
    if (keyCode==56)
        { if (y_pos>(((canvas_vert_size-screen_height)*-1)-5)) { y_position = y_position-10; }}
    if (keyCode==50) { if (y_pos<0) { y_pos = y_pos+10; }}
    display.setCurrent(canvas);
    repaint();
    }

We are using y_pos for y coordinates passed to g.translate. Hope that’ll help somebody because I think it’s one of most common problems with graphic applications on mobile devices.

1 komentarz »

  1. thx, I just was thinking how to solve it :)

    tapczan — 30 października 2009 @ 02:51

W trakcie dyskusji zakłada się, że dyskutant:
  • mówi prawdę;
  • dba o zrozumiałość swojej wypowiedzi;
  • jest w stanie porzucić swoje stanowisko gdy jego argumenty zostaną obalone;
  • zgadza się na przestrzeganie zasad dotyczących formy wypowiedzi;
Zasady dotyczące formy wypowiedzi:
  • prawo do swobodnego wyrażania swoich poglądów, jeśli nie naruszają one pozostałych zasad;
  • gotowość do merytorycznego uzasadnienia swojego stanowiska;
  • branie pod uwagę rzeczywistych poglądów oponenta (które wyraził explicite) oraz ich logicznych wniosków;
  • obrona poglądów za pomocą twierdzeń przemawiających za ich akceptacją;
  • rozwijanie argumentacji odwołującej się do założeń przyjętych przez oponenta (nie podpieramy się autorytetami, wartościami ani hierarchiami, których on nie uznaje dot. to szczególnie tematów poświęconych przekonaniom religijnym i etyce)

Od każdego wymagana jest także rzetelność, kultura słowa oraz szacunek do pozostałych dyskutantów. Nie akceptowane są próby manipulacji, uciekanie się do emocji, wulgarne wypowiedzi oraz argumentacja pozamerytoryczna. Jeśli nie jesteś w stanie zastosować się do powyższych zasad, Twój komentarz prawdopodobnie zostanie usunięty.

Opracowano na podstawie: "Etyka międzyludzkiej komunikacji", red. J. Puzynina, wyd. Semper, Warszawa 1993

Kanał RSS z komentarzami do tego wpisu. TrackBack URL

Dodaj komentarz