Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½ Π½Π° Bookidrom.ru! БСсплатныС ΠΊΠ½ΠΈΠ³ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ»ΠΈΠΊΠ΅

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΈΠ³Ρ€ для ΠΌΠΎΠ±ΠΈΠ»ΡŒΠ½Ρ‹Ρ… Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½ΠΎΠ²Β». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 17

Автор Майкл ΠœΠΎΡ€Ρ€ΠΈΡΠΎΠ½

boolean drawImage(Image img, int x, int y, int anchor)

ВСроятно, этот ΠΌΠ΅Ρ‚ΠΎΠ΄ покаТСтся Π²Π°ΠΌ Π·Π½Π°ΠΊΠΎΠΌΡ‹ΠΌ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π² Π½Π΅ΠΌ, Ρ‚Π°ΠΊΠΆΠ΅ ΠΊΠ°ΠΊ ΠΈ Π² ΠΌΠ΅Ρ‚ΠΎΠ΄Π΅ drawString(), ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π°Π½ΠΊΠ΅Ρ€Ρ‹. Подобно drawString() ΠΌΠ΅Ρ‚ΠΎΠ΄ drawImage() Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π² Ρ‚ΠΎΡ‡ΠΊΠ΅ с ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Π°ΠΌΠΈ (x,y) ΠΈ с ΡƒΡ‡Π΅Ρ‚ΠΎΠΌ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° anchor. Для Π²Ρ‹Π²ΠΎΠ΄Π° ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚Π΅ ΠΆΠ΅ константы, Ρ‡Ρ‚ΠΎ ΠΈ ΠΏΡ€ΠΈ Π²Ρ‹Π²ΠΎΠ΄Π΅ тСкста. Π˜Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π°Ρ€ΠΈΡΠΎΠ²Π°Ρ‚ΡŒ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅, сначала Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ статичСский ΠΌΠ΅Ρ‚ΠΎΠ΄ Image.createImage() ΠΈ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΈ Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅. Π—Π°Ρ‚Π΅ΠΌ слСдуСт Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ drawImage() ΠΈ вывСсти ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π½Π° экран. НиТС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ ΠΊΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π·Π°Π³Ρ€ΡƒΠΆΠ°Π΅Ρ‚ ΠΈ Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅:

public void paint(Graphics g) {

//ΠΎΡ‡ΠΈΡΡ‚ΠΈΡ‚ΡŒ экран

g.setColor(255,255,255); //Π±Π΅Π»Ρ‹ΠΉ

g.FillRect(0, 0, getWidth(), getHeight());

//ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΈ Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅

Image img = Image.createImage("Splash.png");

//вывСсти ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅

g.drawImage(img, getWidth() / 2, getHeight() / 2, //ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹ HCENTER ΠΈ VCENTER,

Graphics.HCENTER | Graphics.VCENTER); //ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ выводится Π² Ρ†Π΅Π½Ρ‚Ρ€Π΅ экрана

}

Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ сначала очищаСтся дисплСй, для Ρ‡Π΅Π³ΠΎ выбираСтся Π±Π΅Π»Ρ‹ΠΉ Ρ†Π²Π΅Ρ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ заполняСтся вСсь экран. ΠŸΠ΅Ρ€Π΅Π΄ рисованиСм Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Ρ‡ΠΈΡΡ‚ΡƒΡŽ ΠΏΠΎΠ²Π΅Ρ€Ρ…Π½ΠΎΡΡ‚ΡŒ. Π—Π°Ρ‚Π΅ΠΌ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° createImage() загруТаСтся ΠΈ создаСтся ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Splash.png. ПослС Ρ‚ΠΎΠ³ΠΎ ΠΊΠ°ΠΊ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ создано, вызываСтся ΠΌΠ΅Ρ‚ΠΎΠ΄ drawImage(), ΠΈ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° выводится Π½Π° дисплСй, константы HCENTER ΠΈ VCENTER ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ Π°Π½ΠΊΠ΅Ρ€.

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Olympics

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Ρƒ вас Π΅ΡΡ‚ΡŒ прСдставлСниС ΠΎ MIDP-Π³Ρ€Π°Ρ„ΠΈΠΊΠ΅ ΠΈ, вСроятно, Π²Π°ΠΌ Π½Π΅ тСрпится ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ, ΠΊΠ°ΠΊ это всС Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π² контСкстС ΠΌΠΈΠ΄Π»Π΅Ρ‚Π°. Π’Ρ‹ ΡƒΠ·Π½Π°Π»ΠΈ, Ρ‡Ρ‚ΠΎ Π³Ρ€Π°Ρ„ΠΈΠΊΠ° обрабатываСтся ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ paint(). Однако класс ΠΌΠΈΠ΄Π»Π΅Ρ‚Π° Π½Π΅ содСрТит этого ΠΌΠ΅Ρ‚ΠΎΠ΄Π°, поэтому для выполнСния ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ с Π³Ρ€Π°Ρ„ΠΈΠΊΠΎΠΉ Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ класс Canvas. Класс Canvas прСдставляСт собой Π°Π±ΡΡ‚Ρ€Π°ΠΊΡ‚Π½ΡƒΡŽ ΠΏΠΎΠ²Π΅Ρ€Ρ…Π½ΠΎΡΡ‚ΡŒ ΠΈ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ Π² класс ΠΌΠΈΠ΄Π»Π΅Ρ‚Π°. ГрафичСскиС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ класса Graphics. Класс, ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½Ρ‹ΠΉ ΠΎΡ‚ Canvas, ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для Π²Ρ‹Π²ΠΎΠ΄Π° ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ Π½Π° экран.

Π§Ρ‚ΠΎΠ±Ρ‹ Π½Π°Ρ‡Π°Ρ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρƒ Π½Π°Π΄ графичСским ΠΌΠΈΠ΄Π»Π΅Ρ‚ΠΎΠΌ, Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅:

1. ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ класс, ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½Ρ‹ΠΉ ΠΎΡ‚ Canvas ΠΈ ассоциированный с ΠΌΠΈΠ΄Π»Π΅Ρ‚ΠΎΠΌ;

2. ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ класса Canvas ΠΊΠ°ΠΊ Ρ‡Π»Π΅Π½-ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ класса ΠΌΠΈΠ΄Π»Π΅Ρ‚Π°;

3. ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ класса Canvas ΠΊΠ°ΠΊ Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ экран ΠΌΠΈΠ΄Π»Π΅Ρ‚Π°, для Ρ‡Π΅Π³ΠΎ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ setCurrent().

Π‘Π°ΠΌΡ‹ΠΉ Π»ΡƒΡ‡ΡˆΠΈΠΉ способ ΠΏΠΎΠ½ΡΡ‚ΡŒ этот процСсс – ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. Π₯ΠΎΡ€ΠΎΡˆΠΈΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ простой ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ с MIDP-Π³Ρ€Π°Ρ„ΠΈΠΊΠΎΠΉ – ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°, Ρ€ΠΈΡΡƒΡŽΡ‰Π°Ρ олимпийский символ, состоящий ΠΈΠ· пяти ΠΏΠ΅Ρ€Π΅ΡΠ΅ΠΊΠ°ΡŽΡ‰ΠΈΡ…ΡΡ ΠΊΠΎΠ»Π΅Ρ†.

НаписаниС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°

Π”Π°Π²Π°ΠΉΡ‚Π΅ Π½Π°Ρ‡Π½Π΅ΠΌ с класса OCanvas, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ создаст холст для использования Π² ΠΌΠΈΠ΄Π»Π΅Ρ‚Π΅ Olympics. Код класса OCanvas ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ Π² листингС 4.1.

Листинг 4.1. Класс OCanvas слуТит настраиваСмым холстом для ΠΌΠΈΠ΄Π»Π΅Ρ‚Π° Olympics

import javax.microedition.lcdui.*;

public class OCanvas extends Canvas {

private Display display;

public OCanvas(Display d) {

super();

display = d;

}

void start() {

display.setCurrent(this);

repaint();

}

public void paint(Graphics g) {

// Clear the display

g.setColor(255, 255, 255); // White

g.fillRect(0, 0, getWidth(), getHeight());

// Draw the first row of circles //Π”ΡƒΠ³ΠΈ выводятся ΠΊΠ°ΠΊ ΠΈΠ΄Π΅Π°Π»ΡŒΠ½Ρ‹Π΅ окруТности, Ссли Π·Π°Π΄Π°Ρ‚ΡŒ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹Π΅ значСния высоты ΠΈ ΡˆΠΈΡ€ΠΈΠ½Ρ‹, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΡƒΠ³Π»Π° ΠΎΡ‚ 0Β° Π΄ΠΎ 360Β°

g.setColor(0, 0, 255); // Blue

g.drawArc(5, 5, 25, 25, 0, 360);

g.setColor(0, 0, 0); // Black

g.drawArc(35, 5, 25, 25, 0, 360);

g.setColor(255, 0, 0); // Red

g.drawArc(65, 5, 25, 25, 0, 360);

// Draw the second row of circles

g.setColor(255, 255, 0); // Yellow

g.drawArc(20, 20, 25, 25, 0, 360);

g.setColor(0, 255, 0); // Green

g.drawArc(50, 20, 25, 25, 0, 360);

}

}

Π­Ρ‚ΠΎΡ‚ класс Ρ€Π°ΡΡˆΠΈΡ€ΡΠ΅Ρ‚ класс Canvas ΠΈ устанавливаСт сСбя ΠΊΠ°ΠΊ экран ΠΌΠΈΠ΄Π»Π΅Ρ‚Π°. ΠšΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ‚ΠΎΡ€ Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ конструктор Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ класса Canvas ΠΈ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ display. ΠœΠ΅Ρ‚ΠΎΠ΄ start() устанавливаСт холст Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΌ экраном ΠΌΠΈΠ΄Π»Π΅Ρ‚Π° ΠΈ обновляСт ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅. НаиболСС Π²Π°ΠΆΠ½Ρ‹ΠΉ ΠΊΠΎΠ΄ содСрТится Π² ΠΌΠ΅Ρ‚ΠΎΠ΄Π΅ paint(), ΠΎΠ½ Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ setColor() ΠΈ drawArc() ΠΈ рисуСт олимпийский символ. ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ всС Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ ΡƒΠ³Π»ΠΎΠ² Π² функциях drawArc() Ρ€Π°Π²Π½Ρ‹ 0 0 ΠΈ 360Β°, Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ Ρ‡Π΅Π³ΠΎ Π±ΡƒΠ΄ΡƒΡ‚ нарисованы ΠΏΠΎΠ»Π½Ρ‹Π΅ эллипсы. Когда Π²Ρ‹ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΠ»ΠΈ класс OCanvas, ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚ΡŒ Ρ‡Π»Π΅Π½-ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ класса ΠΌΠΈΠ΄Π»Π΅Ρ‚Π° OlympicsMIDlet:

private OCanvas canvas;

Π§Π»Π΅Π½-пСрСмСнная класса Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π° конструктором класса:

canvas = new Ocanvas (Display.getDisplay(this));

Π­Ρ‚ΠΎ вСсь ΠΊΠΎΠ΄ для ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π³Ρ€Π°Ρ„ΠΈΠΊΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌ Π² ΠΌΠΈΠ΄Π»Π΅Ρ‚Π΅ Olympics. Π’ листингС 4.2 прСдставлСн ΠΏΠΎΠ»Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ класса OlympicsMIDlet. Листинг 4.2. Код класса OlympicsMIDlet содСрТится Π² Ρ„Π°ΠΉΠ»Π΅ OlympicsMIDlet.java

import javax.microedition.midlet.*;

import javax.microedition.lcdui.*;

public class OlympicsMIDlet extends MIDlet implements CommandListener {

private OCanvas canvas;

public void startApp() {

if (canvas == null) {

canvas = new OCanvas(Display.getDisplay(this));

Command exitCommand = new Command("Exit", Command.EXIT, 0);

canvas.addCommand(exitCommand);

canvas.setCommandListener(this);

}

// инициализация

canvas.start(); //ΠœΠ΅Ρ‚ΠΎΠ΄ start() холста запускаСт ΠΌΠΈΠ΄Π»Π΅Ρ‚

}

public void pauseApp() {}

public void destroyApp(boolean unconditional) {}

public void commandAction(Command c, Displayable s) {

if (c.getCommandType() == Command.EXIT) {

destroyApp(true);

notifyDestroyed();

}

}

}

По ΠΌΠ΅Ρ€Π΅ прочтСния ΠΊΠ½ΠΈΠ³ΠΈ Π²Ρ‹ ΠΏΠΎΠΉΠΌΠ΅Ρ‚Π΅, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ шаблон для построСния любого ΠΈΠ³Ρ€ΠΎΠ²ΠΎΠ³ΠΎ ΠΌΠΈΠ΄Π»Π΅Ρ‚Π°. Π‘ΠΎΠ»ΡŒΡˆΠ°Ρ Ρ‡Π°ΡΡ‚ΡŒ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΈΠ³Ρ€ΠΎΠ²ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° размСщаСтся Π² классС, наслСдованном ΠΎΡ‚ Canvas, ΠΈΠ»ΠΈ Π² Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‰ΠΈΡ… классах.

ВСстированиС Π³ΠΎΡ‚ΠΎΠ²ΠΎΠ³ΠΎ прилоТСния

Π§Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΠ±Ρ€Π°Ρ‚ΡŒ ΠΈ ΠΏΡ€ΠΎΡ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠΈΠ΄Π»Π΅Ρ‚ Olympics, скопируйтС ΠΏΠ°ΠΏΠΊΡƒ Olympics Π² ΠΏΠ°ΠΏΠΊΡƒ apps, Ρ€Π°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½Π½ΡƒΡŽ Π² ΠΏΠ°ΠΏΠΊΠ΅ установки J2ME Wireless Toolkit. Π§Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΠ±Ρ€Π°Ρ‚ΡŒ ΠΌΠΈΠ΄Π»Π΅Ρ‚, Ρ‰Π΅Π»ΠΊΠ½ΠΈΡ‚Π΅ ΠΏΠΎ ΠΊΠ½ΠΎΠΏΠΊΠ΅ Build (Π‘ΠΎΠ±Ρ€Π°Ρ‚ΡŒ), Π° Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ эмулятор J2ME, Ρ‰Π΅Π»ΠΊΠ½ΠΈΡ‚Π΅ ΠΏΠΎ ΠΊΠ½ΠΎΠΏΠΊΠ΅ Run (Π—Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ). На рис. 4.5 ΠΏΠΎΠΊΠ°Π·Π°Π½ ΠΌΠΈΠ΄Π»Π΅Ρ‚ The Olympics MIDlet.

Рис. 4.5. ΠœΠΈΠ΄Π»Π΅Ρ‚ The Olympics MIDlet дСмонстрируСт построСниС основных гСомСтричСских Ρ„ΠΈΠ³ΡƒΡ€

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ слайд-ΡˆΠΎΡƒ

Π₯отя ΠΌΠΈΠ΄Π»Π΅Ρ‚ Olympics ΠΎΡ‡Π΅Π½ΡŒ интСрСсСн ΠΈ ΠΏΠΎΠ»Π΅Π·Π΅Π½ для знакомства с ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Π³Ρ€Π°Ρ„ΠΈΠΊΠΈ ΠΌΠΈΠ΄Π»Π΅Ρ‚Π°, Π²Ρ‹, вСроятно, Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ большСго. НапримСр, ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ, ΠΊΠ°ΠΊ выводится тСкст ΠΈ Π³Ρ€Π°Ρ„ΠΈΠΊΠ° Π² контСкстС ΠΌΠΈΠ΄Π»Π΅Ρ‚Π°. Π’ этой части ΠΊΠ½ΠΈΠ³ΠΈ Π²Ρ‹ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚Π΅ слайд-ΡˆΠΎΡƒ, Ρ‡Ρ‚ΠΎ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚ Π²Π°ΠΌ ΠΏΠΎΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠΎΠ²Π°Ρ‚ΡŒΡΡ Π² Π²Ρ‹Π²ΠΎΠ΄Π΅ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ ΠΈ тСкста. ΠžΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎ, слайд-ΡˆΠΎΡƒ – Π½Π΅ ΠΈΠ³Ρ€Π°, ΠΎΠ΄Π½Π°ΠΊΠΎ этот ΠΌΠΈΠ΄Π»Π΅Ρ‚ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚ Π²Π°ΠΌ ΠΈΠ·ΡƒΡ‡ΠΈΡ‚ΡŒ основныС ΠΏΡ€ΠΈΠ΅ΠΌΡ‹ создания Π³Ρ€Π°Ρ„ΠΈΠΊΠΈ ΠΈΠ³Ρ€, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ ΠΈ тСкста, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ Π²Π²ΠΎΠ΄Π°.

НаписаниС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°

ΠœΠΈΠ΄Π»Π΅Ρ‚ Slideshow Π·Π°Π³Ρ€ΡƒΠΆΠ°Π΅Ρ‚ нСсколько ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ ΠΈ тСкст, послС Ρ‡Π΅Π³ΠΎ выводится Π½Π° экран. ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΎΠ»ΠΈΡΡ‚Ρ‹Π²Π°Ρ‚ΡŒ страницы слайд-ΡˆΠΎΡƒ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ клавиши со стрСлками. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ слайд-ΡˆΠΎΡƒ относится ΠΊ графичСской части ΠΌΠΈΠ΄Π»Π΅Ρ‚Π°, большая Ρ‡Π°ΡΡ‚ΡŒ ΠΊΠΎΠ΄Π° сосрСдоточСна Π² классС SSCanvas, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Ρ…Ρ€Π°Π½ΠΈΡ‚ изобраТСния ΠΈ подписи ΠΏΠΎΠ΄ Π½ΠΈΠΌΠΈ:

private Display display;

private Image[] slides;

private String[] captions = { "Love Circle Bowl", "Double Wide Spine",

"Flume Zoom Over-vert", "Kulp De Sac Bowl",

"Louie\'s Ledge" };

private int curSlide = 0;

ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Π°Ρ sliders – это массив ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Image, ΠΎΠ½Π° инициализируСтся Π² конструкторС класса SSCanvas. НиТС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ ΠΊΠΎΠ΄ этого конструктора:

public SSCanvas(Display d) {

super();

display = d;

// Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ изобраТСния слайд-ΡˆΠΎΡƒ

try {

slides = new Image[5];

slides[0] = Image.createImage("/LoveCircle.jpg");

slides[1] = Image.createImage("/DoubleWide.jpg");

slides[2] = Image.createImage("/FlumeZoom.jpg");

slides[3] = Image.createImage("/KulpDeSac.jpg");

slides[4] = Image.createImage("/LouiesLedge.jpg");

}

catch (IOException e) {

System.err.println("Failed loading images!");

}

}

Π­Ρ‚ΠΎΡ‚ ΠΊΠΎΠ΄ ΠΏΠΎΠ½ΡΡ‚ΡŒ ΠΎΡ‡Π΅Π½ΡŒ просто, ΠΎΠ½ создаСт массив ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Image ΠΈ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ элСмСнт, загруТая с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Image.createImage() ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π΅ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅. Π’Π°ΠΆΠ½ΠΎ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ имя ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π° изобраТСния начинаСтся с символа / (Косой слСш), ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π°ΡŽΡ‰Π΅Π³ΠΎ, Ρ‡Ρ‚ΠΎ Ρ„Π°ΠΉΠ» располоТСн Π² ΠΊΠΎΡ€Π½Π΅Π²ΠΎΠΉ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ ΠΌΠΈΠ΄Π»Π΅Ρ‚Π°. Π­Ρ‚ΠΎ Π²Π°ΠΆΠ½ΠΎ, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ эти изобраТСния ΡƒΠΏΠ°ΠΊΠΎΠ²Π°Π½Ρ‹ Π² JAR-Π°Ρ€Ρ…ΠΈΠ² вмСстС с классом ΠΌΠΈΠ΄Π»Π΅Ρ‚Π°, Π° ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, ΠΎΠ½ΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ доступны для чтСния.

...

Π’ ΠΊΠΎΠΏΠΈΠ»ΠΊΡƒ Π˜Π³Ρ€ΠΎΠΊΠ°

Если Π²Π°ΠΌ интСрСсно, Ρ‡Ρ‚ΠΎ Π·Π° изобраТСния ΠΏΠΎΠΌΠ΅Ρ‰Π΅Π½Ρ‹ Π² слайд-ΡˆΠΎΡƒ, Ρ‚ΠΎ это Ρ„ΠΎΡ‚ΠΎΠ³Ρ€Π°Ρ„ΠΈΠΈ общСствСнного скСйт-ΠΏΠ°Ρ€ΠΊΠ°, строящСгося Π² ΠΌΠΎΠ΅ΠΌ Π³ΠΎΡ€ΠΎΠ΄Π΅, НэшвиллС, ΡˆΡ‚Π°Ρ‚ ВСннСси. Π― ΠΏΠΎΠΌΠΎΠ³Π°Π» с ΠΎΡ„ΠΎΡ€ΠΌΠ»Π΅Π½ΠΈΠ΅ΠΌ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² Π½Π° ΡΡ‚Ρ€ΠΎΠΈΡ‚Π΅Π»ΡŒΡΡ‚Π²ΠΎ ΠΏΠ°Ρ€ΠΊΠ° Π½Π°ΡˆΠ΅ΠΌΡƒ сообщСству скСйтбордистов.

ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ дСйствия Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ Π² ΠΌΠ΅Ρ‚ΠΎΠ΄Π΅ paint() класса SSCanvas, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π΅ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ слайд-ΡˆΠΎΡƒ ΠΈ подпись Π½Π° экран. НиТС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ ΠΊΠΎΠ΄ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° paint():

public void paint(Graphics g) {

// ΠΎΡ‡ΠΈΡΡ‚ΠΈΡ‚ΡŒ экран

g.setColor(255, 255, 255); // Π±Π΅Π»Ρ‹ΠΉ

g.fillRect(0, 0, getWidth(), getHeight());

// вывСсти Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π΅ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅

g.drawImage(slides[curSlide], getWidth() / 2, getHeight() / 2, //Π’Π΅ΠΊΡƒΡ‰Π΅Π΅ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ выводится Π² Ρ†Π΅Π½Ρ‚Ρ€Π΅ экрана

Graphics.HCENTER | Graphics.VCENTER);

// Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ ΡˆΡ€ΠΈΡ„Ρ‚

Font f = Font.getFont(Font.FACE_PROPORTIONAL, Font.STYLE_BOLD,

Font.SIZE_MEDIUM);

g.setFont(f);

// вывСсти Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π΅ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅

g.setColor(0, 0, 0); // Π§Π΅Ρ€Π½Ρ‹ΠΉ //ВСкущая надпись Ρ†Π΅Π½Ρ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Π½Π° ΠΈ выводится вдоль Π²Π΅Ρ€Ρ…Π½Π΅ΠΉ Π³Ρ€Π°Π½ΠΈΡ†Ρ‹ экрана

g.drawString(captions[curSlide], getWidth() / 2, 0,

Graphics.HCENTER | Graphics.TOP);

}

ΠœΠ΅Ρ‚ΠΎΠ΄ paint() сначала ΠΎΡ‡ΠΈΡ‰Π°Π΅Ρ‚ экран, Ρ‚Π΅ΠΌ самым удаляя Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΎΡΡ‚Π°Π»ΠΎΡΡŒ ΠΎΡ‚ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅Π³ΠΎ слайда. Π—Π°Ρ‚Π΅ΠΌ Π² Ρ†Π΅Π½Ρ‚Ρ€Π΅ экрана выводится Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π΅ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅. Π”Π°Π»Π΅Π΅ выполняСтся настройка ΡˆΡ€ΠΈΡ„Ρ‚Π° – ΠΏΠΎΠ»ΡƒΠΆΠΈΡ€Π½Ρ‹ΠΉ, срСднСго Ρ€Π°Π·ΠΌΠ΅Ρ€Π°, ΠΏΡ€ΠΎΠΏΠΎΡ€Ρ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹ΠΉ. НаконСц, устанавливаСтся Ρ‡Π΅Ρ€Π½Ρ‹ΠΉ Ρ†Π²Π΅Ρ‚, ΠΈ ΠΏΠΎ Ρ†Π΅Π½Ρ‚Ρ€Ρƒ Ρƒ Π½ΠΈΠΆΠ½Π΅Π³ΠΎ края экрана выводится тСкст. Когда Π²Ρ‹Π²ΠΎΠ΄ Π³Ρ€Π°Ρ„ΠΈΠΊΠΈ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½, послСдняя Ρ‡Π°ΡΡ‚ΡŒ ΠΊΠΎΠ΄Π° класса SSCanvas занимаСтся ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΎΠΉ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ Π²Π²ΠΎΠ΄Π°. НаТимая клавиши со стрСлками Π²Π»Π΅Π²ΠΎ ΠΈ Π²ΠΏΡ€Π°Π²ΠΎ, ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠ΅Ρ€Π΅Π»ΠΈΡΡ‚Ρ‹Π²Π°Ρ‚ΡŒ слайды. ВСхничСски Π΄ΠΎ Π³Π»Π°Π²Ρ‹ 6 Π²Ρ‹ Π½Π΅ Π½Π°ΡƒΡ‡ΠΈΡ‚Π΅ΡΡŒ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ Π²Π²ΠΎΠ΄ Π² ΠΈΠ³Ρ€Π°Ρ…, Π½ΠΎ здСсь я познакомлю вас с основами. НиТС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ ΠΊΠΎΠ΄ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° keyPressed():