Читайте также:
|
|
Капустин А
МФ-192
ЛАБОРАТОРНАЯ РАБОТА № 9
«Изучение NetBeans, интегрированной среды разработки для J2ME.
Плиточный слой»
ЦЕЛЬ РАБОТЫ
Продолжить изучение возможностей интегрированной среды разработки NetBeans, с помощью которой возможны создание, компилирование, тестирование и упаковка, а также возможна работа с плиточными слоями в Java-приложениях для мобильных устройств.
import javax.microedition.lcdui.*;
import javax.microedition.midlet.*;
import java.io.*;
import javax.microedition.lcdui.game.*;
public class MainGame extends MIDlet implements CommandListener
{
// команда выхода
private Command exitMidlet = new Command("Выход", Command.EXIT, 0);
// объект класса MyGameCanvas
private MyGameCanvas mr;
public void startApp()
{
// обрабатываем исключительную ситуацию
try{
// инициалезируем объект класса MyGameCanvas
mr = new MyGameCanvas();
// запускаем поток
mr.start();
// добовляем команду выхода
mr.addCommand(exitMidlet);
mr.setCommandListener(this);
// отражаем текущий дисплей
Display.getDisplay(this).setCurrent(mr);
}catch (java.io.IOException zxz) {};
}
public void pauseApp() {}
public void destroyApp(boolean unconditional)
{
// останавливаем поток
if(mr!= null) mr.stop();
}
public void commandAction(Command c, Displayable d)
{
if (c == exitMidlet)
{
destroyApp(false);
notifyDestroyed();
}
}
}
class MyGameCanvas extends GameCanvas implements Runnable
{
// объявляем объект класса LayerManager
private LayerManager lm;
// объявляем объект класса TiledLayer - плиточный слой
private TiledLayer til;
// объявляем переменную индекса анимированной ячейки
int anim_ind;
// логическая переменная
boolean z;
// создаем очередь тайлов для анимации
static int[] seq = { 2, 5, 1, 4 };
// переменная индекса в очереди
int seq_ind=0;
// счетчик
int count;
public MyGameCanvas() throws IOException
{
// обращаемся к конструктору суперкласса Canvas
super(true);
// загружаем изображение
Image im = Image.createImage("/zagotovka.png");
// создаем плиточный слой размером 4 на 6 - нумерация столбцов и колонок с 0!!!
til = new TiledLayer(4,6,im, 50,50);
til.setCell(0,0,4);//заполнение одной ячейки
til.setCell(1,0,4);
til.setCell(2,0,4);
til.setCell(3,0,4);
til.setCell(0,1,4);
til.setCell(1,1,4);
til.setCell(2,1,13);
til.setCell(3,1,14);
til.setCell(0,2,1);
til.setCell(1,2,2);
til.setCell(2,2,3);
til.setCell(3,2,5);
til.setCell(0,3,5);
til.setCell(1,3,5);
til.setCell(2,3,1);
til.setCell(3,3,3);
til.setCell(0,4,1);
til.setCell(1,4,2);
til.setCell(2,4,3);
til.setCell(3,4,5);
til.setCell(0,5,5);
til.setCell(1,5,1);
til.setCell(2,5,2);
til.setCell(3,5,3);
// создаем менеджер уровней
lm = new LayerManager();
// добовляем плиточный слой к уровню
lm.append(til);
}
public void start()
{
z = true;
// создаем и запускаем поток
Thread t = new Thread(this);
t.start();
}
// останавливаем поток
public void stop(){ z = false; }
public void run()
{
// получаем графический контекст
Graphics g = getGraphics();
while (z)
{
// рисуем графические элементы
init(g);
// останавливаем цикл
try { Thread.sleep(25); }
catch (java.lang.InterruptedException zxz) {};
}
}
private void init(Graphics g)
{
// синий цвет фона
g.setColor(0,0,200);
// перерисовываем экран
g.fillRect(0, 0, getWidth(), getHeight());
g.setColor(255,255,255);
g.drawString("счетчик "+count+" инд очереди "+seq_ind+" тайл "+seq[seq_ind],5,200,Graphics.TOP|Graphics.LEFT);
count++;
if ((count%5)==0)
{
seq_ind++;
seq_ind%=4;
til.setAnimatedTile(anim_ind, seq[seq_ind]);//смена тайла
}
// рисуем уровень в точке 0,0
lm.paint(g, 0, 0);
// двойная буферезация
flushGraphics();
};
}
Вывод: в ходе лабораторной работы мы научились применять плиточные слои в среде Java-приложений.
Дата добавления: 2015-08-27; просмотров: 39 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Цель работы | | | ЛАБОРАТОРНАЯ РАБОТА № 3 |