![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Регистрация: Oct 2010
Адрес: Свердловск
Сообщений: 77
|
Поиск никаких реультатов не дал, поэтому создал эту тему.
Стало очень интересно, как данные свойства реализованы в AS 3.0. |
|
|||||
|
А это свойства чего?
У визуальной кнопки - надо самому реализовывать. А на клаве только две кнопки тогглед - нумлок и капслок. Смотрите Keyboard.capsLock и Keyboard.numLock. isDown тоже самому отслеживать при нажатии. Можно еще отслеживать зажаты ли ктрл, альт, дел. см http://help.adobe.com/en_US/FlashPla...oardEvent.html
__________________
Чтобы доказать, что вы не робот, причините вред другому человеку. |
|
|||||
|
Регистрация: Oct 2010
Адрес: Свердловск
Сообщений: 77
|
это я уже читал всё.
Это свойства клавиатуры в AS 2.0. Мне нужно отслеживать зажата ли клавиша SHIFT. Можно, конечно, сделать слушатель и устанавливать в переменную shiftIsToggled значения истины или лжи, но, блин, неужели нельзя проще? |
|
|||||
|
А смысл просто следить зажат ли шифт? Если нажимаем какие то кнопочки, что проверить можно. Если мышкой рисуем, то у MouseEvent тоже есть shiftKey
__________________
Чтобы доказать, что вы не робот, причините вред другому человеку. |
|
|||||
|
Регистрация: Oct 2010
Адрес: Свердловск
Сообщений: 77
|
Добавлено через 2 минуты
Ну, если я спрашиваю, значит смысл - таки есть. Задача стоит такая - движение по щелчку и удерживанию ЛКМ, а при удерживании Shift, объект стоит на месте. С мышью реализовал алгоритм, но, опять же, непонятно - можно ли сделать это проще? import flash.events.MouseEvent; import flash.events.Event; var toX,toY; var characterSpeed = 5; var mouseIsToggled = false; // зажата ЛКМ var mouseIsClicked = false; // клик мыши function mouseClick(event:MouseEvent):void { mouseIsClicked = true; if (event.target != mc) { mouseIsToggled = true; removeEventListener(MouseEvent.MOUSE_MOVE, mouseToggled); toX = event.stageX; toY = event.stageY; addEventListener(Event.ENTER_FRAME, onEnterFrame); } } function mouseUnclick(event:MouseEvent):void { mouseIsToggled = false; } function mouseToggled(event:MouseEvent):void { if ( mouseIsClicked && mouseIsToggled && event.target != mc) { toX = event.stageX; toY = event.stageY; addEventListener(Event.ENTER_FRAME, onEnterFrame); } else { stage.addEventListener(MouseEvent.MOUSE_MOVE, mouseToggled); } } function onEnterFrame(e:Event) { moveToCoordinates(toX, toY); } function moveToCoordinates(toX:Number, toY:Number) { var theta = Math.atan2 (toY - mc.y, toX - mc.x); mc.x += Math.cos (theta) * (characterSpeed); mc.y += Math.sin (theta) * (characterSpeed); if (Math.abs(mc.y - toY) < 5 && Math.abs(mc.x - toX) < 5) { removeEventListener(Event.ENTER_FRAME, onEnterFrame); if (! mouseIsToggled) { mouseIsClicked = false; } } } stage.addEventListener(MouseEvent.MOUSE_DOWN, mouseClick); stage.addEventListener(MouseEvent.MOUSE_UP, mouseUnclick); stage.addEventListener(MouseEvent.MOUSE_MOVE, mouseToggled); Последний раз редактировалось Dalass13; 03.04.2013 в 08:30. |
|
|||||
|
Есть для ас3 такой велосипед:
package { import flash.display.Stage; import flash.display.StageDisplayState; import flash.events.Event; import flash.events.KeyboardEvent; public class Key { private static var initialized:Boolean = false; private static var keysDown:Object = new Object(); public static function initialize(stage:Stage):void { if (!initialized) { stage.addEventListener(KeyboardEvent.KEY_DOWN, keyPressed); stage.addEventListener(KeyboardEvent.KEY_UP, keyReleased); stage.addEventListener(Event.DEACTIVATE, clearKeys); initialized = true; } } public static function isDown(keyCode:uint):Boolean { if (!initialized) { throw new Error("Key class has not yet been initialized."); } return Boolean(keyCode in keysDown); } private static function keyPressed(event:KeyboardEvent):void { keysDown[event.keyCode] = true; } private static function keyReleased(event:KeyboardEvent):void { if (event.keyCode in keysDown) { delete keysDown[event.keyCode]; } } private static function clearKeys(event:Event):void { keysDown = new Object(); } } } Сначала инициализируем |
|
|||||
|
Регистрация: Jan 2009
Сообщений: 1,651
|
У меня, кстати, постоянно проподает фокус клавиатуры, даже когда stage подписана на него. я так понимаю, каждый раз, когда фокус клавиатуры был на мувике, который был убран со сцены. Кто как с этим борется? Я вот просто постоянно делаю setFocus.
__________________
мой пустой блог |
|
|||||
|
Регистрация: Oct 2010
Адрес: Свердловск
Сообщений: 77
|
Этот велосипед уже видел на просторах интернета, жаль. Думал, что можно всё-таки обойтись стандартными средствами. Огромное спасибо за помощь
|
![]() |
![]() |
Часовой пояс GMT +4, время: 16:37. |
|
|
« Предыдущая тема | Следующая тема » |
|
|