Results 1 to 6 of 6

Thread: รบกวนถามผู้รู้หน่อยครับ >> j2ME

  1. #1
    Junior Member
    Join Date
    Nov 2006
    Posts
    0


    คือผมกำลังเขียนเกมส์บนมือถืออยู่น่ะครับ แล้วบังเอิญได้ต้นแบบมาจากเกมส์ที่เค้าเขียนไว้สำหรับมือถือยี่ห้อ Sumsung หลังจากนั้นผมก็เอามันมาประยุกต์และนำมารันบนเครื่อง nokia6600 แต่มันมีปัญหาตรงที่ว่า หน้าจอของ Sumsung และ nokia6600 มันไม่เท่ากันน่ะครับ เลยอยากจะถามว่า พอจะมีวิธีแก้ป่าวครับ คือถ้าต้องให้แก้ code ของเกมส์ทั้งหมด มันเยอะมากครับ ผมก็พอเคยได้ยินมาบ้างนะครับ เกี่ยวกับการใช้ gamecanvas ใน midp 2.0 หรือการใช้ class fullcanvas ของ nokia sdk แต่ไม่ค่อยเข้าใจน่ะครับ ใครพอจะช่วยอธิบายให้ผมฟังหน่อยได้ป่าวครับ

  2. #2
    Administrator asylu3's Avatar
    Join Date
    Jun 2000
    Location
    Thailand
    Posts
    3,557


    Post ผิดห้องนะครับ
    ขอย้ายไปที่
    http://www.citecclub.org/forum/Symbian-C-J...wXHTML-f43.html

    ปล. ในห้องนั้นมี MSN ผู้รู้เกี่ยวกับ ด้านนี้เยอะเลย Add ไปพูดคุยได้ครับ

  3. #3
    Junior Member
    Join Date
    Nov 2006
    Posts
    0


    ขอบคุณมากครับท่าน admin

  4. #4


    คือต้องการ ให้ มาวาดลง nokia อยุ่ตรงกลางจอ เพราะจอ nokia ใหญ่ หรือปล่าวครับ ?

    ไม่รู้เข้าใจถูกปล่าวนะ

    ส่วนหลักๆ ก้ อยู่แถวๆ นี้ละครับ ลองอ่านดู อธิบายทีละบรรทัดก้ขี้เกียจ

    public abstract class JavaCanvas extends FullCanvas{

    private static final byte APP_POSITION_X = 24;
    private static final byte APP_POSITION_Y = 76;
    private static final String borderImage = "/176-220.png";

    private int drawAppX;
    private int drawAppY;
    private boolean drawBorderCheck;
    protected boolean gameDestroy;
    private Image drawImage;
    private Image border;
    private Graphics gImage;

    public JavaCanvas(){

    CalculateDrawShift(this.getWidth(), this.getHeight()); // ** ไว้เช็กขนาดหน้าจอนะครับ

    drawImage = Image.createImage(128, 128);
    gImage = drawImage.getGraphics();
    gameDestroy = false;
    loadBorder();
    }

    public void paint(Graphics g){
    }

    protected Graphics beginPaint(Graphics g){
    return gImage;
    }

    protected void endPaint(Graphics g){

    g.drawImage(drawImage, drawAppX, drawAppY, 0);

    if(drawBorderCheck){
    g.drawImage(border, drawAppX - APP_POSITION_X, drawAppY - APP_POSITION_Y, 0);
    }
    }



    public void destroyGame() {
    gameDestroy = true;
    }


    private void loadBorder(){
    try{
    if(drawBorderCheck){
    border = Image.createImage(borderImage);
    } else {
    border = null;
    }
    } catch(IOException e){
    }
    }

    private void CalculateDrawShift(int x, int y){
    if(x == 128){
    drawAppX = 0;
    }
    if(y == 128){
    drawAppY = 0;
    }
    if(x < 128){
    drawAppX = (x - 128) / 2;
    }
    if(y < 128){
    drawAppY = (y - 128) / 2;
    }
    if((x <= 128) && (y <= 128)){
    drawBorderCheck = false;
    }
    if((x > 128) || (y > 128)){
    drawBorderCheck = true;
    if(x == 176){
    drawAppX = APP_POSITION_X;
    } else {
    drawAppX = (x - 128) / 2;
    }
    if((y == 220) || (APP_POSITION_Y + 128 <= y)){
    drawAppY = APP_POSITION_Y;
    } else if(APP_POSITION_Y >= 220 - y){
    drawAppY = 220 - y;
    } else {
    drawAppY = (y - 128) / 2;
    }
    }
    }
    }

  5. #5
    Junior Member
    Join Date
    Nov 2006
    Posts
    0


    ก่อนอื่นต้องขอ ขอบคุณ คุณ toonsuperlove มากๆ เลยนะครับ ที่สละเวลาเข้ามาตอบคำถามของผม คือสิ่งที่ผมสงสัย มันไม่ได้เป็นอย่างที่คุณ toonsuperlove เข้าใจครับ คือผมหมายถึงว่า ถ้าปกติแล้ว เกมส์มันมีขนาดหน้าจอ 100*100 pixel(ตัวเลขสมมตินะครับ) แล้วผมจะแก้ให้มันเล่นบนหน้าจอที่มีขนาด 128*176 pixel โดยแสดงผลแบบเต็มหน้าจอนะครับ(พูดง่ายๆ ก็คือ ขยาย pixel ของเกมส์น่ะครับ) จะสามารถทำได้หรือไม่ คือ ณ ตอนนั้น (ขณะที่ผมตั้งคำถามน่ะครับ) ผมเข้าใจผิด คิดว่า method SetFullScreenMode(true); มีลักษณะการทำงานดังกล่าวข้างบน ผมเลยลองใช้ method SetFullScreenMode(true); ปรากฎว่า มันไม่ได้เป็นอย่างที่คิดเพราะว่า method SetFullScreenMode(true); มันแค่แสดงผลแบบเต็มหน้าจอ (โดยการตัดแถบเมนูส่วนล่างของจอภาพ และ ตัดแถบเสาอากาศหรือแบตเตอรี่ด้านบน) คือ ผมเพิ่งจะเริ่มศึกษา j2me น่ะครับ เลยยังไม่ค่อยเข้าที่เข้าทาง แต่ ณ ตอนนี้ก็พอจะรู้อะไรมากขึ้นมาหน่อยนึงแล้วครับ แต่ก็ยังต้องพยามยามศึกษาอีกเยอะ ยังไงก็ขอบคุณ คุณ toonsuperlove มากนะครับ ที่มีน้ำใจ ช่วยเข้ามาตอบ

  6. #6
    Senior Member
    Join Date
    Jul 2004
    Location
    Bangkok
    Posts
    187


    ต้องแก้ code ทั้งหมด รวมไปถึงแก้ขนาด ภาพ image เกือบทั้งหมด ด้วยแล้วแต่ต้องการ

    จริงๆหลักๆ ที่จะทำให้เขียนโปรแกรมให้สามารถรันขึ้นบนหลายหน้าจอ คือ
    - หลีกเลี่ยงการ hard-code ให้อิงกับค่าตัวแปร พวกขนาดหน้าจอ (screen width,-height) และอาจจะใช้ขนาดของภาพ (image width, height)
    - ขึ้นอยู่กับ game design ว่าสามารถออกแบบให้ยึดหรือขยายหน้าจอได้หรือไม่ อาจจะทำการวาดรูปโดยการอิงกับขอบ (ชิดบน ชิดล่าง ชิดซ้าย ชิดขวา เป็นต้น) เพื่อให้ง่าย ให้อ้างอิงจากการทำเกมที่หน้าจอที่ขนาดเล็กแล้วค่อยไปทำหน้าจอใหญ่
    - เขียน code แบบใช้ Scale Factor โดยให้มองว่า ขนาดหน้าจอเป็น (0, 0) - (1, 1)

Similar Threads

  1. J2ME in a Nutshell
    By chaochao in forum Java
    Replies: 0
    Last Post: 23-09-2007, 08:13 PM
  2. J2ME กับภาษาไทย
    By Anonymous in forum Symbian C++, J2ME, Brew,XHTML
    Replies: 3
    Last Post: 25-01-2005, 11:05 AM
  3. Replies: 2
    Last Post: 22-12-2004, 07:11 PM
  4. Replies: 0
    Last Post: 16-03-2004, 11:47 AM

Members who have read this thread : 0

Actions : (View-Readers)

There are no names to display.

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •