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

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

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

Как Π²ΠΈΠ΄Π½ΠΎ ΠΈΠ· списка, Ρ‚ΠΎΠ»ΡŒΠΊΠΎ клавиши LEFT_PRESSED, RIGHT_PRESSED, UP_PRESSED, DOWN_PRESSED ΠΈ FIRE_PRESSED Π±ΡƒΠ΄ΡƒΡ‚ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒΡΡ Π½Π° всСх ΠΌΠΎΠ±ΠΈΠ»ΡŒΠ½Ρ‹Ρ… Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½Π°Ρ…; ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ клавиши ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΎΠΏΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹ΠΌΠΈ.

ΠšΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ‚ΠΎΡ€

Класс GameCanvas ΠΈΠΌΠ΅Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½ конструктор, ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°ΡŽΡ‰ΠΈΠΉ ΠΎΠ΄ΠΈΠ½ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ опрСдСляСт, ΠΌΠΎΠΆΠ½ΠΎ Π»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ управлСния, Π·Π°Π΄Π°Π½Π½Ρ‹ΠΉ Π² J2ME, ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ: GameCanvas(boolean suppressKeyEvents).

Класс GameCanvas ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ свою ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΈΠΊΡƒ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π½Π°ΠΆΠ°Ρ‚ΠΈΠΉ клавиш, getKeyStates(), ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ ΠΈΠ³Ρ€ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ ΡΡ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½ΡƒΡŽ систСму рСагирования Π½Π° наТатия клавиш Π² J2ME. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΠΈΠ³Ρ€Ρ‹ Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ ΠΎΠ±Ρ€Π°Ρ‰Π°ΡŽΡ‚ΡΡ ΠΊ конструктору GameCanvas, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰Π΅ΠΌΡƒ ΠΎΡ‚ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΈΠΊΡƒ восприятия Π½Π°ΠΆΠ°Ρ‚ΠΈΠΉ клавиш ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ. ΠœΠ΅Ρ‚ΠΎΠ΄ΠΈΠΊΠ° getKeyStates() Π±ΠΎΠ»Π΅Π΅ эффСктивна, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ½Π° Π½Π΅ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ΡƒΠ΅Ρ‚ с ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠΉ систСмой восприятия клавиш. Если ваша ΠΈΠ³Ρ€Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ ΡΠΌΠ΅ΡˆΠ°Π½Π½Ρ‹ΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ ΠΊ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ Π½Π°ΠΆΠ°Ρ‚ΠΈΠΉ клавиш, Π²Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ конструктору ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ Β«falseΒ», Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΈΠΊΡƒ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π½Π°ΠΆΠ°Ρ‚ΠΈΠΉ клавиш ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ.

ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹

Π’ классС GameCanvas ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ΡΡ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹:

β–Ί Graphics getGraphics() β€“ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Graphics для рисования Π½Π° ΠΈΠ³Ρ€ΠΎΠ²ΠΎΠΉ схСмС;

β–Ί void flushGraphics() β€“ обнуляСт Π±ΡƒΡ„Π΅Ρ€ экрана ΠΈ позволяСт ΠΎΡ‚ΠΎΠ±Ρ€Π°Π·ΠΈΡ‚ΡŒ графичСскиС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Π½Π° экранС Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½Π°;

β–Ί void flushGraphics(int x, int y, int width, int height) β€“ обнуляСт ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΡƒΡŽ ΠΎΠ±Π»Π°ΡΡ‚ΡŒ Π±ΡƒΡ„Π΅Ρ€Π° экрана ΠΈ позволяСт ΠΎΡ‚ΠΎΠ±Ρ€Π°Π·ΠΈΡ‚ΡŒ графичСскиС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Π² Π΄Π°Π½Π½ΠΎΠΉ области;

β–Ί int getKeyStates() β€“ считываСт состояниС клавиш ΠΈΠ³Ρ€Ρ‹ (для опрСдСлСния состояния ΠΊΠ°ΠΆΠ΄ΠΎΠΉ клавиши ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ константы, ΡΠ²Π»ΡΡŽΡ‰ΠΈΠ΅ΡΡ масками Π±ΠΈΡ‚Π°);

β–Ί void paint(Graphics g) β€“ рисуСт схСму ΠΈΠ³Ρ€Ρ‹.

Для ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ Π³Ρ€Π°Ρ„ΠΈΠΊΠΈ с Π΄Π²ΠΎΠΉΠ½ΠΎΠΉ Π±ΡƒΡ„Π΅Ρ€ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ Π² мобильной ΠΈΠ³Ρ€Π΅ Π²Π°ΠΌ достаточно Π½Π°Ρ€ΠΈΡΠΎΠ²Π°Ρ‚ΡŒ графичСский ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, считанный с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ getGraphics(), Π° Π·Π°Ρ‚Π΅ΠΌ ΠΎΡ‚ΠΎΠ±Ρ€Π°Π·ΠΈΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π½Π° экранС, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ flushGraphics().

Класс Layer

Класс Layer прСдставляСт Π² мобильной ΠΈΠ³Ρ€Π΅ ΠΎΠ±Ρ‰ΠΈΠΉ графичСский ΠΎΠ±ΡŠΠ΅ΠΊΡ‚; ΠΎΠ½ являСтся Π±Π°Π·ΠΎΠ²Ρ‹ΠΌ классом для Ρ‚Π°ΠΊΠΈΡ… классов, ΠΊΠ°ΠΊ Sprite ΠΈ TiledLayer. НСсмотря Π½Π° Ρ‚ΠΎ Ρ‡Ρ‚ΠΎ Π²Ρ‹ Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ Π½Π΅ создаСтС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Layer, Π²Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ рСгулярно ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ класса Layer Π²ΠΎ врСмя Ρ€Π°Π±ΠΎΡ‚Ρ‹ со спрайтами ΠΈ Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΌΠΈ классами.

ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹

Π’ классС Layer ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ΡΡ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹:

β–Ί int getX() β€“ считываСт ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π²Π΅Ρ€Ρ…Π½Π΅Π³ΠΎ Π»Π΅Π²ΠΎΠ³ΠΎ ΡƒΠ³Π»Π° слоя ΠΏΠΎ оси X ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ систСмы ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° (canvas ΠΈΠ»ΠΈ layer manager);

β–Ί int getY() β€“ считываСт ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π²Π΅Ρ€Ρ…Π½Π΅Π³ΠΎ Π»Π΅Π²ΠΎΠ³ΠΎ ΡƒΠ³Π»Π° слоя ΠΏΠΎ оси Y ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ систСмы ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° (canvas ΠΈΠ»ΠΈ layer manager);

β–Ί int getWidth() β€“ считываСт ΡˆΠΈΡ€ΠΈΠ½Ρƒ слоя (Π² пиксСлях);

β–Ί int getHeight() β€“ считываСт высоту слоя (Π² пиксСлях);

β–Ί void setPosition(int x, int y – считываСт ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π²Π΅Ρ€Ρ…Π½Π΅Π³ΠΎ Π»Π΅Π²ΠΎΠ³ΠΎ ΡƒΠ³Π»Π° слоя ΠΏΠΎ осям X ΠΈ Y ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ систСмы ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° (canvas ΠΈΠ»ΠΈ layer manager);

β–Ί void move(int dx, int dy) β€“ измСняСт ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ слоя ΠΏΠΎ осям X ΠΈ Y Π½Π° ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠΎ Π³ΠΎΡ€ΠΈΠ·ΠΎΠ½Ρ‚Π°Π»ΠΈ ΠΈ Π²Π΅Ρ€Ρ‚ΠΈΠΊΠ°Π»ΠΈ (Π² пиксСлях);

β–Ί boolean isVisible() β€“ считываСт Π²ΠΈΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ слоя;

β–Ί void setVisible(boolean visible) β€“ настраиваСт Π²ΠΈΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ слоя;

β–Ί abstract void paint(Graphics g) β€“ рисуСт слой ΠΏΡ€ΠΈ условии, Ρ‡Ρ‚ΠΎ ΠΎΠ½ Π²ΠΈΠ΄ΠΈΠΌΡ‹ΠΉ.

Π­Ρ‚ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°ΡŽΡ‚ доступ ΠΊ Ρ‚Π°ΠΊΠΈΠΌ стандартным ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌ слоя, ΠΊΠ°ΠΊ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΏΠΎ осям X ΠΈ Y, ΡˆΠΈΡ€ΠΈΠ½Π°, высота ΠΈ Π²ΠΈΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ. ΠŸΠΎΠΌΠ½ΠΈΡ‚Π΅ ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π΄Π°Π½Π½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ΡΡ ΠΈ классами Sprite, ΠΈ TiledLayer (Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ½ΠΈ происходят ΠΎΡ‚ класса Layer).

Класс Sprite

МодСли класса Sprite ΡΠ²Π»ΡΡŽΡ‚ΡΡ Π΄Π²ΡƒΡ…ΠΌΠ΅Ρ€Π½Ρ‹ΠΌΠΈ спрайтами, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π°Ρ‚ΡŒΡΡ ΠΈ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΠΈ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ. Π‘ΠΏΡ€Π°ΠΉΡ‚ пСрСмСщаСтся ΠΏΡƒΡ‚Π΅ΠΌ измСнСния полоТСния ΠΏΠΎ осям X ΠΈ Y, Π° ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π΅Π³ΠΎ внСшнСго Π²ΠΈΠ΄Π° достигаСтся с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π³Ρ€ΡƒΠΏΠΏΡ‹ Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… ΠΊΠ°Π΄Ρ€ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ входят Π² состав изобраТСния спрайта. ВсС Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΠΎΠ½Π½Ρ‹Π΅ ΠΊΠ°Π΄Ρ€Ρ‹ ΠΈΠΌΠ΅ΡŽΡ‚ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹Π΅ Ρ€Π°Π·ΠΌΠ΅Ρ€Ρ‹, Π° ΠΊΠ°Π΄Ρ€Ρ‹ Ρ€Π°ΡΠΏΠΎΠ»Π°Π³Π°ΡŽΡ‚ΡΡ Π² ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΈ ΠΏΠΎ порядку. По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ спрайт содСрТит ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΠΈ, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΠΎΠ½Π½Ρ‹Π΅ ΠΊΠ°Π΄Ρ€Ρ‹ Ρ€Π°ΡΠΏΠΎΠ»Π°Π³Π°ΡŽΡ‚ΡΡ Ρ‚Π°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΈ Π½Π° ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΈ. Π§Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ эффСкты Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΠΈ для спрайта, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΠΎΠ½Π½ΡƒΡŽ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π»ΡŽΠ±Ρ‹ΠΌ способом.

Π’Π°ΠΊΠΆΠ΅ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Ρ‚Ρ€Π°Π½ΡΡ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ спрайты, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Π²Ρ€Π°Ρ‰Π°Ρ‚ΡŒ ΠΈ/ΠΈΠ»ΠΈ Π·Π΅Ρ€ΠΊΠ°Π»ΡŒΠ½ΠΎ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Ρ‚ΡŒ ΠΈΡ…, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠΌΠ΅Π½ΡŒΡˆΠΈΡ‚ΡŒ количСство Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Ρ… ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, спрайты содСрТат пиксСль ссылки (reference pixel), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ являСтся ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚ΠΎΠΉ ΠΏΠΎ осям X ΠΈ Y спрайта. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ этот пиксСль для ссылки Π½Π° спрайт (вмСсто Π»Π΅Π²ΠΎΠ³ΠΎ Π²Π΅Ρ€Ρ…Π½Π΅Π³ΠΎ ΡƒΠ³Π»Π° спрайта, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰Π΅Π³ΠΎΡΡ для ссылки ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ). ДСйствия ΠΈ трансформации спрайта связаны с пиксСлСм ссылки, Ρ‡Ρ‚ΠΎ, Π² свою ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ, ΡƒΠΏΡ€ΠΎΡ‰Π°Π΅Ρ‚ осмыслСнноС ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ спрайтом.

Member Constants

Π’ классС Sprite Π·Π°Π΄Π°Π½Ρ‹ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ константы, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ для ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ трансформаций, ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΠΌΡ‹Ρ… ΠΊ спрайту:

β–Ί TRANS_NONE – спрайт Π½ΠΈΠΊΠ°ΠΊ Π½Π΅ трансформируСтся;

β–Ί TRANS_ROT90 – спрайт вращаСтся ΠΏΠΎ часовой стрСлкС Π½Π° 90 градусов;

β–Ί TRANS_ROT180 – спрайт вращаСтся ΠΏΠΎ часовой стрСлкС Π½Π° 180 градусов;

β–Ί TRANS_ROT270 – спрайт вращаСтся ΠΏΠΎ часовой стрСлкС Π½Π° 270 градусов;

β–Ί TRANS_MIRROR – спрайт наклоняСтся ΠΏΠΎ Π²Π΅Ρ€Ρ‚ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎΠΉ оси;

β–Ί TRANS_MIRROR_ROT90 – спрайт наклоняСтся ΠΏΠΎ Π²Π΅Ρ€Ρ‚ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎΠΉ оси ΠΈ поворачиваСтся ΠΏΠΎ часовой стрСлкС Π½Π° 90 градусов;

β–Ί TRANS_MIRROR_ROT180 – спрайт наклоняСтся ΠΏΠΎ Π²Π΅Ρ€Ρ‚ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎΠΉ оси ΠΈ поворачиваСтся ΠΏΠΎ часовой стрСлкС Π½Π° 180 градусов;

β–Ί TRANS_MIRROR_ROT270 – спрайт наклоняСтся ΠΏΠΎ Π²Π΅Ρ€Ρ‚ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎΠΉ оси ΠΈ поворачиваСтся ΠΏΠΎ часовой стрСлкС Π½Π° 270 градусов.

Π­Ρ‚ΠΈ константы трансформации ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ посрСдством ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ setTransform() ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ Π²Π°ΠΌ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Π² спрайтС Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ эффСкты, связанныС с Π²Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ΠΌ ΠΈ Π·Π΅Ρ€ΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΌ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ.

ΠšΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ‚ΠΎΡ€Ρ‹

Для создания спрайтов Π² классС Sprite ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ΡΡ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ конструкторы:

β–Ί Sprite(Image image) β€“ создаСт основанный Π½Π° ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΈ, Π½Π΅ содСрТащий Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΠΈ спрайт;

β–Ί Sprite(Image image, int frameWidth, int frameHeight) β€“ создаСт Π°Π½ΠΈΠΌΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ спрайт, основанный Π½Π° ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΈ. Π”Π°Π½Π½Ρ‹ΠΉ спрайт содСрТит ΠΊΠ°Π΄Ρ€Ρ‹ Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΠΈ (Ρ€Π°Π·ΠΌΠ΅Ρ€ ΠΈ количСство ΠΊΠ°Π΄Ρ€ΠΎΠ² опрСдСляСтся Π·Π°Π΄Π°Π½Π½ΠΎΠΉ ΡˆΠΈΡ€ΠΈΠ½ΠΎΠΉ ΠΈ высотой ΠΊΠ°Π΄Ρ€Π°);

β–Ί Sprite(Sprite s) β€“ создаСт ΠΎΠ΄ΠΈΠ½ спрайт ΠΈΠ· Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ.

ΠŸΠ΅Ρ€Π²Ρ‹Π΅ Π΄Π²Π° конструктора ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ Π²Π°ΠΌ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Π½Π΅Π°Π½ΠΈΠΌΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ ΠΈ Π°Π½ΠΈΠΌΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ спрайты, соотвСтствСнно, Π° Ρ‚Ρ€Π΅Ρ‚ΠΈΠΉ конструктор ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для копирования спрайта.

ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹

Π’ классС Sprite ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ΡΡ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹:

β–Ί void setFrameSequence(int[] sequence) β€“ Π·Π°Π΄Π°Π΅Ρ‚ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… ΠΊΠ°Π΄Ρ€ΠΎΠ² для спрайта;

β–Ί void nextFrame() β€“ настраиваСт Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ ΠΊΠ°Π΄Ρ€ спрайта Π½Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠ°Π΄Ρ€ Π² Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ;

β–Ί void prevFrame() β€“ настраиваСт Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ ΠΊΠ°Π΄Ρ€ спрайта Π½Π° ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠΉ ΠΊΠ°Π΄Ρ€ Π² Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ;

β–Ί int getFrame() β€“ считываСт индСкс Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ ΠΊΠ°Π΄Ρ€Π° спрайта Π² ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΊΠ°Π΄Ρ€ΠΎΠ²;

β–Ί void setFrame(int sequenceIndex) β€“ настраиваСт Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ ΠΊΠ°Π΄Ρ€ спрайта Π² Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Π½Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ индСкс ΠΊΠ°Π΄Ρ€Π°;

β–Ί int getFrameSequenceLength() β€“ считываСт количСство ΠΊΠ°Π΄Ρ€ΠΎΠ² Π² Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ;

β–Ί int getRawFrameCount() β€“ считываСт количСство Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… ΠΊΠ°Π΄Ρ€ΠΎΠ² для спрайта, ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ΅ Π² ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΈ спрайта;

β–Ί void setImage(Image img, int frameWidth, int frameHeight) β€“ Π·Π°Π΄Π°Π΅Ρ‚ для спрайта ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ΅ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅;

β–Ί boolean collidesWith(Image image, int x, int y, boolean pixelLevel) β€“ провСряСт Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚Π° ΠΌΠ΅ΠΆΠ΄Ρƒ спрайтом ΠΈ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ Π² ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΌ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ ΠΏΠΎ осям X ΠΈ Y (послСдний ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, Π΄ΠΎΠ»ΠΆΠ΅Π½ Π»ΠΈ этот ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠΈΠΊΡΠ΅Π»ΡŒΠ½Ρ‹ΠΌ ΠΈΠ»ΠΈ основанным Π½Π° ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚Π΅ ΠΏΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊΠ°);

β–Ί boolean collidesWith(Sprite s, boolean pixelLevel) β€“ провСряСт Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚Π° ΠΌΠ΅ΠΆΠ΄Ρƒ двумя спрайтами (Π²Ρ‚ΠΎΡ€ΠΎΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, Π΄ΠΎΠ»ΠΆΠ΅Π½ Π»ΠΈ этот ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠΈΠΊΡΠ΅Π»ΡŒΠ½Ρ‹ΠΌ ΠΈΠ»ΠΈ основанным Π½Π° ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚Π΅ ΠΏΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊΠ°);

β–Ί boolean collidesWith(TiledLayer t, boolean pixelLevel) β€“ провСряСт Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚Π° ΠΌΠ΅ΠΆΠ΄Ρƒ спрайтом ΠΈ Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΌ слоСм (Π²Ρ‚ΠΎΡ€ΠΎΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, Π΄ΠΎΠ»ΠΆΠ΅Π½ Π»ΠΈ этот ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠΈΠΊΡΠ΅Π»ΡŒΠ½Ρ‹ΠΌ ΠΈΠ»ΠΈ основанным Π½Π° ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚Π΅ ΠΏΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊΠ°);

β–Ί void defineCollisionRectangle(int x, int y, int width, int height) β€“ создаСт ΠΏΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊ Π³Ρ€Π°Π½ΠΈΡ†Ρ‹ для спрайта. Π”Π°Π½Π½Ρ‹ΠΉ ΠΏΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊ ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ для распознавания ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ΠΎΠ² ΠΏΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊΠ° (часто ΠΎΠ½ мСньшС, Ρ‡Π΅ΠΌ сам спрайт; это позволяСт ΡƒΡ‡Π΅ΡΡ‚ΡŒ спрайты, Π½Π΅ ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΠ΅ ΠΏΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΎΠΉ Ρ„ΠΎΡ€ΠΌΡ‹);

β–Ί void defineReferencePixel(int x, int y) β€“ создаСт для спрайта пиксСль ссылки, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для пСрСмСщСния ΠΈ трансформации спрайта вмСсто Π΅Π³ΠΎ Π»Π΅Π²ΠΎΠ³ΠΎ Π²Π΅Ρ€Ρ…Π½Π΅Π³ΠΎ ΡƒΠ³Π»Π°;

β–Ί int getRefPixelX() β€“ считываСт ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ пиксСля ссылки спрайта ΠΏΠΎ оси X ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ систСмы ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚ (canvas ΠΈΠ»ΠΈ layer manager);

β–Ί int getRefPixelY() β€“ считываСт ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ пиксСля ссылки спрайта ΠΏΠΎ оси Y ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ систСмы ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚ (canvas ΠΈΠ»ΠΈ layer manager);

β–Ί void setRefPixelPosition(int x, int y) β€“ Π·Π°Π΄Π°Π΅Ρ‚ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ пиксСля ссылки слоя ΠΏΠΎ осям X ΠΈ Y ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ систСмы ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° (canvas ΠΈΠ»ΠΈ layer manager);

β–Ί void setTransform(int transform) β€“ настраиваСт Ρ‚Ρ€Π°Π½ΡΡ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ спрайта (для указания Ρ‚ΠΈΠΏΠ° трансформации ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ константы трансформации);

β–Ί void paint(Graphics g) β€“ рисуСт спрайт, Ссли ΠΎΠ½ Π²ΠΈΠ΄ΠΈΠΌΡ‹ΠΉ.

Π”Π°Π½Π½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ большоС количСство Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ спрайта, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, созданиС Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ, распознаваниС ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ΠΎΠ², Ρ€Π°Π±ΠΎΡ‚Ρƒ с пиксСлСм ссылки ΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ трансформаций.

Класс TiledLayer