Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 12.06.2014, 18:26
nubideus вне форума Посмотреть профиль Отправить личное сообщение для nubideus Найти все сообщения от nubideus
  № 11  
Ответить с цитированием
nubideus

Регистрация: Jan 2013
Сообщений: 322
Цитата:
Сообщение от Dmitriy154 Посмотреть сообщение
caseyryan - не получается trace(Key.isDown(Keyboard.SPACE)); пишет ошибку - Обращение несуществующего свойства Keyboard.
Код AS3:
import flash.ui.Keyboard;

Старый 13.06.2014, 14:12
Dmitriy154 вне форума Посмотреть профиль Отправить личное сообщение для Dmitriy154 Найти все сообщения от Dmitriy154
  № 12  
Ответить с цитированием
Dmitriy154

Регистрация: Feb 2014
Сообщений: 192
или вместо Keyboard.SPACE указать числовой код нужных клавиш

Старый 13.06.2014, 14:42
alexandrratush вне форума Посмотреть профиль Отправить личное сообщение для alexandrratush Найти все сообщения от alexandrratush
  № 13  
Ответить с цитированием
alexandrratush
 
Аватар для alexandrratush

Регистрация: Jul 2013
Адрес: Днепр
Сообщений: 529
Отправить сообщение для alexandrratush с помощью ICQ Отправить сообщение для alexandrratush с помощью Skype™
Цитата:
Сообщение от Dmitriy154 Посмотреть сообщение
или вместо Keyboard.SPACE указать числовой код нужных клавиш
Это дурной тон. Для вас же специально создан класс, в котором есть уже все константы с этими кодами.

Старый 13.06.2014, 14:57
Dmitriy154 вне форума Посмотреть профиль Отправить личное сообщение для Dmitriy154 Найти все сообщения от Dmitriy154
  № 14  
Ответить с цитированием
Dmitriy154

Регистрация: Feb 2014
Сообщений: 192
Не хочу наглеть, но все-таки, может кто подскажет аналогичный класс, но только для событий Enterframe, и способ его использования?

Старый 13.06.2014, 21:23
caseyryan вне форума Посмотреть профиль Отправить личное сообщение для caseyryan Найти все сообщения от caseyryan
  № 15  
Ответить с цитированием
caseyryan
 
Аватар для caseyryan

Регистрация: Jun 2012
Адрес: Новосибирск
Сообщений: 6,644
Записей в блоге: 4
А что в нем такого? Создаем класс, создаем внутри него любой дисплей объект в статическом методе, и вешаем на него энтерфрейм. В классе заводим массив с по которому пробегаемся каждый раз в обработчике энтерфрейма циклом и вызываем у всех объектов нужный метод,. У меня это обычно метод update().
Код AS3:
package {
   public class Action {
       private static var _sprite:Sprite;
       private static var _updatables:Array/*IUpdatable*/ = [];
 
       public static function initialize():void {
          if (_sprite) return;
          _sprite = new Sprite();
          _sprite.addEventListener(Event.ENTER_FRAME, onEnterFrame);
       }
       private static function onEnterFrame(e:Event):void {
           for (var i:String in _updatables) _updatables[i].update();
       }
       public static function addUpdatable(value:IUpdatable):void {
            if (_updatables.indexOf(value) < 0) _updatables.push(value);
       }
       public static function removeUpdatable(value:IUpdatable):void {
           var index:int = _updatables.indexOf(value);
           if (index > -1) _updatables.splice(index, 1);
       }
   }
}
Код AS3:
package {
   public interface IUpdatable {
         function update():void;
   }
}
как-то так.
Писал прямо здесь, так что могут быть опечатки
__________________
Ко мне можно и нужно обращаться на ты)


Последний раз редактировалось caseyryan; 16.06.2014 в 11:24.
Старый 16.06.2014, 11:15
Dmitriy154 вне форума Посмотреть профиль Отправить личное сообщение для Dmitriy154 Найти все сообщения от Dmitriy154
  № 16  
Ответить с цитированием
Dmitriy154

Регистрация: Feb 2014
Сообщений: 192
Спасибо тебе огромное, caseyryan!

Старый 17.06.2014, 00:04
ZackMercury вне форума Посмотреть профиль Отправить личное сообщение для ZackMercury Найти все сообщения от ZackMercury
  № 17  
Ответить с цитированием
ZackMercury
 
Аватар для ZackMercury

блогер
Регистрация: Jul 2013
Адрес: Север
Сообщений: 1,922
Записей в блоге: 23
Отправить сообщение для ZackMercury с помощью ICQ Отправить сообщение для ZackMercury с помощью Skype™
Да, кстати, для нажатых клавиш можно бы сделать ради удобства как в AS2 расширенный класс Sprite, в котором прикрутить методы addTrigger(Keyboard.LEFT, handleLeftPress), removeTrigger(Keyboard.RIGHT, handleRightPress), чтобы не париться с KeyboardEvent и стейджем.
В этом классе вызывать колбеки handleSomethingPress при ENTER_FRAME в объекте с ключом константы класса Keyboard (по ключу константы нужный колбек), при нажатой клавише.
При нажатии выставлять в тру нажатое, при отжатии выставлять в null.
Итого код сильно упростится и в читабельности, и в размере.
Код AS3:
var obj:GameObject = new GameObject();
obj.use(new PlayerSprite());
obj.addTrigger(Keyboard.LEFT, moveLeft);
addChild(obj);
 
function moveLeft():void
{
obj.move(-obj.speed, 0);
}
__________________
There is no thing in this world that is not simple.


Последний раз редактировалось ZackMercury; 17.06.2014 в 00:27.
Старый 17.06.2014, 10:27
caseyryan вне форума Посмотреть профиль Отправить личное сообщение для caseyryan Найти все сообщения от caseyryan
  № 18  
Ответить с цитированием
caseyryan
 
Аватар для caseyryan

Регистрация: Jun 2012
Адрес: Новосибирск
Сообщений: 6,644
Записей в блоге: 4
То есть ты хочешь сказать, что твой код проще, чем?
Код AS3:
if (Key.isDown(Keyboard.LEFT)) {
    идтиВлево();
}
? )
__________________
Ко мне можно и нужно обращаться на ты)

Старый 17.06.2014, 15:43
ZackMercury вне форума Посмотреть профиль Отправить личное сообщение для ZackMercury Найти все сообщения от ZackMercury
  № 19  
Ответить с цитированием
ZackMercury
 
Аватар для ZackMercury

блогер
Регистрация: Jul 2013
Адрес: Север
Сообщений: 1,922
Записей в блоге: 23
Отправить сообщение для ZackMercury с помощью ICQ Отправить сообщение для ZackMercury с помощью Skype™
Цитата:
Сообщение от caseyryan Посмотреть сообщение
То есть ты хочешь сказать, что твой код проще, чем?
Код AS3:
if (Key.isDown(Keyboard.LEFT)) {
    идтиВлево();
}
? )
Да.
Я привёл пример общего создания объекта и добавления к нему спрайта.
Аналог вашей проверки вот в этой строчке(помещается в строчку и вполне читабельно):
Код AS3:
obj.addTrigger(Keyboard.LEFT, moveLeft);
При этом вызывается только при инициализации, не нужно дёргать в ентерфрейме апдейта, всё это просчитается в классе GameObject.
Удалить же триггер можно так же просто.
obj.removeTrigger(Keyboard.LEFT);
__________________
There is no thing in this world that is not simple.

Старый 17.06.2014, 15:55
ChuwY вне форума Посмотреть профиль Отправить личное сообщение для ChuwY Посетить домашнюю страницу ChuwY Найти все сообщения от ChuwY
  № 20  
Ответить с цитированием
ChuwY
 
Аватар для ChuwY

Регистрация: Nov 2009
Адрес: Тула / Москва
Сообщений: 734
Отправить сообщение для ChuwY с помощью ICQ Отправить сообщение для ChuwY с помощью Skype™
SuriTheAngel, проблема вашего метода в том, что иногда (зачастую) требуется информация о сочетании нажатых клавиш.
__________________
9 из 10 голосов в моей голове сказали наркотикам "НЕТ"
Мои ачивки: художник-паразит.

Создать новую тему Ответ Часовой пояс GMT +4, время: 16:43.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 16:43.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.