XtGem Forum catalog
logo

Chatbox|Admin nhận làm wap/web, giá cả thương lượng... Thông tin admin tại mỗi bài viết.
Home · Bang hội ·
* Đăng Nhập hoặc Đăng Kí
để sử dụng hết chức năng của diễn đàn.
Hi, Khách!
HomeBang hội » Thủ thuật » Nokia s40 » » Xem bài viết
Xuống dưới »
avatar by Pham_loi Pham_loi
Chức vụ:
22:44:26, 28-07-2015

Vẽ một phần của hình ảnh- menu game
Vẽ nguyên cả hình ảnh vào trong màn hình thì thật không tiện lợi chút nào, nhất là khi muốn vẽ nhiều hình ảnh mà mỗi hình ảnh lại phải tạo một biến image mới thì thật là mệt. thay vào đó ta chỉ việc dồn tất cả vào một bức ảnh và khi muốn thì chỉ hiển thị phần cần thiết mà thôi.
Để làm được điều đó ta sử dụng công thức setClip(start-x,start-y,w,h) đối với graphics, xem ví dụ sau sẽ rõ:
Ta tạo một file menu.java với nội dung như sau:
<?php
import javax
.microedition.lcdui.game.*;
import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
public class 
menu extends GameCanvas implements Runnable
{
private 
vd main;
private 
Graphics g=getGraphics();
private 
Image mn;
int w=getWidth();
int h=getHeight();
private 
int index=0;
private 
boolean play=true;
public 
menu(vd main){
super(false);
this.main=main;}
void start(){
Thread t=new Thread(this);
t.start();}
public 
void run()
{
try{
mn=Image.createImage("/menu.png");}catch(Exception e){}
while(
play){
g.setColor(0x000000);
g.fillRect(0,0,w,h);
g.setClip((w-128)/2,(h-64)/2,128,64);//chỉ vẽ trong khung chu nhat tu diem() voi rong va cao
g.drawImage(mn,(w-128)/2,(h-64)/2-32,g.TOP|g.LEFT);
g.setClip((w-128)/2,(h-64)/2+index*32,128,32);
g.drawImage(mn,(w-128)/2,(h-64)/2+index*32,g.TOP|g.LEFT);
flushGraphics();
try{
Thread.sleep(30);}catch(Exception e){}//cho ngung mot thoi gian
}
}
protected 
void keyPressed(int key){
if(
key==KEY_NUM2){index--;}//len tren
if(key==KEY_NUM8){index++;}//xuong duoi
if(index>1){index=0;}//cho xoay vong
if(index<0){index=1;}//cho xoay vong
if(key==KEY_NUM5){if(index==1){
play=false;
main.destroyApp(true);}}//neu nhan 5 tai exit thi thoat
}
}
?>

Copy code

. trong ví dụ này tôi sử dụng hình ảnh này để thực hiện vịêc vẽ menu
. bức hình sau sẽ giải thích rõ tác dụng của việc setClip như thế nào:
- trên bức ảnh ta có thể thấy khung chữ nhật xanh lá là khung setClip của chứng ta(được xác định từ điểm (1) và có độ rộng w, độ cao h). tất cả những hình ảnh vẽ vào sau đó chỉ có phần nào nẳm trong khung đó thì mới hiện thị ra màn hình. như trong hình, ảnh chứa play và exit được vẽ từ điểm (2), sẽ chỉ hiển thị phần có chứa chữ exit.
• nên nhớ rằng sau mỗi khi setClip và vẽ xong phần cần vẽ phải trả lại toàn màn hình cho graphics như vậy các phần vẽ sau sẽ không bị giới hạn bởi tác dụng của setClip nữa. chúng ta đơn giản là setClip(getWidth(),getHeight()); là được.
• chúng ta thực hiện việc gọi class menu này trong class vd cũng tương tự như các class khác.


Chỉnh sửa lúc 2016-07-10 19:40 bởi Pham_loi
Like: 0

Trực Tuyến: Khách: 1
Diễn đàn teen Việt Nam
CopyRight 2014