Select your language:

Home Главная | Registration Регистрация | Login Вход

Menu Меню сайта
Statistics Статистика

Total online: Онлайн всего: 3
Guests: Гостей: 3
Members: Пользователей: 0
Study entry Форма входа
Логин:
Пароль:
Забыл пароль | Регистрация

Ссылки:

Параметры метода clrawRect ():

□ х - координата точки по оси X для левого верхнего угла прямоугольника; О у - координата точки по оси Y для левого верхнего угла прямоугольника;

□ width - ширина рисуемого прямоугольника; G height - высота рисуемого прямоугольника.

В составе класса Graphics имеется еще один метод рисующий прямоугольник, но с закругленными углами - drawRoundRect (). Этот метод имеет уже шесть параметров, где первые четыре параметра работают в том же ключе что и методы drawRect () и f illRe ct 1, а два последних параметра определяют степень закругленности углов. В листинге 7.2 рисуется три разных по размеру прямоугольника, и закрашиваются тремя цветами: красным, зеленым и синим. Для закрашивания прямоугольников применяется метод setColor (int red, int green, int blue) с тремя параметрами. Выставляя любое целочисленное значение от 0 до 255 для каждого параметра можно создавать разнообразную цветовую гамму, естественно учитывая при этом цветовые возможности телефона, на котором будет работать эта программа. Для того чтобы определить доступную цветность дисплея телефона, необходимо воспользоваться методами класса Display:

О isColorO - если телефон поддерживает цветовую гамму, то возвращает значение true;

□ numColor () - определяет количество доступных цветов.

На компакт-диске листинг 7.2 находится в папке \Code\Listing7_2\src. у**

Листинг 7.2

Класс Main и класс Rectangles * /

import javax.microedition. lcdui . * import javax.microedition.midlet,*;

public class Main extends MIDlet implements

CommandListener

{

// команда выхода из программы

private Command exitMidlet = new Command (" Выход" , Command.EXIT, 0);

public void startApp() {

// создаем объект класса Rectangles Rectangles myrec = new Rectangles () ;

// добавляем команду выхода myrec.addCommand(exitMidlet) ,-myrec. setCommandListener (this) ,-

Display .getDisplay (this). .setCurrent (myrec) ;

}

public- void pauseApp () {}

public void destroyApp (booleanunconditional) {} public void commandAct ion (Command С, Displayable d) if (c == exitMidlet)

{

destroyApp(false); notifyDestroyedO ;

)

>

}

/**

класс Rectangles определен в файле Rectangles .Java

*/

import javax.microedition.lcdui. * ;

public class Rectangles extends Canvas {

// конструктор

public Rectangles () { super () ; },- .

public void paint (Graphics g)

{

// устанавливается красный цвет g.setColor(255, 0, 0 ) ;

/ / рисуем первый прямоугольник

g.fillRect *х*/15, /*у*/ 30 , /*ппфина*/ 15, /*высота*/ 20) ;

// устанавливается зеленный цвет

g.setColor (0, 255, 0) -,

I ' рисуем второй прямоугольник

g.fillRect (30, 30, 15, 45);

// устанавливается синий цвет

g.setColor(0, 0, 255);

// * рисуем третий прямоугольник

д.fillRect(45, 30, 15, 60);

// устанавливается синий цвет

g.setColor (255, 0, О) ;

- / / рисуем прямоугольник с закругленными углами

g.drawRoundRect(70, 30, 40, 40, 10, 10};

} }

В этом примере также используются два класса - класс Main, играющий роль основного класса мидлета и класс Rectangles, где происходит отрисовка графики. Оба класса разделены на два файла Main.java и Rectanglcs.java. В классе Main создается объект класса Rectangles, добавляется команда выхода и показывается текущий экран. Класс Rectangles является подклассом класса Canvas. Прорисовка прямоугольников происходит в методе paint () класса Graphics.

g.setColor(255, 0, 0);

В этой строке кода устанавливается красный цвет для прямоугольника размером 15 на 20 пикселей, который рисуется с помощью метода £ illRe ct

g.fillRect(/*х*/ 15,/*у*/ 30,/*ширина*/ 15,/*высота*/ 20);

Прямоугольник рисуется закрашенным в красный цвет. Дальше происходит прорисовка еще двух закрашенных в зеленый и синий цвет прямоугольников с размерами соответственно 15x45 и 15x60 пикселей.

В конце всего кода в классе Rectangles рисуется контур прямоугольника с закругленными углами. На рис. 7.4 изображен эмулятор телефона с четырьмя нарисованными прямоугольниками.

Рис. 7.4, Рисование четырех прямоугольников

Рис. 7.5. Техника создания дуги

7.5. Рисование дуг

В английском языке слово arc означаетдугу, и именно это слово применяется вдокументациипоТауа2 ME. Мсполъзуяметоды drawArc () и fillArc {) можно нарисовать как дугу, так и полноценную окружность. Используя оба метода, ■ как вы уже наверно заметили можно нарисовать контур дуги и закрашенную цветом дугу. Методы draw Arc () и fillArc () имеют одинаковое количество параметров со сходными действиями. Рассмотрим один из методов - fillArc ().

. public void fillArc (int x,

int y, int width, int height', int startAngle, int arc Angle)

Параметры метода fillArc ():

□ x - расстояние, откладываемое от оси X до мнимой вертикальной касательной к окружности;

□ у - расстояние, откладываемое от оси Удо мнимой горизонтальной касательной к окружности;

□ wight - ширина рисуемой дуги (горизонтальный радиус);

□ height - высота рисуемой дуги (вертикальный диаметр);

□ startAngle — стартовый угол для начала рисования дуги;

□ arcAngle - протяженность дуги (значение 360 замкнет дугу в окружность).

На рис, 7.5 изображена схематично техника создания дуги.

X

В листинге 7.3 приведен пример кода создающего три разноцветных сегмента круга, наложенных друг на друга, и дугу в виде контура.

/* * t

Листинг 7.3

Класс Main и класс Arc V

import javax.microedition. lcdui . * ,-import javax.microedition.midlet.*;

public class Main extends MIDlet implements CommandListener

{

// команда выхода из программы

private Command exitMidlet = new Command("Выход", Command.EXIT, 0);

public void startAppO. {

// создаем объект класса Arc Arc myarc = new Arc() ;

// добавляем команду выхода myarc.addCommand(exi tMidlet); myarc.setCommandListener(this); Display.getDisplay(this).setCurrent(myarc);

public void pauseApp() {}

public void destroyApp(boolean unconditional){}

public void commandAction (Command с j Displayable d)

if (c == exitMidlet) I'

destroyApp(false); notifyDestroyed () ;

}

> }

/**

класс Arc определен в файле.Arc.Java рисует дуги */

import javax.microedition. lcdui. * ;

public class Arc. extends Canvas {

// конструктор '

public Arc ( ) { super () ; }

public void paint (Graphics g)

// устанавливается красньш цвет g.setColor(255, 0, 0) ;

// рисуем первую заполненную цветом дугу g.fillArc(15, 15, 60, 60, 45, 360);

// устанавливается зеленый цвет g.setColor(0, 2 55, 0);

// накладываем вторую дугу поверх первой g.fillArc(15, 15, 60, 60, 45, 180); // устанавливается синий цвет g.setColor(D, 0, 2 55) ;

// накладываем третью дугу поверх первых двух g-. fillArc (15, 15, 60, 60, 45, 90);

// устанавливается синий цвет для дуги в виде контура g.setColor(0, 0, 255);

// рисуем контур дуги g.drawArC(5, 5, 80, 80, 30, 180);

} }

В листинге 7.3 используется тот же самый механизм, что и в примерах из листингов 7.2 и 7.1 - создаются два класса: Main и Arc, находящиеся в файлах Main.java и Arc.java. Код этого примера вы найдете на компакт-диске в папке \Code\Listing7_3\src. Все действия по прорисовке дуг осуществляются в методе paint().

g.setColor(25.5, О, 0) ; g.fillArc(15, 15, 60, 60, 45, 360) г

В этих строках кода происходит установка цвета для рисуемой дуги и происходит прорисовка самой дуги. Первые два значения в методе fillArc () - 15 и "10пикселей задают координаты точки в пространстве, относительно которой будет происходить прорисовка дуги. Значения 60 и 60 пикселей задают ширину и высоту дуги. Значением 45 устанавливается угол для начала рисования дуги (со значением 360 будет нарисована замкнутая окружность). Затем в примере рисуются еще два сегмента зеленого и синего цвета, наложенные поверх первой нарисованной дуги.

7.6. Вывод текста

Для вывода текста на экран телефона можно воспользоваться методами drawstring () и drawChar (), рисующими соответственно строку текста и любой назначенный символ. Текст можно выводить с любым цветом, а также использовать стили начертания, изученные в главе 6. Прототип метода drawstring () выглядит следующим образом:

public void drawstring (String str,

Параметры метода drawstring ():

□ str - строка текста;

□ x и у — задают размер невидимого прямоугольника, в котором происходит расположение текста;

О anchor - в этом параметре задается выбор позиции текста внутри невидимого прямоугольника. Здесь используются константы класса Graphics, рассмотренные в разделе 72.

В листинге 7.4 показан пример вывода текста на экран телефона. Код довольно прости я думаю, вам не составит труда разобраться в нем самостоятельно. На компакт-диске код примера находится в папке \Code\Listing7_4\src.

Листинг 7.4

Класс Main и класс Text */

import javax.microedition.lcdui.*; import javax.microedition.midlet.*;

public class Main extends MIDlet implements CommandListener

{

// команда выхода из программы

private Command exitMidlet = new Command («Выход», Command.EXIT, 0);

int x, int y, int anchor)

/

public void startAppO

{

// создаем объект класса Text Text mytext = new Text();

/ / добавляем- команду выхода mytext.addCommand(exitMidlet) ,-mytext.setCommandListener(this);

Программирование графики Display.getDisplay(this). setCurrent(mytext) ;

}

public void pauseApp ( ) {}

public void destroyApp (booleanunconditional) {}

public void commandAction(Command c, Displayable d) {

if (c == exitMidlet) {

destroyApp!false); notifyDestroyed() ;

}

} }

/

класс Text определен в файле Text. Java рисует текст * /

import javax.microedition-lcdui . * ;

public class Text extends Canvas {

// конструктор

public Text () {super();}

public void paint (Graphics g)

{

// устанавливается цвет g.setColor (10, 80, 200);

// рисуем строку текста

g. drawstring («Java 2 Micro Edition»,

80, 40, Graphics-TOP I Grapphi с s.HCENTER) ;

}

7.7. Механизм создания игрового цикла

Для создания цикла классом Canvas используется интерфейс Runnable и его единственный метод run (), в котором реализуется цикл прорисовки графики. Рассмотрим в каче стве примеракдссс DemoGraphics и проанализируем его.

Механизм создания игрового цикла

public class DemoGraphics extends Canvas implements

Runnable

{

public void run()

while(true)

// обновление графических элементов repaint ()

// задержка цикла на 2 0 миллисекунд для обновления

состояния дисплея Thread.s1еер(20); }

}

public void paint ( Graphics g ) {

// код, создающий графические элементы

>

public void keyPre6sed ( int keyCode ) {

// обработка событий с клавиш телефона при помощи ключевых кодов

} }

В классе DemoGraphics для упрощения опущен основной код, связанный с прорисовкой графики и обработкой событий, поступающих с клавиш телефона. Весв цикл прорисовки графики состоит из трех методов: run(), paint () и keyPressedO ■

В методе paint () происходит создание и отрисовка графических элементов программы на экране телефона, а метод run [) создает цикл, в котором происходит постоянное обновление экрана телефона, связанное, например, сдвижением графического элемента. События, полученные в результате нажатия клавиш, поступают в метод key. Pressed () , где обрабатываются заданным вами способом. На основании этих событий также может происходить обновление цикла прорисовки графики.

В методе run | создается бесконечный цикл whi 1е (true). В реальной программе необходимо, конечно, предусмотреть выход из бесконечного цикла. Метод repaint () постоянно обновляет графические элементы. Метод sleep () класса Thread останавливает системный поток на двадцать миллисекунд, для того чтобы отреагировать на все произошедшие изменения, а именно, произвести обработку событий с клавиш телефона и перерисовать графический элемент на экране телефона. Механизм прорисовки графики в профиле MIDP 1.0 строится именно по такому принципу , связанному с изменением состояния графических элементов и наЗыва.ЧОМу игровым циклом.

Теперь давайте рассмотрим как можно больше примеров, реализующих вывод графики на экран, перемещение графических элементов, обработку событий с клавиш телефона, столкновение графического элемента с препятствием и дру-гаххитростей, из которых состоятмобильные игры.

7.8. Перемещение квадрата

Начнем с самого простого - выведем на экран синий квадрат, прорисованный спомощьюметодаг illRect () изаставимпереместиться его через весь экранпо горизонтали слева на право. Посмотрите на код из листинга 7.5, производящий перемещение квадрата на экране, также пример можно найти на компакт-диске в папке \Code\listing7_3\src.

/* *

Листинг 7.5

Класс Main и класс Draw */

import javax.microedition.lcdui. * ; import javax.microedition.midlet . * ; ■

public class Main extends MIDlet implements CommandLi s t ener

{

// команда выхода из программы

private Command exitMidlet = new Command ("Выход" , Command.EXIT,0) ;

public void startAppO {

// создаем объект класса Draw Draw dr = new Draw ( ) ; // запускаем поток dr.start() ,*

// добавляем команду выхода

dr.addCommand(exitMidlet);

dr. setCommandListener(thi s);

Display.getDisplay (this).setCurrent(dr); .

}

public void pauseAppO {}

public void destroyApp (booleanunconditional) {}

public void commandAct ion (Command с, Displayable d)


Для перехода к следующей странице статьи перейдите по вы подающему меню
Basket Корзина
Your basket is empty Ваша корзина пуста
'); $(el).append(g); $(g).show(); } _uPostForm('',{type:'POST',url:'/shop/basket',data:{'mode':'clear'}}); return false; } function removeBasket(id){ if(lock_buttons) return false; else lock_buttons = 1; $('#basket-item-'+id+' .sb-func').removeClass('remove').addClass('myWinLoadS').attr('title',''); _uPostForm('',{type:'POST',url:'/shop/basket',data:{'mode':'del', 'id':id}}); return false; } function add2Basket(id,pref){ if(lock_buttons) return false; else lock_buttons = 1; var opt = new Array(); $('#b'+pref+'-'+id+'-basket').attr('disabled','disabled'); $('#'+pref+'-'+id+'-basket').removeClass('done').removeClass('err').removeClass('add').addClass('wait').attr('title',''); $('#'+pref+'-'+id+'-options').find('input:checked, select').each(function(){ opt.push(this.id.split('-')[3]+'-'+this.value);}); _uPostForm('',{type:'POST',url:'/shop/basket',data:{'mode':'add', 'id':id, 'pref':pref, 'opt':opt.join(':'), 'cnt':$('#q'+pref+'-'+id+'-basket').attr('value')}}); return false; } function buyNow(id,pref){ if(lock_buttons) return false; else lock_buttons = 1; var opt = new Array(); $('#b'+pref+'-'+id+'-buynow').attr('disabled','disabled'); $('#'+pref+'-'+id+'-buynow').removeClass('done').removeClass('err').removeClass('now').addClass('wait').attr('title',''); $('#'+pref+'-'+id+'-options').find('input:checked, select').each(function(){ opt.push(this.id.split('-')[3]+'-'+this.value);}); _uPostForm('',{type:'POST',url:'/shop/basket',data:{'mode':'add', 'id':id, 'pref':pref, 'opt':opt.join(':'), 'cnt':$('#q'+pref+'-'+id+'-basket').attr('value'), 'now':1}}); return false; } //-->
Search Поиск
Calendar Календарь
«  March Март 2011  »
Mon Пн Tues Вт Wed Ср Thurs Чт Fri Пт Sat Сб Sun Вс
  1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
Archive records Архив записей

Ссылки:

Rambler's Top100 Все для дома - Бытовая техника, опубликовать информацию о фирме
QLE 88x31

раскрутка сайта в интернете Рейтинг сайтов Товары / Услуги

Copyright MyCorp © 2011 Создать сайт бесплатно

Copyright MyCorp © 2011