1. Trang chủ
  2. » Giáo Dục - Đào Tạo

Bài giảng điện tử môn tin học: Lập giao diện người dùng mức thấp ppsx

19 387 1

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 19
Dung lượng 1,68 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

 Sử dụng lớp Canvas để trực tiếp vẽ các đường thẳng, văn bản, hình ảnh lên màn hình.. mà ở đó MIDP có thể vẽ lên..  Ví dụ, vẽ chuỗi "HelloWorld" lên màn hình: › Lớp Canvas, là m

Trang 1

08/13/14 1

Võ Phương Bình – ITFAC - DLU

Trang 2

Lớp Canvas

› Vẽ trên Canvas

› Sử dụng Canvas

› Xử lý bàn phím

Đồ họa Graphics

› Sử dụng đối tượng đồ họa Graphics

› Vẽ với Graphics

Xử lý Game

Trang 3

Sử dụng lớp Canvas để trực tiếp vẽ các

đường thẳng, văn bản, hình ảnh lên màn hình.

mà ở đó MIDP có thể vẽ lên.

Ví dụ, vẽ chuỗi "HelloWorld" lên màn hình:

› Lớp Canvas, là một lớp trừu tượng được kế

thừa từ lớp Displayable và override phương thức paint( ).

› Lớp vẽ kế thừa lớp Canvas và định nghĩa lại

phương thức Paint(Graphics g).

08/13/14

Trang 4

public class MyCanvas extends Canvas {

public void paint(Graphics g) {

g.setColor(255, 0, 0);

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

g.setColor(255, 255, 255);

g.drawString("Hello World!", 0, 0, g.TOP

| g.LEFT);

Trang 5

public class MyMidlet extends MIDlet {

public MyMidlet( ) {

}

public void startApp( ) {

Canvas canvas = new MyCanvas( );

Display display = Display.getDisplay(this);

display.setCurrent(canvas);

}

public void pauseApp( ) {

}

public void destroyApp(boolean unconditional) {

}

08/13/14

Trang 6

Lớp Canvas thực thi interface CommanListener.

› Xử lý Command:

 public void commandAction(Command c, Displayable d)

 //viết code

 {

› Xử lý phím:

 protected void keyPressed(int keyCode)

 //viết code

Trang 7

public class MyCanvas

extends Canvas implements

CommandListener {

private Command cmExit;

private String keyText = null;

private MyMidlet midlet;

public MyCanvas(MyMidlet

midlet)

{

this.midlet = midlet;

cmExit = new

Command("Exit",

Command.EXIT, 1);

addCommand(cmExit);

setCommandListener(this);

}

08/13/14

 public void paint(Graphics g) {

 g.setColor(255, 255, 255);

 g.fillRect(0, 0, getWidth(), getHeight());

if (keyText != null) {

g.setColor(0, 0, 0);

g.drawString(keyText, getWidth()/2, getHeight()/2,

Graphics.TOP |

Graphics.HCENTER);

}

 }

 public void commandAction(Command arg0, Displayable arg1) {

if (arg0 == cmExit) {

midlet.destroyApp(false);

midlet.notifyDestroyed();

}

 protected void keyPressed(int keyCode)

keyText = getKeyName(keyCode);

repaint();

Trang 9

Cách 1: dùng trong phương thức paint()

Cách 2:

› Tạo đối tượng image chỉnh sửa được (Mutable).

› Lấy đối tượng Graphics của image:

public Graphics getGraphics( );

08/13/14

Trang 10

Màn hình khởi động

Lớp GameCanvas

Xử lý menu

Trang 11

08/13/14

Trang 12

Lớp IntroCanvas

Lớp CountDown

Trang 13

public class IntroCanvas extends Canvas

{

private static final String logoName

= "/Images/Splash.png";

private Display display;

private Displayable nextScreen;

private int timeout;

private Timer timer = new Timer();

public IntroCanvas(Display display,

Displayable nextScreen, int timeout)

{

this.display = display;

this.nextScreen = nextScreen;

this.timeout = timeout;

}

public void startIntro(){

display.setCurrent(this);

}

public void endIntro(){

display.setCurrent(nextScreen);

}

08/13/14

 protected void paint(Graphics g) {

 try {

 Image logo = Image.createImage(logoName);

 g.drawImage(logo, getWidth()/2-logo.getWidth()/2,

getHeight()/2-logo.getHeight()/2, Graphics.TOP | Graphics.LEFT);

 }

 catch (IOException e) {

 g.drawString("Logo Error", 0, 0, Graphics.TOP | Graphics.LEFT);

 }

 }

 protected void showNotify() {

timer.schedule(new CountDown(),

timeout);

 }

 protected void keyPressed(int keyCode) { endIntro();}

Trang 14

private class CountDown extends

TimerTask {

}

Trang 15

public class ExampleGameCanvas

extends GameCanvas implements

Runnable, CommandListener {

private Command cmdExit;

private Command cmdMenu;

private boolean isPlay;

private long delay;

private int currentX, currentY;

private int width;

private int height;

private Image img;

MIDlet midlet;

public void stop() {

› isPlay = false;

}

public void start() {

› isPlay = true;

› Thread t = new Thread(this);

› t.start();

}

08/13/14

public ExampleGameCanvas(MIDlet midlet) {

super(true);

this.midlet = midlet;

cmdExit = new

Command("Exit",Command.EXIT,1);

cmdMenu = new

Command("Menu",Command.OK,1);

addCommand(cmdExit);

addCommand(cmdMenu);

setCommandListener(this);

width = getWidth();

height = getHeight();

currentX = width / 2;

currentY = height / 2;

delay = 20;

try{

img =

Image.createImage("/Images/Ja

vaPoint.png");

} catch (Exception e){}

}

Trang 16

public void run() {

› Graphics g = getGraphics();

› while (isPlay == true) {

 input();

 drawScreen(g);

 try {

Thread.sleep(delay);

 }

 catch (InterruptedException ie) {}

› }

}

private void input() {

› int keyStates = getKeyStates();

if ((keyStates & LEFT_PRESSED) != 0)

 currentX ;

if ((keyStates & RIGHT_PRESSED) !=0 )

 currentX ++;

if ((keyStates & UP_PRESSED) !=

0)

currentY ;

private void drawScreen(Graphics g) {

g.setColor(224,224,224);

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

g.setColor(0x0000ff);

g.drawImage(img,currentX,current

Y,Graphics.TOP|Graphics.LEFT);

flushGraphics();

}

public void commandAction(Command

c, Displayable s) {

if (c == cmdExit) {

midlet.notifyDestroyed();

} }

Trang 17

public class ExampleGameCanvasMidlet extends MIDlet{

private Display display;

private boolean isSplash = true;

private Image imgSpash;

public ExampleGameCanvasMidlet() {

super();

protected void startApp() throws MIDletStateChangeException {

display = Display.getDisplay(this);

› ExampleGameCanvas gameCanvas = new ExampleGameCanvas(this);

› gameCanvas.start();

› if(isSplash)

 isSplash = false;

 IntroCanvas introCanvas = new IntroCanvas(display,gameCanvas,3000);

 introCanvas.startIntro();

}

protected void pauseApp() {}

protected void destroyApp(boolean arg0) throws MIDletStateChangeException {}

08/13/14

Trang 19

Lớp Setting

Lớp HighCore

Lớp Help

Lớp About

Lớp xử lý menu chính

08/13/14

Ngày đăng: 11/08/2014, 23:20

TỪ KHÓA LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm