Введение.
Доброго времени!!!
Эта маленькая статья и набор скриншотов покажет Вам, как создавать
простейшее приложение для мобильного телефона, которое обладает
свойствами простейшей анимации. Предполагается, что у Вас установлен
и настроен JDK и рабочая среда NetBeans v4.0.
Создание нового проекта
- Запустите среду разработки NetBeans;
- Выберите пункт меню File-->New project:
- В появившемся окне создания нового проекта, выберите Mobile-->Mobile Applecation:
- Нажмите кнопку Next для перехода к правке имени проекта и места расположения:
- Нажмите кнопку Next для перехода к правке платформы выполенеия и дополнительных настроек:
- Нажмите кнопку Finish для завершения настройки и создания проекта.
После создания проекта, в разделе проекты будет создан Sc_pong.
В скриншоте присутствуют созданные мной обьекты - в Вашем новом проекте их не будет.
Вам прийдется их создать на базе тех исходных текстов, что приведены ниже.
Исходные тексты
Исходный текст файла Main.java>:
/*
* Main.java
*
* Created on 16 Январь 2005 г., 20:45
*/
package Sc_pong;
import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
/**
*
* @author scalan
* @version
*/
public class Main extends MIDlet {
private Display display; // The display for this MIDlet
public Main() {
display = Display.getDisplay(this);
}
public void startApp() {
System.gc();
N n = new N(this);
display.setCurrent(n);
Thread t = new Thread(n);
t.start();
}
public void pauseApp() {
}
public void destroyApp(boolean unconditional) {
}
}
Исходный текст файла N.java>:
/*
* N.java
*
* Created on 16 Январь 2005 г., 20:58
*/
package Sc_pong;
import javax.microedition.lcdui.*;
/**
*
* @author scalan
*/
public class N
extends Canvas
implements CommandListener, Runnable {
private Main d;
private Command okCommand; // The save game command
private Command backCommand; // The back command
private boolean exitF = false;
private Pong pong;
/** Creates a new instance of N */
public N(Main d) {
super();
this.d = d;
pong = new Pong(getWidth(), getHeight());
backCommand = new Command("Back", Command.BACK, 3);
okCommand = new Command("Ok", Command.BACK, 3);
addCommand(backCommand);
setCommandListener(this);
}
/*
* repaint
*/
protected void paintClipRect(Graphics g){
int clipX = g.getClipX();
int clipY = g.getClipY();
int clipH = g.getClipHeight();
int clipW = g.getClipWidth();
int color = g.getColor();
g.setColor(0xFF << 16 | 0xFF << 8 | 0xFF); // White
g.fillRect(clipX, clipY, clipW, clipH);
g.setColor(color);
}
/**
* paint
*/
public void paint(Graphics g) {
paintClipRect(g);
pong.paint(g);
}
/**
* Called when a key is pressed.
*/
protected void keyPressed(int keyCode) {
}
/**
* Called when a key is released.
*/
protected void keyReleased(int keyCode) {
}
/**
* Called when a key is repeated (held down).
*/
protected void keyRepeated(int keyCode) {
}
/**
* Called when the pointer is dragged.
*/
protected void pointerDragged(int x, int y) {
}
/**
* Called when the pointer is pressed.
*/
protected void pointerPressed(int x, int y) {
}
/**
* Called when the pointer is released.
*/
protected void pointerReleased(int x, int y) {
}
/*
* Respond to commands, including exit
* On the exit command, cleanup and notify that the MIDlet has been destroyed.
*/
public void commandAction(Command c, Displayable s) {
if (c == backCommand || c == okCommand) {
exitF = true;
// Main.getInstance().display();
}
}
public void run() {
while(!exitF){
pong.move();
try{
Thread.sleep(10);
}
catch(InterruptedException e){
}
repaint();
}
addCommand(okCommand);
}
}
Исходный текст файла N.java>:
/*
* Pong.java
*
* Created on 16 Январь 2005 г., 21:10
*/
package Sc_pong;
import javax.microedition.lcdui.*;
/**
*
* @author scalan
*/
public class Pong {
private int x;
private int y;
private int Vx;
private int Vy;
private int r = 4;
private int v = 7;
private int maxX;
private int maxY;
/** Creates a new instance of Pong */
public Pong(int maxX, int maxY) {
x = 10;
y = 10;
Vx = 3;
Vy = 1;
this.maxX = maxX;
this.maxY = maxY;
}
/**
* paint
*/
public void paint(Graphics g){
g.setColor(0, 0, 0);
g.drawRect(x,y, r, r);
}
public void move(){
// ---[ Move ]---
x+=Vx;
y+=Vy;
//---[ Border limits ]---
if(x>maxX-r){ x = maxX - r; Vx=-Vx; }
if(xmaxY-r){ y = maxY - r; Vy=-Vy; }
if(y
Компиляция проекта
После удачного создания подключения исходных текстов наша цель -
посмотреть работу.
Но перед этим необходимо скомпилировать проект. Т.е. получить
файлы, которые можно загрузить в эмулятор и выполнить, а
также в реальный телефон и тоже выполнить...
- Для компиляции проекта необходимо в разделе проектов на имени
созданного проекта нажать кнопку мыши, вызывающую контекстное меню,
и выбрать пункт Build Project.
- Компиляция проекта завершена.
Выполнение проекта
После успешной компиляции проекта попробуем его выполнить в эмуляторе.
Используя среду разработки NetBeans это сделать очень просто.
- Для выполнения проекта необходимо в разделе проектов на имени
выполняемого проекта нажать кнопку мыши, вызывающую контекстное меню,
и выбрать пункт Run Project:
- На экране будет загружен симпатичный эмулятор мобильного телефона:
- Для запуска проекта в эмуляторе - нажимаем кнопку (в эмуляторе)
под надписью Launch. После этого начнется выполнение Вашего
проекта. Скриншот созданного проекта:
- На экране отобразится маленький квадрат, который бедет перемещаться по
экрану виртуального мобильного телефона и отскакивать от стенок.
- Закрываем окно эмулятора.
Заключение
Поздравляю!!! Мы с Вами создали простейший проект, в котором
реализовали перемещение обьекта по экрану телефона.
Вы увидели, что процесс создания анимации для
мобильных телефонов не сложен.
Заархивированные файлы проета для скачивания расположены
здесь. (zip ~ 35 kb).
|