1. Trang chủ
  2. » Luận Văn - Báo Cáo

J2ME và lập trình Game trên điện thoại di động

59 3,1K 129
Tài liệu đã được kiểm tra trùng lặp

Đ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 59
Dung lượng 764 KB

Nội dung

Tài liệu tham khảo chuyên ngành tin học J2ME và lập trình Game trên điện thoại di động

Trang 1

ĐẠI HỌC THÁI NGUYÊNKHOA CÔNG NGHỆ THÔNG TIN

ĐỒ ÁN TỐT NGHIỆP ĐẠI HỌCNGÀNH CÔNG NGHỆ THÔNG TIN

J2ME VÀ LẬP TRÌNH GAME TRÊNĐIỆN THOẠI DI ĐỘNG

Giáo viên hướng dẫn: Ngô Thị LanSinh viên thực hiện : Trần Đức Nam

THÁI NGUYÊN 2007

1

Trang 2

ĐẠI HỌC THÁI NGUYÊNKHOA CÔNG NGHỆ THÔNG TIN

ĐỒ ÁN TỐT NGHIỆP ĐẠI HỌCNGÀNH CÔNG NGHỆ THÔNG TIN

THÁI NGUYÊN 2007

2

Trang 3

MỤC LỤC

3

Trang 4

MỞ ĐẦU

Công nghệ thông tin (CNTT) ngày càng có vai trò quan trọng trong cuộcsống hàng ngày của chúng ta Việc ứng dụng CNTT vào các lĩnh vực trong đờisống giúp công việc được tiến hành nhanh chóng và hiệu quả hơn Có rất nhiềucông nghệ mới phát triển song song với sự phát triển của CNTT , một trongnhững số đó là công nghệ di động Với tốc độ phát triển của công nghệ di độngnhư ngày nay nó đã mang lại những lợi ích thực sự cho con người Đầu tiên vớisự ra đời của chiếc điện thọai di động (DTDD) nó giúp con người liên lạc vớinhau ở bất cứ đâu Không những thế hiện nay chiếc điện thoại đã trở thành mộtthiết bị thông minh và đem lại nhiều lợi ích cho người sử dụng như: chơi Game,nghe nhạc, xem phim, kết nối internet, duyệt web, gửi thư…DTDD ngày nay hỗtrợ rất mạnh về âm thanh và khả năng xử lý đồ họa cùng với sự phát triển của

J2ME (JAVA 2 MICRO EDITION) Do vậy em chọn đề tài “ J2ME và lập trình

Game trên điện thoại di động” nhằm mục đích có những hiểu biết cơ bản về cấu

trúc và các thành phần của J2ME Từ đó có thể viết được những ứng dụng nhằmkhai thác phần nào những tính năng mạnh mẽ của J2ME.

Để có thể viết được ứng dụng, các đối tượng mà em cần nghiên cứu gồmnhững phần sau:

 Nghiên cứu về ngôn ngữ lập trình Java và công nghệ J2ME lập trìnhtrên điện thoại di động.

 Nghiên cứu các kỹ thuật xay dựng giao diện. Nghiên cứu các kỹ thuật xử lý đồ họa và hoạt hình. Nghiên cứu các kỹ thuật xử lý phím trên điện thoại. Nghiên cứu các kỹ thuật lưu trữ trên điện thoại. Nghiên cứu các kỹ thuật xử lý âm thanh.

Do thời gian làm có hạn do đó không thể tránh khỏi những thiếu sót rấtmong sự đóng góp ý kiến của các thầy cô giáo và các bạn quan tâm tới đề tài.

Đề tài hoàn thành với sự hướng dẫn chỉ bảo của cô giáo Ngô Thị Lan Em

xin chân thành cảm ơn cô

Sinh viênTrấn Đức Nam

4

Trang 5

Chương 1

TỔNG QUAN VỀ J2ME1.1 Giới thiệu các phiên bản vủa JAVA

Tất cả đều bắt đầu từ phiên bản chuẩn của Java- hiện được biết đến với têngọi Java 2 phiên bản chuẩn (J2SE) và châm ngôn nổi tiếng là “Viết một lần chạymọi nơi” Ý tưởng này của Java là phát triển một ngôn ngữ cho phép bạn viết mãchỉ một lần, sau đó có thể chạy trên bất kỳ nền tảng nào hỗ trợ máy ảo Java(JMV) mà không cần phải viết lại mã mới.

Hai năm sau khi giới thiệu J2SE, một phiên bản mới đã ra đời với tên gọiJava 2 Enterprise Edition cung cấp sự hỗ trợ cho một hệ thống ứng dụng có quimô lớn, những ứng dụng cấp doanh nghiệp

Gần đây nhất là phiên bản Java nhỏ gọn (micro), chạy trên những thiết bịthông tin gia dụng như Tivi, máy chụp ảnh, điện thoại di động, PocketPC…

Những tính năng chính của các phiên bản Java:

 Phiên bản chuẩn (Java 2 Standard Edition- J2SE): Thiết kế chaytrên Desktop và máy trạm Client.

 Phiên bản doanh nghiệp (Java 2 Enterprise Edition- J2EE): Đưathêm vào những thành phần như Servlet, JSP và XML…Phiên bảnnày nhằm vào những ứng dụng chạy trên nền Web server.

 Phiên bản nhỏ gọn ( Java 2 Micro Edition- J2ME): Thiết kế chonhững thiết bị có bộ nhớ hạn chế, có sức mạnh về màn hình và tốcđộ xử lý kém.

Java 2 Micro Edition- J2ME

5Java 2

Java 2Standard

Trang 6

1.2 Giới thiệu về J2ME

J2ME được phát triển từ kiến trúc Java Card, Embeded Java và PersonalJava của phiên bản Java 1.1 Đến sự ra đời của Java 2 thì Sun quyếtđịnh thay thế Personal Java và duợc gọi với tên mới là Java 2 Micro Edition,hay viết tắt là J2ME Đúng với tên gọi, J2ME là nền tảng cho các thiết bị có tínhchất nhỏ, gọn (Micro có nghia là nhỏ trong tiếng Anh)

Mục tiêu của J2ME là cho phép nguời lập trình viết các ứng dụng độc lậpvới thiết bị di động, không cần quan tâm dến phần cứng thật sự Để đạt đuợcmục tiêu này, J2ME duợc xây dựng bằng các tầng (layer) khác nhau dể giấu điviệc thực hiện phần cứng khỏi nhà phát triển Sau dây là các tầng của J2MEđuợc xây dựng trên CLDC:

o Tầng máy ảo Java (JAVA Virtual Machine Layer): khi mã nguồn Java

đuợc biên dịch nó đuợc chuyển đổi thành mã bytecode Mã bytecode này sau đóđuợc chuyển thành mã ngôn ngữ máy của thiết bị di động Tầng máy ảobao gồm KVM( K Virtual Machine) là bộ biên dịch mã bytecode có nhiệm vụchuyển mã bytecode của chương trình Java thành ngôn ngữ máy để chạy trêncác thiết bị di động Tầng này cung cấp một sự chuẩn hoá cho các thiết bị di

6

Trang 7

động dể ứng dụng J2ME sau khi dã biên dịch có thể chạy đuợc trên bất kỳ thiếtbị di động nào có hỗ trợ J2ME KVM

o Tầng cấu hình (Configuration Layer): cung cấp các hàm API cơ bản là

nhân của J2ME Lập trình viên có thể sử dụng các lớp và các phuong thức củacác API này tuy nhiên tập các API hữu dụng hon đuợc chứa trong tầng hiệntrạng (profile layer)

o Tầng hiện trạng (profile layer): cung cấp tập các hàm API hữu dụng

hơn cho lập trình Mục đích của tập hiện trạng là xây dựng nên lớp cấu hình vàcung cấp nhiều thư viện ứng dụng hơn, MIDP dịnh nghia các API riêng biệtcho thiết bị di động Bảng mô tả một số thiết bị sử dụng J2ME:

PCs JDKTM 1.1.x JavaTM 2 PlatformStandard Edition (J2SE

TM)PDAs and

Personal JavaTM JavaTM 2 Platform,Micro Edition (J2ME

TM) / CDC

Embedded Devices Embedded JavaTM J2ME/CLDC

1.3 Giới thiệu các thành phần trong nền tảng J2ME

Định nghĩa về Configuration (Cấu hình): là đặc tả định nghĩa một môi

trường phần mềm cho một dòng các thiết bị được phân loại bởi tập hợp các đặctính, ví dụ như:

Kiểu và số lượng bộ nhớ.Kiểu và tốc độ xử lý.Kiểu mạng kết nối.

Do đây là đặc tả nên các nhà sản xuất thiết bị như Samsung, Nokia …bắtbuộc phải thực thi đầy đủ các đặc tả do Sun qui định để các lập trình viên có thểdựa vào môi trường lập trình nhất quán và thông qua sự nhất quán này, các ứngdụng được tạo ra có thể mang tính độc lập thiết bị cao nhất có thể Ví dụ như mộtlập trình viên viết chương trình Game cho điện thoại Samsung thì có thể sửa đổi

7

Trang 8

chương trình của mình một cách tối thiểu nhất để có thể chạy trên điện thọaiNokia.

Hiện naySun đã đưa ra 2 dạng Configuration:

•CLDC (Connected Limited Device Configuration -Cấu hình thiết bị kết

nối giới hạn): được thiết kế để nhắm vào thị trường các thiết bị cấp thấp(low-end), các thiết bị này thông thường là máy điện thọai di động và PDAvới khoảng 512 KB bộ nhớ Vì tài nguyên bộ nhớ hạn chế nên CLDC đượcgắn với Java không dây (Java Wireless ), dạng như cho phép người sử dụngmua và tải về các ứng dụng Java, ví dụ như là Midlet.

•CDC- Connected Device Configuration (Cấu hình thiết bị kết nối):

CDC được đưa ra nhắm đến các thiết bị có tính năng mạnh hơn dòng thiết bịthuộc CLDC nhưng vẫn yếu hơn các hệ thống máy để bàn sử dụng J2SE Nhữngthiết bị này có nhiều bộ nhớ hơn (thông thường là trên 2Mb) và có bộ xử lý mạnhhơn Các sản phẩm này có thể kể đến như các máy PDA cấp cao, điện thoại web,các thiết bị gia dụng trong gia đình …

Cả 2 dạng Cấu hình kể trên đều chứa máy ảo Java (Java Virtual Machine)và tập hợp các lớp (class) Java cơ bản để cung cấp một môi trường cho cácứng dụng J2ME Tuy nhiên, bạn chú ý rằng đối với các thiết bị cấp thấp, dohạn chế về tài nguyên như bộ nhớ và bộ xử lý nên không thể yêu cầu máy ảohổ trợ tất cả các tính năng như với máy ảo của J2SE, ví dụ, các thiết bị thuộcCLDC không có phần cứng yêu cầu các phép tính toán dấu phẩy động, nên máyảo thuộc CLDC không được yêu cầu hỗ trợ kiểu float và double.

Định nghĩa về Profile : Profile mở rộng Configuration bằng cách thêm vào

các class để bổ trợ các tính năng cho từng thiết bị chuyên biệt Cả 2Configuration đều có những profile liên quan và từ những profile này có thểdùng các class lẫn nhau Đến đây ta có thể nhận thấy do mỗi profile định nghĩamột tập hợp các class khác nhau, nên thường ta không thể chuyển một ứng dụngJava viết cho một profile này và chạy trên một máy hỗ trợ một profile khác.Cũng với lý do đó, bạn không thể lấy một ứng dụng viết trên J2SE hay J2EE vàchạy trên các máy hỗ trợ J2ME

•Mobile Information Device Profile (MIDP): profile này sẽ bổ sung các

tính năng như hỗ trợ kết nối, các thành phần hỗ trợ giao diện người dùng … vàoCLDC Profile này được thiết kế chủ yếu để nhắm vào điện thọai di động với đặc

8

Trang 9

tính là màn hình hiển thị hạn chế, dung lượng chứa có hạn Do đó MIDP sẽ cungcấp một giao diện người dùng đơn giản và các tính năng mạng đơn giản dựa trênHTTP Có thể nói MIDP là profile nổi tiếng nhất bởi vì nó là kiến thức cơ bảncho lập trình Java trên các máy di động (Wireless Java).

1.4 Giới thiệu MIDP

Định nghĩa: Đây là Profile được định nghĩa dành riêng cho các thiết bị di

động và là thành phần chính trong J2ME MIDP cung cấp các chức năng cơ bảncho hầu hết các dòng thiêt bị di động phổ biến nhất như các máy điện thoại diđộng và các máy PDA Tuy nhiên MIDP không phải là cây đũa thần cho mọi lậptrình viên vì như chúng ta đã biết, MIDP được thiết kế cho các máy di động cócấu hình rất thấp

Những chức năng MIDP cung cấp

Các lớp và kiểu dữ liệu: Phần lớn các lớp mà các lập trình viên Javaquen thuộc vẫn còn được giữ lại ví dụ như các lớp trong gói java.utilnhư Stack, Vector và Hastable cũng như Enumeration

 Hỗ trợ đối tượng Display: Đúng như tên gọi một chương trình MIDPsẽ hỗ trợ duy nhất một đối tượng Display là đối tượng quản lý việchiển thị dữ liệu trên màn hình điện thoại.

 Hỗ trợ Form và các giao diện người dùng. Hỗ trợ Timer và Alert

 Cung cấp tính năng Record Management System (RMS) cho việc lưutrữ dữ liệu.

1.5 MIDlet và vòng đời của một MIDlet

Giống như dạng chương trình Applet trên J2SE, một Midlet luôn luôn kếthừa javax.microedition.midlet Hàm cơ bản nhất trong mọi Midlet là startApp(),hàm này sẽ khởi tạo Midlet cũng như vận hành các thành phần hoặc đối tượngkhác, ngoài startApp(), mỗi Midlet còn có pauseApp() và destroyApp(), mỗi hàmnày sẽ đựợc gọi thực thi tương ứng khi user chọn dừng hoặc thoát chương trình.

9

Trang 10

Hình 1.2 Vòng đời của một MIDlet

1.6 Môi trường phát triển J2ME

Có hai cách để phát triển một ứng dụng J2ME: Phát triển chương trình từ dòng lệnh

Các phần mềm cần thiết:Java Development Kit (JDK).

Connectd Limited Device Configuration (CLDC).Mobile Information Device Profile (MIDP).

Đây là cách hoàn toàn có thể sử dụng để phát triển bất kỳ một ứng dụngJ2ME nào, nhưng sẽ khó khăn để quản lý những ứng dụng lớn vì các thao tác đềuphải xử lý bằng dòng lệnh.

 Sử dụng các bộ giả lập như: J2ME WIRELESS TOOLKIT của Sun, Samsung WIRELESS TOOLKIT của Samsung, SonyEriction WIRELESSTOOLKIT của SonyEriction…

Đây là công cụ giúp lập và quản lý những dự án J2ME hiệu quả hơn, giảmthiểu quá trình gỡ lỗi, theo dõi hệ thống…Mọi thao tác đều thực hiện thông quagiao diện GUI trực quan Hiện nay các môi trường IDE như JBuilder, Netbeans,Eclipse…đều phát triển theo dạng giao diện đồ hoạ

10

Trang 11

Bảng mô tả địa chỉ download các bộ giả lập:

Nokia Developer’s Suitefor J2ME

Trang 12

Chương 2

CÁC THÀNH PHẦN GIAO DIỆN CẤP CAO CỦAỨNG DỤNG MIDP

2.1 Đối tượng Display, Displayable và Screens

Một ứng dụng MIDlet chỉ có 1 đối tượng thể hiện Display Đối tượng nàydùng để lấy thông tin về đối tượng trình bày, ví dụ màu được hỗ trợ, và bao gồmcác phương thức để yêu cầu các đối tượng được trình bày Đối tượng Display cầnthiết cho bộ quản lý việc trình bày trên thiết bị điều khiển thành phần nào sẽ đượchiển thị lên trên thiết bị.

Mặc dù chỉ có một đối tượng Display ứng với mỗi MIDlet, nhưng nhiều đốitượng trong một MIDlet có thể được hiển thị ra trên thiết bị như Forms,TextBoxes, ChoiceGroups,

Một đối tượng Displayable là một thành phần được hiển thị trên một thiếtbị MIDP chứa 2 lớp con của lớp Displayable là Screen và Canvas Hình dướiđây mô tả mối quan hệ trên.

Hình 2.1 Đối tượng Display

Một đối tượng Screen không phải là một cái gì đó hiện ra trên thiết bị, màlớp Screen này sẽ được thừa kế bởi các thành phần hiển thị ở mức cao, chính cácthành phần này sẽ được hiển thị ra trên màn hình.

Hình dưới đây sẽ mô tả mối quan hệ của lớp Screen và các thành phần thểhiện ở mức cao.

11

Trang 13

DateField(String label, int mode);

DateField(String label, int mode, TimeZone timeZone);12

Trang 14

Các mode tương ứng của lớp DateField gồm:

DateField.DATE_TIME: cho phép thay đổi ngày giờDateField.TIME: chỉ cho phép thay đổi giờ

DateField.DATE: chỉ cho phép thay đổi ngày

2.2.2 Gauge

Một thành phần Gauge là một kiểu giao diện thường được dùng để mô tảmức độ hoàn thành một công việc Có 2 loại Gauge là loại tương tác và loạikhông tương tác Loại đầu cho phép người dùng có thể thay đổi Gauge, loại 2 thìđòi hỏi người phát triển phải cập nhật Gauge.

Dưới đây là hàm dựng của lớp Gauge:

Gauge(String label, boolean interactive, int maxValue, int initialValue);

2.2.3 StringItem

Một thành phần StringItem được dùng để hiển thị một nhãn hay chuỗi vănbản Người dùng không thể thay đổi nhãn hay chuỗi văn bản khi chương trìnhđang chạy StringItem không nhận ra sự kiện

Phương thức dựng của lớp StringItemStringItem(String label, String text);

2.2.4 TextField

Một thành phần TextField thì tương tự như bất kỳ các đối tượng nhập vănbản tiêu biểu nào Có thể chỉ định một nhãn, số ký tự tối đa được phép nhập, vàloại dữ liệu được phép nhập Ngoài ra TextField còn cho phép nhập vào mậtkhẩu với các ký tự nhập vào sẽ được che bởi các ký tự mặt nạ

Phương thức dựng của lớp TextField

TextField(String label, String text, int maxSize, int constraints);

Thành phần thứ 3 constraints là thành phần mà chúng ta quan tâm, vì nó làphương tiện để xác định loại dữ liệu nào được phép nhập vào TextField.

MIDP định nghĩa các tham số ràng buộc sau cho thành phần TextField:

• ANY: cho phép nhập bất kỳ ký tự nào

• EMAILADDR: chỉ cho phép nhâp vào các địa chỉ email hợp lệ• NUMERIC: chỉ cho phép nhập số

13

Trang 15

• PHONENUMBER: Chỉ cho phép nhập số điện thoại• URL: Chỉ cho phép nhập các ký tự hợp lệ bên trong URL• PASSWORD: che tất cả các ký tự nhập vào

2.2.6 Image and ImageItem

Hai lớp được dùng để hiển thị hình ảnh là: Image và ImageItem Imageđược dùng để tạo ra một đối tượng hình ảnh và giữ thông tin như là chiều cao vàchiều rộng, và dù ảnh có biến đổi hay không Lớp ImageItem mô tả một tấm ảnhsẽ được hiển thị như thế nào, ví dụ tấm ảnh sẽ được đặt ở trung tâm, hay đặt vềphía bên trái, hay bên trên của màn hình.

MIDP đưa ra 2 loại hình ảnh là loại ảnh không biến đổi và ảnh biến đổi.Một tấm ảnh không biến đổi thì không thể bị thay đổi kể từ lúc nó được tạo ra.Đặc trưng của loại ảnh này là được đọc từ một tập tin Một tấm ảnh biến đổi vềcơ bản là một vùng nhớ Điều này tùy thuộc vào việc bạn tạo nội dung của tấmảnh bằng cách ghi nó lên vùng nhớ Các phương thức dựng cho lớp Image vàImageItem.

Image createImage(String name);Image createImage(Image source);

Image createImage(byte[] imageDate, int imageOffset, intimageLength);

Image createImage(int width, int height);

Image createImage(Image image, int x, int y, int width, int height, inttransform);

Image createImage(InputStream stream);

14

Trang 16

Image createRGBImage(int[] rgb, int width, int height, booleanprocessAlpha);

ImageItem(String label, Image img, int layout, String altText);

2.3 List

Một List chứa một dãy các lựa chọn được thể hiện một trong ba dạng.Chúng ta đã thấy loại cho phép nhiều lựa chọn và loại chỉ được phép chọn mộtkhi làm việc với ChoiceGroup Dạng thứ 3 là là dạng không tường minh CácList không tường minh đuợc dùng để thể hiện một thực đơn các chọn lựa

2.4 TextBox

TextBox được dùng để cho phép nhập nhiều dòng Thành phần TextBox vàTextField có những ràng buộc giống nhau trong việc chỉ định loại nội dung đượcphép nhâp vào.Ví dụ ANY, EMAIL, URI…

Dưới đây là phương thức dựng của một TextBox:

TextBox(String title, String text, int maxSize, int constraints);

2.5 Alert và AlertType

Một Alert đơn giản là một hộp thoại rất nhỏ Có 2 loại Alert:

•Modal: là loại hộp thoại thông báo được trình bày cho đến khi người

15

Trang 17

Thành phần AlertType bao gồm 5 loại âm thanh định sẵn là: thông báo, xácnhận, báo lỗi, thông báo và cảnh báo

Ta thấy các phương thức dựng của Alert cho biết là Alert có thể bao gồm 1tham chiếu đến một đối tượng AlertType

2.6 Ticker

Thành phần Ticker đuợc dùng để thể hiện một đoạn chuỗi chạy theo chiềungang Tham số duy nhất của thành phần Ticker là đoạn văn bản được trình bày.Tốc độ và chiều cuốn được xác định bởi việc cài đặt trên thiết bị nào

Phương thức dựng của Ticker : Ticker(String str)

Từ cây phân cấp các thành phần thể hiện trên thiết bị, ta thấy là thành phầnTicker không là lớp con của lớp Screen mà Ticker là một biến của lớp Screen.Điều này có nghĩa là một Ticker có thể được gắn vào bất cứ lớp con của lớpScreen bao gồm cả Alert.

2.7 Xử lý sự kiện

Xử lý sự kiện hầu như rất quan trọng với đa số MIDlet Một ứng dụngkhông thể thiếu sự tương tác giữa người dùng và chương trình Xử lý sự kiệnkhông khác gì hơn là đoán nhận một sự kiện khi nào xuất hiện và thực hiện mộtyêu cầu nào đó dựa vào sự kiện phát sinh Cần có ba bước để quản lý thành côngmột sự kiện:

 Phần cứng (thiết bị vật lý) phải đoán nhận được điều gì đã xuất hiện:một phím được nhấn, hay một phím được nhả ra, nắp điện thoạiđược mở ra hay đóng lại…

 Phần mềm trên thiết bị (bộ quản lý ứng dụng) cần được thông báo vềsự kiện này.

 Khi một thông báo được gửi đến MIDlet từ bộ quản lý ứng dụng,thông báo sẽ chứa thông tin về sự kiện để ta có thể đưa ra nhữngquyết định để xử lý

Trước khi một MIDlet có thể đoán nhận được thông báo từ bộ quản lýứng dụng là một sự kiện, nó phải thiết lập bộ lắng nghe sự kiện Listener Có haigiao diện chính cho mỗi MIDlet là: CommandListener và ItemStateListener.

16

Trang 18

2.7.1 Đối tượng Command

Khi một hành động xảy ra trên thiết bị di động, một đối tượng Commandgiữ thông tin về sự kiện đó Thông tin này bao gồm loại hành động thực thi, nhãncủa mệnh lệnh và độ ưu tiên của chính nó Trong J2ME, các hành động nóichung được thể hiện dưới dạng các nút trên thiết bị

Nếu có quá nhiều hành động được hiển thị trên thiết bị, thiết bị sẽ tạo ramột thực đơn để chứa các hành động

Chỉ có các thành phần MIDP sau đây mới có thể chứa các đối tượngCommand là: Form, TextBox, List và Canvas.

Các bước cơ bản để xử lý các sự kiện với một đối tượng Command: Tạo một đối tượng Command

Đặt đối tượng Command lên trên một đối tượng Form, TextBox,List, hay Canvas

Tạo một bộ lắng nghe

Khi có một sự kiện xảy ra, bộ lắng nghe sẽ phát sinh một lời gọi đếnphương thức commandAction() Trong thân phương thức này bạn có thể xác địnhđối tượng nào phát sinh ra sự kiện và tạo ra các xử lý tương ứng

Dưới đây là đoạn mã minh họa việc tạo ra sự kiện Command và xử lý sựkiện:

private Form fmMain; private Command cmExit; .

fmMain = new Form("Core J2ME");

cmExit = new Command("Exit", Command.EXIT, 1);

fmMain.addCommand(cmExit); fmMain.setCommandListener(this);

public void commandAction(Command c, Displayable s)

17

Trang 19

if (c == cmExit)

2.7.2 Đối tượng Item

Ngoài việc xử lý sự kiện bằng đối tượng Command ta có thể xử lý sự kiệnbằng đối tượng Item Nhiều đối tượng trong MIDP đã được định nghĩa trước choviệc xử lý các sự kiện cụ thể nào đó Ví dụ đối tượng DateField cho phép ngườisử dụng chọn lựa ngày và giờ trên màn hình, đối tượng TextField cho phép ngườidùng nhập vào một chuỗi các ký tự, số và các ký tự đặc biệt

Tương tự như việc xử lý sự kiện bằng đối tượng Command, thì khi có mộtthay đổi xảy ra đối với bất kỳ thành phần Item nào thì phương thứcitemStateChanged() sẽ được gọi Và chúng ta sẽ thực hiện các xử lý bên trongphương thức này

Dưới đây là đoạn mã minh họa việc tạo ra sự kiện Command và xử lý sựkiện:

private Form fmMain; private DateField dfToday;

fmMain = new Form("Core J2ME");

dfToday = new DateField("Today:", DateField.DATE); fmMain.append(dfToday);

fmMain.setItemStateListener(this); public void itemStateChanged(Item item)

{if (item == dfToday)

18

Trang 20

Chương 3

CÁC THÀNH PHẦN GIAO DIỆN Ở MỨC THẤP3.1 Các hàm API ở mức thấp

Mặc dù các hàm API cấp cao cung cấp một tập đầy đủ các thành phần đểxây dựng giao diện ứng dụng người dùng Tuy nhiên các thành phần cấp caokhông cung cấp phương tiện để vẽ trực tiếp lên thiết bị thể hiện Vì thiếu khảnăng này nên các ứng dụng được tạo ra sẽ gặp nhiều giới hạn Ví dụ hầu hết cácnhà phát triển Game di động dựa trên khả năng vẽ các đường thẳng và các hìnhdạng như là một phần tích hợp quá trình phát triển.

Nếu các hàm API cấp cao cho phép chúng ta tạo ra giao diện cho các ứngdụng theo chuẩn, thì các hàm API cấp thấp cho phép chúng ta có thể thể hiện cácý tưởng của mình.

3.2 Lớp Canvas

Lớp Canvas cung cấp một khung vẽ cho phép tạo ra giao diện tùy biếnngười dùng Một số lượng lớn các phương thức trong lớp này được dùng để xử lýsự kiện, vẽ ảnh và chuỗi lên thiết bị hiển thị Hai lớp chính sử dụng ở mức APIcấp thấp là Canvas và lớp đối tượng đồ họa Graphics.

 Canvas là nơi để vẽ, được hình dung là một tấm vải có chiều rộng vàchiều cao, với những gì vẽ lên đó đều sẽ hiển thị ra bên ngoài Lớp Canvas cũngcung cấp những phương thức để xử lý sự kiện mức thấp.

 Ta dùng đối tượng Graphics (được gọi là ngữ cảnh đồ họa Graphics)để vẽ lên Canvas Lớp này có những phương thức để vẽ đường thẳng, hình cung,hình chữ nhật, văn bản…

3.2.1 Hệ thống trục tọa độ

Hệ thống tọa độ cho lớp Canvas có tâm tọa độ là điểm trái trên của thiết bịtrình bày Giá trị x tăng dần về phía phải, giá trị y tăng dần khi đi xuống phíadưới

19

Trang 21

3.2.2 Tạo một đối tượng Canvas

Bước đầu tiên để làm việc với một lớp Canvas là tạo ra một lớp thừa kế từlớp Canvas

class TestCanvas extends Canvas implements CommandListener{

private Command cmdExit;

display = Display.getDisplay(this);

cmdExit = new Command("Exit", Command.EXIT, 1);addCommand(cmdExit);

protected void paint(Graphics g)

20

Trang 22

Đoạn mã sau minh họa việc xử lý sự kiện Command trên thành phầnCanvas

class TestCanvas extends Canvas implements CommandListener{

private Command cmdExit;

display = Display.getDisplay(this);

cmdExit = new Command("Exit", Command.EXIT, 1);addCommand(cmdExit);

protected void paint(Graphics g){

// Draw onto the canvas

public void commandAction(Command c, Displayable d){

if (c == cmdExit)

}

3.4 Mã phím

Trong trường hợp xử lý các hành động của các phím mềm, một Canvas cóthể truy cập đến 12 mã phím Những mã này được đảm bảo luôn luôn có trên bấtkỳ các thiết bị MIDP nào

21

Trang 23

Bốn phương thức để xử lý các mã phím là:

void keyPressed(int keyCode): Gọi khi một phím bị nhấn lần đầu.void keyReleased(int keyCode): Gọi khi một phím được thả.void keyRepeated(int keyCode): Gọi khi một phím bị giữ.

String getKeyName(int keyCode): Lấy một chuỗi phím mang thôngtin cho phím.

3.5 Lớp Graphics

Một đối tượng đồ họa Graphics (còn được gọi là ngữ cảnh đồ họa Graphics)là một dụng cụ để vẽ lên Canvas.

Có hai cách để tham chiếu đến đối tượng này:

 Cách đầu tiên là viết phương thức paint() trong lớp Canvasprotected void paint(Graphics g)

… }

 Cách thứ hai là thông qua đối tượng hình ảnh Mutable:Image im=Image.createImage(80,20);

Graphics g=im.getGraphics();

3.5.1 Hỗ trợ màu

Một ứng dụng MIDP chỉ có một đối tượng Display Đối tượng này đuợcdùng để lấy thông tin của màn hình hiển thị hiện tại, ví dụ như số màu hỗ trợ vàcác phương thức để yêu cầu các đối tượng được hiển thị Đối tượng Display đơn

22

Trang 24

giản là một bộ quản lý sự hiển thị của thiết bị và điều khiển những gì sẽ đượchiển thị ra trên thiết bị

boolean isColor()int numColors()

Phương thức đầu tiên cho biết thiết bị có hỗ trợ hiển thị màu hay không.Nếu có thì phương thức thứ 2 sẽ được gọi để xác định số màu được hỗ trợ Cácphương thức tiếp theo dưới đây để lấy về màu và thiết lập màu

void setColor(int RGB);

void setColor(int red, int green, int blue);int getColor();

int getBlueComponent();int getGreenComponent();int getRedComponent();void setGrayScale(int value);int getGrayScale();

Chú ý có thể xác định màu bằng 2 cách Cách 1: xác định một số nguyênđại diện cho 3 giá trị của màu là đỏ, xanh lá cây và xanh dương với 8 bit cho mỗimàu Hay cách 2 có thể dùng từng tham số riêng biệt để xác định mỗi màu Khisử dụng một giá trị để lưu giữ màu, thì màu đỏ sẽ chiếm 8 bit đầu kể từ bên trái,tiếp theo là 8 bit dành cho màu xanh lá cây, sau cùng là màu xanh dương.

Dưới đây là cách thiết lập màu chỉ sử dụng một số nguyên:int red = 0,

green = 128,blue = 255;

g.setColor((red << 16) | (green << 8) | blue);…

Còn có thể xác định màu bằng cách thiết lập giá trị cho 3 tham số:g.setColor(red, green, blue);

23

Trang 25

3.5.2 Loại nét vẽ

Có thể chọn nét khi vẽ đường thẳng, cung và hình chữ nhật trên thiết bị hiểnthị Dưới đây là các phương thức dùng để thiết lập loại nét vẽ

int getStrokeStyle();

void setStrokeStyle(int style);

Hai kiểu nét vẽ được định nghĩa trong lớp Graphics là nét chấm, và nét liềng.setStrokeStyle(Graphics.DOTTED);

3.5.3 Vẽ đường thẳng

Để vẽ đường thẳng, dùng phương thức: Graphics.drawline() Nó chấpnhận 4 tham số: x1,x2,y1,y2 Các tham số thiết lập trên màn hình 2 điểm (x1,y1),(x2,y2), và một đường thẳng được vẽ giữa chúng.

3.5.4 Vẽ hình chữ nhật

Cũng giống như cung thì hình chữ nhật có thể chỉ được vẽ viền bao quanhhoặc tô bên trong Bên cạnh đó có thể vẽ hình chữ nhật đó có 4 góc là tròn hoặclà vuông Dưới đây là một số phương thức để vẽ hình chữ nhật:

void drawRect(int x, int y, int width, int height);

void drawRoundRect(int x, int y, int width, int height, int arcWidth, intarcHeight);

void fillRect(int x, int y, int width, int height);

void fillRoundRect(int x, int y, int width, int height, int arcWidth, intarcHeight);

Khi vẽ hình chữ nhật có 4 góc là tròn thì bạn phải xác định đường kính theochiều ngang(arcWidth) và đường kính theo chiều dọc(arcHeight) Những tham sốnày được định nghĩa độ sắc nét của cung theo mỗi chiều Giá trị càng lớn thể hiệnmột cung tăng dần, ngược lại là một đường cong hẹp.

3.5.5 Vẽ cung

Khi vẽ một cung, có thể vẽ nó chỉ có đường bao xung quanh hay yêu cầu nóđược tô bên trong Cũng có thể bắt đầu bằng cách chỉ định chiều bao quanh bên

24

Trang 26

ngoài của một hình hộp chữ nhật tưởng tượng Góc bắt đầu xác định vị trí bắt đầuvẽ khung, với giá trị 0 được xác định tại thời điểm 3 giờ Giá trị dương tính theongược chiều kim đồng hồ Góc của cung chỉ ra rằng có bao nhiêu độ được vẽ tínhtừ góc ban đầu, đi theo ngược chiều kim đồng hồ.

Font getFont(int face, int style, int size)Font getFont(int fontSpecifier)

Font getDefaultFont()Một số thuộc tính của lớp Font

Các tham số kiểu dáng có thể được kết hợp thông qua toán tử hay Ví dụFont font = Font.getFont(Font.FACE_PROPORTIONAL,

Font.STYLE_BOLD | Font.STYLE_ITALIC, Font.SIZE_MEDIUM);

25

Trang 27

Sau khi bạn có một tham chiếu đến một đối tượng Font, bạn có thể truy vấnnó để xác định thông tin của các thuộc tich của nó

int getFace();int getStyle();int getSize();boolean isPlain();boolean isBold();boolean isItalic();boolean isUnderlined();

Kích thước của các font chữ được xác định bởi chiều cao của font chữ, bềdài tính bằng điểm ảnh của một chuỗi ký tự trong một font xác định Một số cácphương thức sau hỗ trợ khi tương tác với một đối tương font

int getHeight();

int getBaselinePosition();int charWidth(char ch);

int charsWidth(char[] ch, int offset, int length);int stringWidth(String str);

int substringWidth(String str, int offset, int length);

void drawString(String str, int x, int y, int anchor);

void drawSubstring(String str, int offset, int len, int x, int y, intanchor);

3.5.8 Vẽ ảnh

Lớp Graphics cung cấp 1 phương thức dùng để vẽ ảnh:drawImage(Image img, int x, int y, int anchor);

26

Trang 28

Tham số đầu tiên tham chiếu tới một đối tượng hình ảnh Chúng ta cầnphải tạo ra đối tượng image trước khi gọi drawImage

- Đối với hình ảnh không thay đổi:

Image image=Image.createImage(/” image source”);

- Đối với hình ảnh thay đổi:

Image image=Image.createImage(imagewidth, imageheight);

3.5.9 Vùng cắt (Clipping Regions)

Đối với mỗi lời gọi đến hàm paint(), toàn bộ màn hình sẽ được vẽ lại.Vùng cắt có thể giới hạn những gì được vẽ trên màn hình Một lợi ích quan trọnglà giảm thời gian để làm mới màn hình.

Trang 29

Chương 4

CƠ CHẾ LƯU TRỮ DỮ LIỆU RMS

(Record Management System)

4.1 Giới thiệu hệ thống lưu trữ dữ liệu RMS

Việc lưu trữ thông tin cho việc khởi tạo của các ứng dụng là cần thiết vàquan trọng Thông tin mà các ứng dụng có thể lưu trữ như các thông tin cấu hìnhứng dụng, thông tin quá trình sử dụng các ứng dụng,…Đối với máy PCthì việc này tương dối dễ dàng khi chúng ta có trong tay nhiều thiết bị lưu trữnhư HDD, CD- ROM, USB DISK,…nhưng việc này tương đối khó khăn đối vớicác ứng dụng trên điện thoại di động MIDP cung cấp cho chúng ta một đốitượng là Record Management System cho phép chúng ta lưu trữ dữ liệu dướidạng Record.Các API của đối tuợng này được cung cấp trong góijavax.microedition.rms Một vùng nhớ trên các thiết bị sử dụng MIDP sẽ đượcdành riêng cho việc lưu trữ các dữ liệu của ứng dụng MIDlet Vị trí và kích thướccủa vùng lưu trữ này đuợc xác định tùy thuộc vào những thiết bị cụ thể

RMS cho phép lưu trữ dữ liệu khi ứng dụng thoát, khởi động lại và khi thiếtbị di động tắt hay thay pin Dữ liệu của ứng dụng sẽ tồn tại trên thiết bị di độngcho đến khi ứng dụng thật sự được xóa khỏi thiết bị di động Khi một MIDlet bịxóa, tất cả các record mà nó lưu trữ cũng bị xóa

Hình 4.1 Lưu trữ dữ liệu

Luu trữ

bản ghi 1 bản ghi 2Luu trữ bản ghi 3Luu trữ

28

Ngày đăng: 22/11/2012, 08:49

HÌNH ẢNH LIÊN QUAN

Hình 1.1 Các tầng của J2ME - J2ME và lập trình Game trên điện thoại di động
Hình 1.1 Các tầng của J2ME (Trang 6)
o Tầng cấu hình (Configuration Layer): cung cấp các hàm API cơ bản là nhân của J2ME. Lập trình viên có thể sử dụng các lớp và các phuong thức  của các  API này tuy nhiên tập các API hữu dụng hon đuợc chứa trong tầng   hiện trạng  (profile layer) - J2ME và lập trình Game trên điện thoại di động
o Tầng cấu hình (Configuration Layer): cung cấp các hàm API cơ bản là nhân của J2ME. Lập trình viên có thể sử dụng các lớp và các phuong thức của các API này tuy nhiên tập các API hữu dụng hon đuợc chứa trong tầng hiện trạng (profile layer) (Trang 7)
Hình 1.2 Vòng đời của một MIDlet - J2ME và lập trình Game trên điện thoại di động
Hình 1.2 Vòng đời của một MIDlet (Trang 10)
Bảng mô tả địa chỉ download các bộ giả lập: - J2ME và lập trình Game trên điện thoại di động
Bảng m ô tả địa chỉ download các bộ giả lập: (Trang 11)
Hình 2.1 Đối tượng Display - J2ME và lập trình Game trên điện thoại di động
Hình 2.1 Đối tượng Display (Trang 13)
Hình 2.2 Phân cấp lớp Displayable - J2ME và lập trình Game trên điện thoại di động
Hình 2.2 Phân cấp lớp Displayable (Trang 14)
Hình 4.1. Lưu trữ dữ liệu - J2ME và lập trình Game trên điện thoại di động
Hình 4.1. Lưu trữ dữ liệu (Trang 30)
Hình bên dưới cho thấy các lớp tạo nên phân cấp kết nối Connection, mỗi lớp được định nghĩa như một giao diện. - J2ME và lập trình Game trên điện thoại di động
Hình b ên dưới cho thấy các lớp tạo nên phân cấp kết nối Connection, mỗi lớp được định nghĩa như một giao diện (Trang 37)
Hình 7.1 Khởi động Netbeans - J2ME và lập trình Game trên điện thoại di động
Hình 7.1 Khởi động Netbeans (Trang 49)
Hình 7.2 Tạo project J2ME - J2ME và lập trình Game trên điện thoại di động
Hình 7.2 Tạo project J2ME (Trang 50)
Hình 7.3 Thêm các file cho project - J2ME và lập trình Game trên điện thoại di động
Hình 7.3 Thêm các file cho project (Trang 50)
Hình 7.4 Chạy chương trình - J2ME và lập trình Game trên điện thoại di động
Hình 7.4 Chạy chương trình (Trang 51)
7.2.5 Một số hình ảnh khi chơi Game - J2ME và lập trình Game trên điện thoại di động
7.2.5 Một số hình ảnh khi chơi Game (Trang 56)
7.2.5 Một số hình ảnh khi chơi Game - J2ME và lập trình Game trên điện thoại di động
7.2.5 Một số hình ảnh khi chơi Game (Trang 56)

TỪ KHÓA LIÊN QUAN

w