Từ 1 tới 6 trên tổng số 6 kết quả

Đề tài: [J2ME] – hướng dẫn tạo màn hình load game

  1. #1
    Ngày gia nhập
    04 2009
    Nơi ở
    Gầm cầu
    Bài viết
    2,230

    Mặc định [J2ME] – hướng dẫn tạo màn hình load game

    bài này tôi sẽ hướng dẫn các bạn tạo màn hình loading game trong J2ME

    Từ Netbeans các bạn tạo mới Project J2ME, chọn cấu hình CLDC 1.0 , MIDP 2.0 , chọn device là DefaultcldcMsaPhone1

    ta xây dựng 3 lớp Point.java ,LoadingScreen.Java, và Midlet : MainMidlet.java


    tạo Lớp Point.java
    Java Code:
    1. package Zstar;
    2.  
    3. /**
    4. *
    5. * @author zstar
    6. */
    7. public class Point {
    8.  
    9. private int X = 0;
    10. private int Y = 0;
    11.  
    12. public Point() {
    13. }
    14.  
    15. public Point(int x, int y) {
    16. this.X = x;
    17. this.Y = y;
    18. }
    19.  
    20. public int getX() {
    21. return this.X;
    22. }
    23.  
    24. public int getY() {
    25. return this.Y;
    26. }
    27. }
    Lớp LoadingScreen.java
    Java Code:
    1. package Zstar;
    2.  
    3. import java.io.*;
    4. import javax.microedition.lcdui.*;
    5. import javax.microedition.lcdui.game.GameCanvas;
    6.  
    7. /**
    8. * @author ZSTAR
    9. */
    10. public class LoadingScreen extends GameCanvas {
    11.  
    12. private Graphics g;
    13. private String logo = "/Images/logo.png";
    14. private String text1 = "Game tiếng việt trên điện thoại";
    15. private String text2 = "Đang tải...";
    16. private Image imageLogo;
    17. private Point root = new Point(30, 50);
    18. private Font fontNormal;
    19. private Font fontBold;
    20. //thanh loading
    21. private int colorBorder = 0x000000;
    22. private int colorLoading = 0xcc3301;
    23. private int loadingLength = 150;
    24. private int loadingHeight = 5;
    25. private int loadingCurrent = 0;
    26. private int h = 10;
    27. private MainMidlet mainMidlet;
    28.  
    29. public LoadingScreen(MainMidlet main) {
    30. super(false);
    31. this.mainMidlet = main;
    32. this.g = this.getGraphics();
    33. this.fontNormal = g.getFont();
    34. this.fontBold = Font.getFont(Font.FACE_SYSTEM, Font.STYLE_BOLD, Font.SIZE_MEDIUM);
    35. setFullScreenMode(true);
    36. try {
    37. imageLogo = Image.createImage(logo);
    38. } catch (IOException ex) {
    39. ex.printStackTrace();
    40. }
    41. this.root = new Point(getWidth() / 2 - imageLogo.getWidth() / 2, root.getY());
    42.  
    43. }
    44.  
    45. public void start() {
    46. clearScreen();
    47. draw();
    48. draw_next_loading();
    49. }
    50.  
    51. public void draw() {
    52. g.setColor(0x000000);
    53. g.drawImage(imageLogo, root.getX(), root.getY(), Graphics.TOP | Graphics.LEFT);
    54. g.drawString(text1, getWidth() / 2 - fontNormal.stringWidth(text1) / 2, root.getY() + imageLogo.getHeight(), Graphics.TOP | Graphics.LEFT);
    55. g.setFont(fontBold);
    56. g.drawString(text2, getWidth() / 2 - fontBold.stringWidth(text2) / 2, root.getY() + imageLogo.getHeight() + 40, Graphics.TOP | Graphics.LEFT);
    57. g.setFont(fontNormal);
    58. //draw loading
    59. g.setColor(colorBorder);
    60. g.drawRect(getWidth() / 2 - loadingLength / 2, root.getY() + imageLogo.getHeight() + 30, loadingLength, loadingHeight);
    61. g.setColor(colorLoading);
    62. g.fillRect(getWidth() / 2 - loadingLength / 2, root.getY() + imageLogo.getHeight() + 30, loadingCurrent, loadingHeight);
    63. g.setColor(colorBorder);
    64. this.flushGraphics();
    65. }
    66.  
    67. private void draw_next_loading() {
    68. clearLoading();
    69. //timer.schedule(task, interval,interval);
    70. for (int i = 0; i < loadingLength / h; i++) {
    71. if (loadingCurrent < loadingLength) {
    72. loadingCurrent += h;
    73. //draw loading
    74. g.setColor(colorBorder);
    75. g.drawRect(getWidth() / 2 - loadingLength / 2, root.getY() + imageLogo.getHeight() + 30, loadingLength, loadingHeight);
    76. g.setColor(colorLoading);
    77. g.fillRect(getWidth() / 2 - loadingLength / 2, root.getY() + imageLogo.getHeight() + 30, loadingCurrent, loadingHeight);
    78. g.setColor(colorBorder);
    79. this.flushGraphics();
    80. try {
    81. Thread.sleep(100);
    82. } catch (Exception e) {
    83. }
    84. } else {
    85. loadingCurrent = 0;
    86. break;
    87. }
    88. }
    89.  
    90. }
    91.  
    92. private void clearLoading() {
    93. g.setColor(0xffffff);
    94. g.fillRect(getWidth() / 2 - loadingLength / 2, root.getY() + imageLogo.getHeight() + 30, loadingLength, loadingHeight);
    95. this.flushGraphics();
    96. }
    97.  
    98. public void clearScreen() {
    99. g.setColor(0xffffff); // white
    100. g.fillRect(0, 0, getWidth(), getHeight());
    101. this.flushGraphics();
    102. }
    103. }
    tạo Lớp MainMidlet.java
    Java Code:
    1. package Zstar;
    2.  
    3. import javax.microedition.lcdui.Display;
    4. import javax.microedition.midlet.*;
    5.  
    6. /**
    7. * @author ZSTAR
    8. */
    9. public class MainMidlet extends MIDlet {
    10. private LoadingScreen loadingScreen;
    11.  
    12. public void startApp() {
    13. loadingScreen=new LoadingScreen(this);
    14. Display.getDisplay(this).setCurrent(loadingScreen);
    15. loadingScreen.start();
    16. }
    17.  
    18. public void pauseApp() {
    19. }
    20.  
    21. public void destroyApp(boolean unconditional) {
    22. }
    23. }
    Nhấn F6 để chạy ứng dụng ta được kết quả :


    chúc các bạn vui vẻ !

  2. #2
    Ngày gia nhập
    09 2011
    Nơi ở
    Cầu Giấy - Hà Nội
    Bài viết
    67

    Anh cho em hỏi tính toán thời gian load các module và các dữ liệu bên ngoài (preloading) thì làm như nào ạ? Em chưa tìm được hướng giải quyết vấn đề này
    -*- CÔNG VIỆC BẬN RỘN -*-
    My Tutorials on Youtube Channel: http://youtube.com/user/rinkatori90
    My blog: http://code4lifevn.blogspot.com

  3. #3
    Ngày gia nhập
    04 2009
    Nơi ở
    Gầm cầu
    Bài viết
    2,230

    tính thời gian load module thì hơi khó
    tính thời gian tải dữ liệu thì đơn giản hơn , em cứ show box loading cho đến khi nào thread đọc dữ liệu gọi listener xác nhận dữ liệu tải xong, listener e tự define thôi, đơn giản chỉ là 1 interface . có thể anh sẽ trình bày kĩ hơn ở 1 topic khác

  4. #4
    Ngày gia nhập
    04 2009
    Nơi ở
    Hà Nội
    Bài viết
    733

    Xem ra J2ME khó hơn Android.
    Hỏi một câu thì chỉ dốt trong chốc lát.Nhưng nếu không hỏi thì bạn sẽ dốt suốt đời.

  5. #5
    Ngày gia nhập
    04 2009
    Nơi ở
    Gầm cầu
    Bài viết
    2,230

    Trích dẫn Nguyên bản được gửi bởi snake_programmer Xem bài viết
    Xem ra J2ME khó hơn Android.
    code J2ME rèn luyện tư duy lập trình khá tốt , ko ăn sẵn nhiều như thằng android

  6. #6
    Ngày gia nhập
    06 2011
    Bài viết
    13

    Thumbs up [J2ME] – hướng dẫn tạo màn hình load game

    bác Zstar pro nhỉ, vừa làm tut bên c#, vừa làm bên java luôn..khâm phục
    đang ký....

Các đề tài tương tự

  1. [J2ME] hướng dẫn tạo menu lựa chọn game
    Gửi bởi zstar trong diễn đàn Tutorials và Thủ thuật lập trình Java
    Trả lời: 3
    Bài viết cuối: 30-06-2013, 08:08 PM
  2. Làm game trúc xanh (game Memory). Làm sao load ảnh ngẫu nhiên?
    Gửi bởi tyto6b trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 9
    Bài viết cuối: 21-02-2013, 05:06 AM
  3. [J2ME] bạn đã tối ưu code dự án J2ME như thế nào ? [cùng thảo luận]
    Gửi bởi zstar trong diễn đàn Lập trình Android và Java Mobile
    Trả lời: 8
    Bài viết cuối: 17-08-2012, 02:44 PM
  4. Trả lời: 3
    Bài viết cuối: 17-04-2012, 11:44 PM
  5. Hướng dẫn tạo *.bat file để chạy J2ME app với J2ME Wireless Toolkit
    Gửi bởi Forlorn_hope trong diễn đàn Tutorials và Thủ thuật lập trình Java
    Trả lời: 0
    Bài viết cuối: 28-03-2012, 10:16 PM

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn