Hirdetés

Új hozzászólás Aktív témák

  • Alvin_ti4200

    félisten

    válasz Lortech #1127 üzenetére

    van két osztályom (a harmadik nem érdekes):

    SPRITECANVAS.JAVA

    import javax.microedition.midlet.*;
    import javax.microedition.lcdui.*;
    import javax.microedition.lcdui.game.*;
    import java.util.*;

    public class SpriteCanvas extends GameCanvas{
    public Command exitCommand;
    public Sprite1 sprite;

    BackgroundLayer bgLayer;
    LayerManager lm;

    public SpriteCanvas() throws java.io.IOException {
    super(false);

    exitCommand=new Command("Kilépés",Command.EXIT,0);
    addCommand(exitCommand);

    sprite=new Sprite1();
    sprite.setPosition(25,50);
    bgLayer=new BackgroundLayer();
    lm=new LayerManager();
    lm.append(sprite);
    lm.append(bgLayer);
    }

    void render(){
    Graphics g=getGraphics();

    g.setColor(255,255,255);
    g.fillRect(0,0,getWidth(),getHeight());

    int dx=0,dy=0;

    int[] tomb1={25,85,145,25,85,145,25,85,145};
    int[] tomb2={50,50,50,110,110,110,170,170,170};
    Random rnd=new Random();
    int veletlen=rnd.nextInt(8);
    dx=tomb1[veletlen];
    dy=tomb2[veletlen];
    sprite.next(dx,dy,getWidth(),getHeight(),veletlen);

    lm.paint(g,0,0);
    flushGraphics();

    }
    }

    SPRITE1.JAVA

    import javax.microedition.midlet.*;
    import javax.microedition.lcdui.*;
    import javax.microedition.lcdui.game.*;
    import java.util.*;

    public class Sprite1 extends Sprite{
    static final int width=60;
    static final int height=60;

    public int mode=0;
    static Random rnd=new Random();
    static int[] frame_sequence_1={0,1,2,3,4,5,6,7,8};

    int framecount=0;

    public Sprite1() throws java.io.IOException{
    super(Image.createImage("/hello/gomb2.png"),width,height);
    setFrameSequence(frame_sequence_1);
    }

    public void next(int dx, int dy, int maxX, int maxY, int randomize){
    setPosition(dx,dy);
    setFrame(randomize);
    }
    }

    A lényeg az lenne, hogy a render vagy next hivások között legyen monjuk egy másodpercnyi idő, amíg a lenyomott gombot (még nincs deklarálva) meg tudom vizsgálni, hogy mi volt az. Apropó létezik olyan függvény, amely a lenyomott gomb kódját adja vissza integerben? Mert keyPressed(int number) függvény van, csak az akkor fut le, ha az adott gombot nyomom meg, nekem meg pont fordítva kéne, hogy lenyomás után el tudjam dönteni, hogy melyik számú (49-57 [KEY_NUM1-KEY_NUM9]) gomb volt az és ennek megfelelően csinálni egy szép nagy case elágazást.

    A MainMidlet osztályban az egyik menüponthoz hozzárendeltem ezt az eseményt:

    try{
    spritecanvas=new SpriteCanvas();
    spritecanvas.setCommandListener(this);
    Display.getDisplay(this).setCurrent(spritecanvas);
    thread=new Thread(this);
    thread.start();
    } catch (IOException E){
    destroyApp(true);
    }

    A Runnable interfész miatt kell bele még egy Run metódus is, ezt a Midlet legvégére szúrtam be és így néz ki:

    public void run(){
    try{
    while((thread.isAlive())&&(spritecanvas!=null)){
    spritecanvas.render();
    thread.sleep(1000);

    }
    } catch (InterruptedException E1){

    }
    }

    [ Szerkesztve ]

Új hozzászólás Aktív témák

Hirdetés