Parthia
یک شنبه 17 شهریور 1387, 23:04 عصر
سلام دوستان
یه سوال داشتم
راستش من یه برنامه خیلی ساده نوشتم با جاوا برای گوشیم و همه چیز خیلی خوب کار میکنه فقط دو تا مشکل داره
یکی اینکه وقتی برنامه رو روی گوشی خودم (N72) نصب میکنم (بقیه رو تست نکردم) بر خلاف بقیه برنامه ها دو تا فایل برنامه میسازه که یکی هم اسم کلاس Midlet هست که باید حتما این باشه ولی دیگری هم اسم کلاس Canvas منه که نمیدونم چرا اینم میاد کنار برنامه ام و قابل اجرا هم نیست
در ضمن مشکل دیگه من (از بی تجربگی) اینه که نمیدونم چطوری باید از طریق کلاس Canvas به اعضای Midlet دسترسی پیدا کنم و مثلا تابع destroyApp و notifyDestroyed رو فراخوانی کنم که اگه کمک کنید ممنون میشم البته خودم یه راهی پیدا کردم که کلاس Midlet رو به سازنده Canvas بفرستم و بعد notifyDestroyed که البته توی خارج شدن از برنامه کلی waiting داره ... (از طریق فرستادن this به structure)
با توجه به اینکه رشته من هیچ ربطی به کامپیوتر نداره و سنم هم کمه پس رو در باسی نداریم با هم (بلد نیستم) !!! :لبخند: اینم کدها : :کف:
//Author : Morteza Sherafati (mortie.sh@gmail.com)
import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
public class Game extends MIDlet
{
Display display = Display.getDisplay(this);
public void startApp()
{
CGame cg = new CGame(this);
display.setCurrent(cg);
}
public void pauseApp()
{}
public void destroyApp(boolean opt)
{}
}
//Author : Morteza Sherafati (mortie.sh@gmail.com)
import javax.microedition.lcdui.*;
import javax.microedition.midlet.MIDlet;
public class CGame extends Canvas implements Runnable
{
private int mover=0,x,y;
private Image img;
MIDlet Midlet;
Thread runner;
Command cmdExit = new Command("Exit",Command.EXIT,1);
CGame(MIDlet game)
{
try
{
img = Image.createImage("/Pic.png");
}
catch(Exception e)
{System.out.print(e.getMessage());}
Midlet = game;
x = getWidth()/2 - img.getWidth()/2;
y = getHeight()/2 - img.getHeight()/2;
this.addCommand(cmdExit);
this.setCommandListener(cl);
runner = new Thread(this);
runner.start();
}
CommandListener cl = new CommandListener()
{
public void commandAction(Command c, Displayable s)
{
if (c == cmdExit)
Midlet.notifyDestroyed();
}
};
protected void keyPressed(int keyCode)
{
int action = getGameAction(keyCode);
switch(action)
{
case RIGHT:
mover = 1;
break;
case LEFT:
mover = -1;
break;
case UP:
mover = -2;
break;
case DOWN:
mover = 2;
break;
case FIRE:
mover = 0;
break;
}
}
public void run()
{
while(true)
{
switch(mover)
{
case 1:
x += 1;
break;
case -1:
x -= 1;
break;
case 2:
y += 1;
break;
case -2:
y -= 1;
break;
}
repaint();
if (x == 0)
mover = 1;
if (x == getWidth() - img.getWidth())
mover = -1;
if (y == 0)
mover = 2;
if (y == getHeight() - img.getHeight())
mover = -2;
try
{
Thread.sleep(10);
}
catch(Exception e)
{System.out.print(e.getMessage());}
}
}
public void paint(Graphics g)
{
g.setColor(255, 255, 255);
g.fillRect(0, 0, getWidth(), getHeight());
g.drawImage(img, x, y, 0);
}
}
یه سوال داشتم
راستش من یه برنامه خیلی ساده نوشتم با جاوا برای گوشیم و همه چیز خیلی خوب کار میکنه فقط دو تا مشکل داره
یکی اینکه وقتی برنامه رو روی گوشی خودم (N72) نصب میکنم (بقیه رو تست نکردم) بر خلاف بقیه برنامه ها دو تا فایل برنامه میسازه که یکی هم اسم کلاس Midlet هست که باید حتما این باشه ولی دیگری هم اسم کلاس Canvas منه که نمیدونم چرا اینم میاد کنار برنامه ام و قابل اجرا هم نیست
در ضمن مشکل دیگه من (از بی تجربگی) اینه که نمیدونم چطوری باید از طریق کلاس Canvas به اعضای Midlet دسترسی پیدا کنم و مثلا تابع destroyApp و notifyDestroyed رو فراخوانی کنم که اگه کمک کنید ممنون میشم البته خودم یه راهی پیدا کردم که کلاس Midlet رو به سازنده Canvas بفرستم و بعد notifyDestroyed که البته توی خارج شدن از برنامه کلی waiting داره ... (از طریق فرستادن this به structure)
با توجه به اینکه رشته من هیچ ربطی به کامپیوتر نداره و سنم هم کمه پس رو در باسی نداریم با هم (بلد نیستم) !!! :لبخند: اینم کدها : :کف:
//Author : Morteza Sherafati (mortie.sh@gmail.com)
import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
public class Game extends MIDlet
{
Display display = Display.getDisplay(this);
public void startApp()
{
CGame cg = new CGame(this);
display.setCurrent(cg);
}
public void pauseApp()
{}
public void destroyApp(boolean opt)
{}
}
//Author : Morteza Sherafati (mortie.sh@gmail.com)
import javax.microedition.lcdui.*;
import javax.microedition.midlet.MIDlet;
public class CGame extends Canvas implements Runnable
{
private int mover=0,x,y;
private Image img;
MIDlet Midlet;
Thread runner;
Command cmdExit = new Command("Exit",Command.EXIT,1);
CGame(MIDlet game)
{
try
{
img = Image.createImage("/Pic.png");
}
catch(Exception e)
{System.out.print(e.getMessage());}
Midlet = game;
x = getWidth()/2 - img.getWidth()/2;
y = getHeight()/2 - img.getHeight()/2;
this.addCommand(cmdExit);
this.setCommandListener(cl);
runner = new Thread(this);
runner.start();
}
CommandListener cl = new CommandListener()
{
public void commandAction(Command c, Displayable s)
{
if (c == cmdExit)
Midlet.notifyDestroyed();
}
};
protected void keyPressed(int keyCode)
{
int action = getGameAction(keyCode);
switch(action)
{
case RIGHT:
mover = 1;
break;
case LEFT:
mover = -1;
break;
case UP:
mover = -2;
break;
case DOWN:
mover = 2;
break;
case FIRE:
mover = 0;
break;
}
}
public void run()
{
while(true)
{
switch(mover)
{
case 1:
x += 1;
break;
case -1:
x -= 1;
break;
case 2:
y += 1;
break;
case -2:
y -= 1;
break;
}
repaint();
if (x == 0)
mover = 1;
if (x == getWidth() - img.getWidth())
mover = -1;
if (y == 0)
mover = 2;
if (y == getHeight() - img.getHeight())
mover = -2;
try
{
Thread.sleep(10);
}
catch(Exception e)
{System.out.print(e.getMessage());}
}
}
public void paint(Graphics g)
{
g.setColor(255, 255, 255);
g.fillRect(0, 0, getWidth(), getHeight());
g.drawImage(img, x, y, 0);
}
}