sd.CSharpProgrammer
جمعه 20 آبان 1390, 12:03 عصر
سلام دوستان
من برنامه نویسی جاوای موبایل رو تازه شروع کردم. با توجه به چیزایی که خوندم سعی کردم یه تقویم گرافیکی بنویسم. برنامه یه کانوس داره به اسم MainCanvas که وقتی Options انتخاب میشه باید یه منوی کوچیک رو پایین صفحه نشون بده.
منو ظاهر میشه ولی مشکلی که هست اینه که سرعت نسبت به برنامه های دیگه خیلی کنده. اولش فکر کردم اگه از GameCanvas استفاده کنم مشکل حل میشه ولی بعد از استفاده از اون و یک ترد باز مشکل باقیه. نمیدونم چیکار کنم. خواهش میکنم دوستانی که تجربه بیشتری دارند کمک کنند. من سورس برنامه رو اینجا میذارم دوستان با تجربه بگن مشکل از کجاست.
ممنون
package aua.youthchapter.iran.nineveh;
import java.io.IOException;
import javax.microedition.lcdui.*;
import javax.microedition.lcdui.game.*;
/**
*
* @author Home
*/
public class MainCanvas extends GameCanvas implements Runnable {
public MainCanvas(Nineveh appInst) {
super(true);
nineveh = appInst;
setFullScreenMode(true);
}
public void start() {
Thread runner = new Thread(this);
runner.start();
}
public void run() {
while (true) {
verifyAppState();
checkUserInput();
updateAppScreen(getGraphics());
try {
Thread.sleep(30);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
private void verifyAppState() {
}
private void checkUserInput() {
int keyStates = getKeyStates();
if ((keyStates & LEFT_PRESSED) != 0) {
drawOptionsMenu = true;
flushGraphics();
}
}
private void updateAppScreen(Graphics g) {
int col = 1;
//Image sat, sun; //, mon, tue, wed, thu, fri;
Image auabrand, ltitle, rtitle, titlebar, optionsCmd, selectCmd, backCmd, cancelCmd, exitCmd, commandbar, month;
Image nextMonth1, nextMonth2, prevMonth1, prevMonth2, todayEvents1, todayEvents2;
Image otherCalendars1, otherCalendars2, aboutNineveh1, aboutNineveh2;
auabrand = ltitle = rtitle = titlebar = optionsCmd = selectCmd = backCmd = cancelCmd = exitCmd = commandbar = month = null;
nextMonth1 = nextMonth2 = prevMonth1 = prevMonth2 = todayEvents1 = todayEvents2 = null;
otherCalendars1 = otherCalendars2 = aboutNineveh1 = aboutNineveh2 = null;
//sat = sun = null; //mon = tue = wed = thu = fri = null;
// clear screen.
g.setColor(158, 190, 247);
g.fillRect(0, 0, getWidth(), getHeight());
try {
auabrand = Image.createImage("/aua/youthchapter/iran/nineveh/images/auabrand.png");
ltitle = Image.createImage("/aua/youthchapter/iran/nineveh/images/bars/ltitle.png");
rtitle = Image.createImage("/aua/youthchapter/iran/nineveh/images/bars/rtitle.png");
titlebar = Image.createImage("/aua/youthchapter/iran/nineveh/images/bars/titlebar.png");
optionsCmd = Image.createImage("/aua/youthchapter/iran/nineveh/images/bars/Options.png");
selectCmd = Image.createImage("/aua/youthchapter/iran/nineveh/images/bars/Select.png");
backCmd = Image.createImage("/aua/youthchapter/iran/nineveh/images/bars/Back.png");
cancelCmd = Image.createImage("/aua/youthchapter/iran/nineveh/images/bars/Cancel.png");
exitCmd = Image.createImage("/aua/youthchapter/iran/nineveh/images/bars/Exit.png");
commandbar = Image.createImage("/aua/youthchapter/iran/nineveh/images/bars/commandbar.png");
month = Image.createImage("/aua/youthchapter/iran/nineveh/images/months/Dabakh.png");
nextMonth1 = Image.createImage("/aua/youthchapter/iran/nineveh/images/menus/nm1.png");
nextMonth2 = Image.createImage("/aua/youthchapter/iran/nineveh/images/menus/nm2.png");
prevMonth1 = Image.createImage("/aua/youthchapter/iran/nineveh/images/menus/pm1.png");
prevMonth2 = Image.createImage("/aua/youthchapter/iran/nineveh/images/menus/pm2.png");
todayEvents1 = Image.createImage("/aua/youthchapter/iran/nineveh/images/menus/te1.png");
todayEvents2 = Image.createImage("/aua/youthchapter/iran/nineveh/images/menus/te2.png");
otherCalendars1 = Image.createImage("/aua/youthchapter/iran/nineveh/images/menus/oc1.png");
otherCalendars2 = Image.createImage("/aua/youthchapter/iran/nineveh/images/menus/oc2.png");
aboutNineveh1 = Image.createImage("/aua/youthchapter/iran/nineveh/images/menus/an1.png");
aboutNineveh2 = Image.createImage("/aua/youthchapter/iran/nineveh/images/menus/an2.png");
} catch (IOException e) {
e.printStackTrace();
}
// draw titlebar.
for (int index = 0; index < 10; index++) {
g.drawImage(titlebar, col, 1, 0);
col += 20;
}
g.drawLine(getWidth() - 1, 0, getWidth() - 1, 50);
g.drawImage(ltitle, 1, 1, 0);
g.drawImage(rtitle, getWidth() - rtitle.getWidth() - 1, 1, 0);
// draw client area.
g.setColor(0, 0, 0);
g.drawRect(1, titlebar.getHeight(), getWidth() - 3, getHeight() - titlebar.getHeight() - commandbar.getHeight() - 1);
g.setColor(220, 229, 245);
g.fillRect(2, titlebar.getHeight() + 1, getWidth() - 4, getHeight() - titlebar.getHeight() - commandbar.getHeight() - 2);
// draw month.
g.drawImage(month, (getWidth() / 2) - (month.getWidth() / 2), 4, 0);
// draw command bar.
col = 1;
for (int index = 0; index < 10; index++) {
g.drawImage(commandbar, col, getHeight() - commandbar.getHeight() - 1, 0);
col += 20;
}
// draw commands.
g.setColor(158, 190, 247);
g.drawLine(getWidth() - 1, getHeight() - commandbar.getHeight() - 2, getWidth() - 1, getHeight() + 10);
g.drawImage(optionsCmd, 1, getHeight() - commandbar.getHeight() - 1, 0);
g.drawImage(exitCmd, getWidth() - exitCmd.getWidth() - 1, getHeight() - commandbar.getHeight() - 1, 0);
// draw aua brand.
int y = getHeight() - titlebar.getHeight() - commandbar.getHeight();
g.drawImage(auabrand, (getWidth() / 2) - (auabrand.getWidth() / 2), (y / 2) - (auabrand.getHeight() / 2) + titlebar.getHeight(), 0);
if (drawOptionsMenu) {
int itemsYStartPos = getHeight() - commandbar.getHeight() - 126;
// draw options menu rectangle.
g.setColor(0, 0, 0);
g.drawRect(1, getHeight() - commandbar.getHeight() - 128, 153, 127);
g.setColor(238, 244, 251);
g.fillRect(2, getHeight() - commandbar.getHeight() - 127, 152, 126);
// draw options menu items.
g.drawImage(nextMonth2, 3, itemsYStartPos, 0);
g.drawImage(prevMonth1, 3, itemsYStartPos + 25, 0);
g.drawImage(todayEvents1, 3, itemsYStartPos + (25 * 2), 0);
g.drawImage(otherCalendars1, 3, itemsYStartPos + (25 * 3), 0);
g.drawImage(aboutNineveh1, 3, itemsYStartPos + (25 * 4), 0);
// draw command bar.
col = 1;
for (int index = 0; index < 10; index++) {
g.drawImage(commandbar, col, getHeight() - commandbar.getHeight() - 1, 0);
col += 20;
}
// draw commands for options menu.
g.setColor(158, 190, 247);
g.drawLine(getWidth() - 1, getHeight() - commandbar.getHeight() - 2, getWidth() - 1, getHeight() + 10);
g.drawImage(selectCmd, 1, getHeight() - commandbar.getHeight() - 1, 0);
g.drawImage(cancelCmd, getWidth() - cancelCmd.getWidth() - 1, getHeight() - commandbar.getHeight() - 1, 0);
}
flushGraphics();
}
private Nineveh nineveh = null;
private boolean drawOptionsMenu = false;
}
من برنامه نویسی جاوای موبایل رو تازه شروع کردم. با توجه به چیزایی که خوندم سعی کردم یه تقویم گرافیکی بنویسم. برنامه یه کانوس داره به اسم MainCanvas که وقتی Options انتخاب میشه باید یه منوی کوچیک رو پایین صفحه نشون بده.
منو ظاهر میشه ولی مشکلی که هست اینه که سرعت نسبت به برنامه های دیگه خیلی کنده. اولش فکر کردم اگه از GameCanvas استفاده کنم مشکل حل میشه ولی بعد از استفاده از اون و یک ترد باز مشکل باقیه. نمیدونم چیکار کنم. خواهش میکنم دوستانی که تجربه بیشتری دارند کمک کنند. من سورس برنامه رو اینجا میذارم دوستان با تجربه بگن مشکل از کجاست.
ممنون
package aua.youthchapter.iran.nineveh;
import java.io.IOException;
import javax.microedition.lcdui.*;
import javax.microedition.lcdui.game.*;
/**
*
* @author Home
*/
public class MainCanvas extends GameCanvas implements Runnable {
public MainCanvas(Nineveh appInst) {
super(true);
nineveh = appInst;
setFullScreenMode(true);
}
public void start() {
Thread runner = new Thread(this);
runner.start();
}
public void run() {
while (true) {
verifyAppState();
checkUserInput();
updateAppScreen(getGraphics());
try {
Thread.sleep(30);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
private void verifyAppState() {
}
private void checkUserInput() {
int keyStates = getKeyStates();
if ((keyStates & LEFT_PRESSED) != 0) {
drawOptionsMenu = true;
flushGraphics();
}
}
private void updateAppScreen(Graphics g) {
int col = 1;
//Image sat, sun; //, mon, tue, wed, thu, fri;
Image auabrand, ltitle, rtitle, titlebar, optionsCmd, selectCmd, backCmd, cancelCmd, exitCmd, commandbar, month;
Image nextMonth1, nextMonth2, prevMonth1, prevMonth2, todayEvents1, todayEvents2;
Image otherCalendars1, otherCalendars2, aboutNineveh1, aboutNineveh2;
auabrand = ltitle = rtitle = titlebar = optionsCmd = selectCmd = backCmd = cancelCmd = exitCmd = commandbar = month = null;
nextMonth1 = nextMonth2 = prevMonth1 = prevMonth2 = todayEvents1 = todayEvents2 = null;
otherCalendars1 = otherCalendars2 = aboutNineveh1 = aboutNineveh2 = null;
//sat = sun = null; //mon = tue = wed = thu = fri = null;
// clear screen.
g.setColor(158, 190, 247);
g.fillRect(0, 0, getWidth(), getHeight());
try {
auabrand = Image.createImage("/aua/youthchapter/iran/nineveh/images/auabrand.png");
ltitle = Image.createImage("/aua/youthchapter/iran/nineveh/images/bars/ltitle.png");
rtitle = Image.createImage("/aua/youthchapter/iran/nineveh/images/bars/rtitle.png");
titlebar = Image.createImage("/aua/youthchapter/iran/nineveh/images/bars/titlebar.png");
optionsCmd = Image.createImage("/aua/youthchapter/iran/nineveh/images/bars/Options.png");
selectCmd = Image.createImage("/aua/youthchapter/iran/nineveh/images/bars/Select.png");
backCmd = Image.createImage("/aua/youthchapter/iran/nineveh/images/bars/Back.png");
cancelCmd = Image.createImage("/aua/youthchapter/iran/nineveh/images/bars/Cancel.png");
exitCmd = Image.createImage("/aua/youthchapter/iran/nineveh/images/bars/Exit.png");
commandbar = Image.createImage("/aua/youthchapter/iran/nineveh/images/bars/commandbar.png");
month = Image.createImage("/aua/youthchapter/iran/nineveh/images/months/Dabakh.png");
nextMonth1 = Image.createImage("/aua/youthchapter/iran/nineveh/images/menus/nm1.png");
nextMonth2 = Image.createImage("/aua/youthchapter/iran/nineveh/images/menus/nm2.png");
prevMonth1 = Image.createImage("/aua/youthchapter/iran/nineveh/images/menus/pm1.png");
prevMonth2 = Image.createImage("/aua/youthchapter/iran/nineveh/images/menus/pm2.png");
todayEvents1 = Image.createImage("/aua/youthchapter/iran/nineveh/images/menus/te1.png");
todayEvents2 = Image.createImage("/aua/youthchapter/iran/nineveh/images/menus/te2.png");
otherCalendars1 = Image.createImage("/aua/youthchapter/iran/nineveh/images/menus/oc1.png");
otherCalendars2 = Image.createImage("/aua/youthchapter/iran/nineveh/images/menus/oc2.png");
aboutNineveh1 = Image.createImage("/aua/youthchapter/iran/nineveh/images/menus/an1.png");
aboutNineveh2 = Image.createImage("/aua/youthchapter/iran/nineveh/images/menus/an2.png");
} catch (IOException e) {
e.printStackTrace();
}
// draw titlebar.
for (int index = 0; index < 10; index++) {
g.drawImage(titlebar, col, 1, 0);
col += 20;
}
g.drawLine(getWidth() - 1, 0, getWidth() - 1, 50);
g.drawImage(ltitle, 1, 1, 0);
g.drawImage(rtitle, getWidth() - rtitle.getWidth() - 1, 1, 0);
// draw client area.
g.setColor(0, 0, 0);
g.drawRect(1, titlebar.getHeight(), getWidth() - 3, getHeight() - titlebar.getHeight() - commandbar.getHeight() - 1);
g.setColor(220, 229, 245);
g.fillRect(2, titlebar.getHeight() + 1, getWidth() - 4, getHeight() - titlebar.getHeight() - commandbar.getHeight() - 2);
// draw month.
g.drawImage(month, (getWidth() / 2) - (month.getWidth() / 2), 4, 0);
// draw command bar.
col = 1;
for (int index = 0; index < 10; index++) {
g.drawImage(commandbar, col, getHeight() - commandbar.getHeight() - 1, 0);
col += 20;
}
// draw commands.
g.setColor(158, 190, 247);
g.drawLine(getWidth() - 1, getHeight() - commandbar.getHeight() - 2, getWidth() - 1, getHeight() + 10);
g.drawImage(optionsCmd, 1, getHeight() - commandbar.getHeight() - 1, 0);
g.drawImage(exitCmd, getWidth() - exitCmd.getWidth() - 1, getHeight() - commandbar.getHeight() - 1, 0);
// draw aua brand.
int y = getHeight() - titlebar.getHeight() - commandbar.getHeight();
g.drawImage(auabrand, (getWidth() / 2) - (auabrand.getWidth() / 2), (y / 2) - (auabrand.getHeight() / 2) + titlebar.getHeight(), 0);
if (drawOptionsMenu) {
int itemsYStartPos = getHeight() - commandbar.getHeight() - 126;
// draw options menu rectangle.
g.setColor(0, 0, 0);
g.drawRect(1, getHeight() - commandbar.getHeight() - 128, 153, 127);
g.setColor(238, 244, 251);
g.fillRect(2, getHeight() - commandbar.getHeight() - 127, 152, 126);
// draw options menu items.
g.drawImage(nextMonth2, 3, itemsYStartPos, 0);
g.drawImage(prevMonth1, 3, itemsYStartPos + 25, 0);
g.drawImage(todayEvents1, 3, itemsYStartPos + (25 * 2), 0);
g.drawImage(otherCalendars1, 3, itemsYStartPos + (25 * 3), 0);
g.drawImage(aboutNineveh1, 3, itemsYStartPos + (25 * 4), 0);
// draw command bar.
col = 1;
for (int index = 0; index < 10; index++) {
g.drawImage(commandbar, col, getHeight() - commandbar.getHeight() - 1, 0);
col += 20;
}
// draw commands for options menu.
g.setColor(158, 190, 247);
g.drawLine(getWidth() - 1, getHeight() - commandbar.getHeight() - 2, getWidth() - 1, getHeight() + 10);
g.drawImage(selectCmd, 1, getHeight() - commandbar.getHeight() - 1, 0);
g.drawImage(cancelCmd, getWidth() - cancelCmd.getWidth() - 1, getHeight() - commandbar.getHeight() - 1, 0);
}
flushGraphics();
}
private Nineveh nineveh = null;
private boolean drawOptionsMenu = false;
}