Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java ME (J2ME) > Спрайты


Автор: Samuil 28.10.2006, 23:28
Привет народ! Есть проблема: не смог найти инфу по использованию спрайтов в приложении smile 
Может кто дать ссылку или показать на примере как сделать чтобы прога могла порезав одно изображение на части использовать эти изображения в проге, ну в общем спрайты

Автор: W0LF 29.10.2006, 15:13
хм... 
1. Есть 
Код

javax.microedition.lcdui.game.Sprite

2. MIDP2.0 
Код

javax.microedition.lcdui.Image
  
метод
Код

createImage(Image image, int x, int y, int width, int height, int transform)

Creates an immutable image using pixel data from the specified region of a source image, transformed as specified.
3. MIDP1.0
Код

javax.microedition.lcdui.Graphics

методы
Код

setClip(int x, int y, int width, int height) 
clipRect(int x, int y, int width, int height) 

на том, на чем будешь рисовать(твой Graphics) выделяешь одним из двух методов области, в которые можно будет рисовать. Все остальное они будут обрезать. так вот - в них с определенным смещением рисуй свою картинку и все.

Автор: Samuil 29.10.2006, 16:58
Спасибо Wolf!

Автор: kapi 30.10.2006, 17:46
можеш попробовать мой класс Спрайта, а то ведь оригинальный Sprite только в midp 2 smile
Код

import javax.microedition.lcdui.Image;
import javax.microedition.lcdui.Graphics;

/**
 * Created by IntelliJ IDEA.
 * User: vmishenko
 * Date: 26.07.2006
 * Time: 16:57:18
 * To change this template use File | Settings | File Templates.
 */
public class SpriteMy {
    private int cordX = 0;
    private int cordY = 0;
    protected int frameW;
    protected int frameH;
    private int framesNumber;
    private int currentFrameNo = 1;
    private Image sprite ;
    private int headX =cordX;
    private int headY =cordY ;
    private Quiz  q;
/*----------------------------------------------------------------------------------------------*/
    public SpriteMy(){}
/*----------------------------------------------------------------------------------------------*/
    public SpriteMy(Image im,int w, int h, Quiz midlet){
        this.q = midlet;
        this.sprite = Image.createImage(im);
        this.frameW = w;
        this.frameH = h;
        this.framesNumber = (im.getHeight()==h?
                (im.getWidth()/w):(im.getHeight()/h));

        System.out.println("Frames # ="+framesNumber);
    }
/*----------------------------------------------------------------------------------------------*/
    void setLocation(int x, int y){
        this.cordX = x;
        this.cordY = y;
        headX =cordX;
        headY =cordY ;
    }
/*----------------------------------------------------------------------------------------------*/
    void paint(Graphics g){
        g.setClip(cordX,cordY,frameW,frameH);
        g.drawImage(this.sprite,headX,headY,Graphics.TOP|Graphics.LEFT);
        g.setClip(0,0,q.canvasW,q.canvasH);
        g.setColor(0xffffff);
        g.drawRect(cordX,cordY,frameW,frameH);
    }
/*----------------------------------------------------------------------------------------------*/
    void nextFrame(){
        headX = headX - frameW;
        currentFrameNo ++;
        if (currentFrameNo > framesNumber){
            headX = cordX;
            currentFrameNo = 1;
        }
    }
/*----------------------------------------------------------------------------------------------*/
    void prevFrame(){
        headX = headX + frameW;
        currentFrameNo --;
        if (currentFrameNo < 1){
            currentFrameNo = framesNumber;
            headX = cordX - (framesNumber-1) * frameW;
        }
    }
/*----------------------------------------------------------------------------------------------*/    
}



Автор: Samuil 31.10.2006, 14:22
kapi, И тебе Спасибо обязательно попробую smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)