|
|
|||||
Регистрация: Jan 2012
Сообщений: 836
|
Взаимодействие классов
В общем надо организовать управление персонажем. Для этого я создал класс player
package AS { import flash.display.MovieClip; import flash.events.Event; import flash.events.KeyboardEvent; import flash.ui.Keyboard; import flash.display.Sprite; public class player extends Sprite { var left_press:Boolean; var up_press:Boolean; var right_press:Boolean; var down_press:Boolean; var _speed:uint; public function player() { addEventListener(KeyboardEvent.KEY_DOWN, keyDownListener); addEventListener(KeyboardEvent.KEY_UP, keyUpListener); addEventListener(Event.ENTER_FRAME, go); _speed = 3; } public function keyDownListener (e:KeyboardEvent):void { if (e.keyCode==65) left_press = true; if (e.keyCode==87) up_press = true; if (e.keyCode==68) right_press = true; if (e.keyCode==83) down_press = true; } public function keyUpListener(e:KeyboardEvent):void { if (e.keyCode==65) left_press = false; if (e.keyCode==87) up_press = false; if (e.keyCode==68) right_press = false; if (e.keyCode==83) down_press = false; } public function go(e:Event):void { if (left_press) igrok.x -=_speed; if (up_press) igrok.y -=_speed; if (right_press) igrok.x +=_speed; if (down_press) igrok.y +=_speed; } } } package AS { import flash.display.MovieClip; import flash.events.MouseEvent; import flash.text.TextField; import flash.events.Event; import flash.display.DisplayObject; import flash.display.Stage; import flash.display.Sprite; import flash.events.KeyboardEvent; import flash.ui.Keyboard; public class Main extends MovieClip { private var igrok:player; public function Main() { createigrok(); clicki(); } public function createigrok() { { igrok = new player; igrok.x = 50; igrok.y = 50; igrok.name = "ssss"; trace('Стопудово новый игрок'); } addChild(igrok); trace('Чего-то добавили, типа...'); } public function clicki() { rembut.addEventListener(MouseEvent.CLICK, onClicks); } function onClicks(event:MouseEvent):void { removeChild(igrok); trace("Удаляем игрока"); } } } |
|
|||||
Регистрация: Sep 2005
Сообщений: 85
|
Adobe Flash перехватывает нажатия кнопок иногда, для своего интерфейса. Попробуйте запустить флэшку отдельно из папки через Flash Player, или через браузер, и проверить.
__________________
www.MegaLuckyPlay.com |
|
|||||
Регистрация: Nov 2009
Адрес: СПб
Сообщений: 2,236
|
Надо стейдж подписать на события клавиатуры.
|
|
|||||
Регистрация: Jan 2012
Сообщений: 836
|
|
|
|||||
[+1 16.07.13]
[+4 16.07.13] Регистрация: Oct 2005
Сообщений: 217
|
Я может чего-то не понял, а igrok в классе player, это что? Которому Вы хотите поменять позицию.
|
|
|||||
Banned
[+4 24.02.14]
[+4 07.11.13] [+ 13.03.14] Регистрация: Mar 2013
Сообщений: 1,864
|
А нарисованный круг не является классом? И Вы опять в кадрах пишите?
|
|
|||||
У вас всё должно работать. Я проверил у себя, и конечно подписал на клавиатуру stage (как подсказал mikhailk), и всё двигалось. Но так как stage в конструкторе игрока может быть не доступна, подпишитесь на
public function player() { addEventListener(Event.ADDED_TO_STAGE, addedToStage); } private function addedToStage(e:Event):void { removeEventListener(Event.ADDED_TO_STAGE, addedToStage); stage.addEventListener(KeyboardEvent.KEY_DOWN, keyDownListener); stage.addEventListener(KeyboardEvent.KEY_UP, keyUpListener); addEventListener(Event.ENTER_FRAME, go); _speed = 3; } |
|
|||||
Нуб нубам
модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
|
Ну конечно недоступен stage в КОНСТРУКТОРЕ игрока. Он же еще не на сцене...
__________________
Reality.getBounds(this); Последний раз редактировалось Wolsh; 13.02.2014 в 19:55. |
|
|||||
Регистрация: Jan 2012
Сообщений: 836
|
Фиг его знает, не получается
|
|
|||||
А что же это за чудеса в классе игрока?
public function go(e:Event):void { if (left_press) ssss.x -=_speed; if (up_press) ssss.y -=_speed; if (right_press) ssss.x +=_speed; if (down_press) ssss.y +=_speed; } p.s. странно что это скомпилировалось, ведь свойства ssss не существует... |
Часовой пояс GMT +4, время: 23:48. |
|
« Предыдущая тема | Следующая тема » |
|
|