|
|
|||||
Регистрация: Jun 2014
Сообщений: 558
|
булевские значения
Что-то ни как не могу понять, где косячу. Вся задумка состоит в том, что бы при нажатии клавиши кораблик стрелял один раз (даже если зажали кнопку) и при отпускании стрелял во второй раз. работает только fn_fire, да и то, если зажать кнопку, вылетает очередь.
var fireBoolean: Boolean = true; var FireArray = new Array(); var speed_boll: Number = 35; stage.addEventListener(KeyboardEvent.KEY_DOWN, fn_fire); function fn_fire(event: KeyboardEvent): void { if ((start_ship) && (event.keyCode == 90) && (fireBoolean = true)) { var bollF: boll_mc = new boll_mc(); fireBoolean = false; var p: Point = stage.globalToLocal(ship.localToGlobal(new Point(0, 70))); bollF.x = p.x; bollF.y = p.y; bollF.scaleY = 0.6; bollF.scaleX = 0.6; bollF.rotation = ship.rotation; FireArray.push(bollF); this.addChild(bollF); trace("Код нажатой клавиши: " + event.keyCode); } } stage.addEventListener(KeyboardEvent.KEY_UP, fn_fire2); function fn_fire2(event: KeyboardEvent): void { if ((start_ship) && (fireBoolean = false) && (event.keyCode = 90)) { var bollF: boll_mc = new boll_mc(); fireBoolean = true; var p: Point = stage.globalToLocal(ship.localToGlobal(new Point(0, -70))); bollF.x = p.x; bollF.y = p.y; bollF.scaleY = 0.5; bollF.scaleX = 0.5; bollF.rotation = ship.rotation; FireArray.push(bollF); this.addChild(bollF); trace("Код нажатой клавиши: " + event.keyCode); } } addEventListener(Event.ENTER_FRAME, boll_action); function boll_action(e: Event): void { var i: int = FireArray.length; while (i--) { var j: boll_mc = FireArray[i]; j.x -= speed_boll * Math.cos(j.rotation / 180 * Math.PI); j.y -= speed_boll * Math.sin(j.rotation / 180 * Math.PI); } } |
|
|||||
Регистрация: Jun 2008
Сообщений: 126
|
|
|
|||||
Регистрация: Jul 2009
Сообщений: 149
|
Знак "=" это присвоение значения, а проверка на равенство - "=="
Я бы как то так сделал: stage.addEventListener(KeyboardEvent.KEY_DOWN, keyDownHandler); stage.addEventListener(KeyboardEvent.KEY_UP, keyUpHandler); private var _keyIsPressed:Boolean = false; private function keyDownHandler(event:KeyboardEvent):void { if (!_keyIsPressed) { fire("Fire on key DOWN"); _keyIsPressed = true; } } private function keyUpHandler(event:KeyboardEvent):void { fire("Fire on key UP"); _keyIsPressed = false; } private function fire(mes:String):void { trace(mes); } Последний раз редактировалось ObOs; 10.09.2014 в 10:52. |
|
|||||
Регистрация: Jun 2014
Сообщений: 558
|
точно, не заметил своей ошибки, переписал код, возник другой глюк, экшн не понимает строчку
если убрать e.keyCode == 90, то начинает работать стрелять почти как задумано, но выстрел срабатывает, если отпустить любую кнопку stage.addEventListener(KeyboardEvent.KEY_UP, fn_fire2); function fn_fire2(e: KeyboardEvent): void { if ((start_ship) && (e.keyCode == 90) && (fireBoolean == false)) { var bollF: boll_mc = new boll_mc(); var p: Point = stage.globalToLocal(ship.localToGlobal(new Point(0, -70))); bollF.x = p.x; bollF.y = p.y; bollF.scaleY = 0.6; bollF.scaleX = 0.6; bollF.rotation = ship.rotation; FireArray.push(bollF); this.addChild(bollF); fireBoolean = true; } } |
|
|||||
Banned
[+1 06.12.14]
[+1 18.12.14] [+1 30.12.14] Регистрация: Aug 2014
Сообщений: 461
|
А где у Вас start_ship определена?
|
|
|||||
Регистрация: Jun 2014
Сообщений: 558
|
в другой части программы, после создания объекта, она принимает значение true, с ней проблем нет точно
|
|
|||||
Banned
[+1 06.12.14]
[+1 18.12.14] [+1 30.12.14] Регистрация: Aug 2014
Сообщений: 461
|
Цитата:
|
|
|||||
Регистрация: Jun 2014
Сообщений: 558
|
точно всё с ней в порядке, если посмотрите код в первом сообщении, то поймёте, что там две аналогичные функции, отличаются лишь координатами и слушателем, один реагирует на нажатие, а второй на отпускание клавиши, так же, если обратили внимание, то яв сообщении чуть позже указываю, что проблема в e.keyCode, так как после удаления его всё начинает почти нормально работать
|
|
|||||
Banned
[+1 06.12.14]
[+1 18.12.14] [+1 30.12.14] Регистрация: Aug 2014
Сообщений: 461
|
А что по Вашему "не понимает"? Ошибку выдает или нет реакции?
Добавлено через 4 минуты Покажите слушатель down. |
|
|||||
Регистрация: Jun 2014
Сообщений: 558
|
весь код выложен уже выше
итог этого выражения false итог этого выражения true, но мне нужно, что первое выражение при отпускании клавиши 90 имело true при этом первое выражение даёт в первом слушателе значение true |
Часовой пояс GMT +4, время: 17:05. |
|
« Предыдущая тема | Следующая тема » |
Опции темы | |
Опции просмотра | |
|
|