- Sprite, làm cho ảnh có hành động, thích hợp cho làm game, nhưng để làm đc ta nên từ đơn giản nhất, các bạn kiếm ảnh có size đều giữa các frame
Công thức:
Sprite s=new Sprite(im,rộng khung, cao khung);
// nhớ là dài và rộng của image phải là bội số của dài và rông khung
đối với sprite ta có thể
s.setFrame(vị trí frame);
//frame được tính từ 0, dùng để chỉ định frame sẽ được hiển thị
s.setPosition(tại x, tại y);
// vị trí của sprite trên graphics
s.paint(g);
// vẽ sprite lên graphics
ngoài ra sprite còn cho phép quay hình ảnh nữa như không thường hay dùng tới
s.setTransform(type);
Trong đó type gồm:
TRANS_NONE //không quay
TRANS_ROT90 //quay góc 90 sang trái
TRANS_ROT180
TRANS_ROT270
TRANS_MIRROR //quay thành hình trong gương
TRANS_MIRROR_ROT90
TRANS_MIRROR_ROT180
TRANS_MIRROR_ROT270
ví dụ: ảnh gồm 4 hình nhỏ theo chiều dọc (xem ảnh bên dưới)
import javax.microedition.lcdui.*;
import javax.microedition.lcdui.game.*;
public class myCanvas extends Canvas {
int w, h;
Image im;
Sprite sp;
public myCanvas(){
setFullScreenMode(true);
//lấy value chiều rộng của screen
w=getWidth();
//lấy value chiều cao của screen
h=getHeight();
try{
im=Image.createImage("/g12.png");
}catch(Exception e){}
sp=new Sprite(im, im.getWidth(), im.getHeight()/4);
}
public void paint(Graphics g){
//đặt màu đen
g.setColor(0);
//tô đen màn hình từ góc trên tay trái màn hình đến hết chiều rộng và cao của màn hình
g.fillRect(0, 0, w, h);
//vẽ sprite nên graphics, tại toạ dộ 120, 160
sp.setPosition(120,160);
sp.nextFrame();
sp.paint(g);
repaint();
}
}
Trong đó:
repaint(); là lớp dùng cho chuyển động.
*Chú ý: 1 Hành động hay 1 sự kiện nào đó mới dùng tới hàm repaint();
ảnh nguồn:
g12.png (333 B)