Игровые контроллеры

1
Вдруг кто еще не знает — Flash Player, начиная с версии 11.7, поддерживает игровые контроллеры. То есть можно поиграть на геймпаде прямо в браузере. Можно подключить сразу несколько.



Повибрировать геймпадом к сожалению пока нельзя. И встраивать в игру стоит только если уверены, что игроки обновились до версии 11.7.

Ниже пример кода для работы с контроллерами
package
{
    import flash.display.Sprite;
    import flash.events.Event;
    import flash.events.GameInputEvent;
    import flash.ui.GameInput;
    import flash.ui.GameInputControl;
    import flash.ui.GameInputDevice;
    
    public class Main extends Sprite
    {
        private var gameInput:GameInput;
        
        public function Main():void
        {
            gameInput = new GameInput();
            gameInput.addEventListener(GameInputEvent.DEVICE_ADDED, deviceAdded);
            gameInput.addEventListener(GameInputEvent.DEVICE_REMOVED, deviceRemoved);
        }
        
        private function deviceAdded(e:GameInputEvent):void
        {
            var device:GameInputDevice = e.device;
            device.enabled = true;
            
            for (var i:Number = 0; i < device.numControls; i++)
            {
                var control:GameInputControl = device.getControlAt(i);
                control.addEventListener(Event.CHANGE, controlChange);
            }
        }
        
        private function controlChange(e:Event):void 
        {
            var control:GameInputControl = GameInputControl(e.target);
            trace(control.id, control.value);
        }
        
        private function deviceRemoved(e:GameInputEvent):void
        {
            trace("Device is removed");
        }
    }
}

Пояснения к коду

control.id — название кнопки
control.value — значение кнопки. Например на геймпаде Xbox кнопки A, B, X, Y могут принимать значения 0 или 1 (нажата или не нажата). Кнопки RT и LT могут принимать значения в диапазоне от 0 до 1. Левый и правый стики состоят каждый из трех кнопок — положение по оси X, положение по оси Y и нажатие на сам стик.

На каждую кнопку нужно вешать обработчик событий.
control.addEventListener(Event.CHANGE, controlChange);

Внимание! gameInput нельзя делать локальной переменной. В этом случае её похоже съедает сборщик мусора.

Рекомендую статью
www.adobe.com/devnet/air/articles/game-controllers-on-air.html

Комментарии (8)

0
На Air можно что угодно делать через подключение нативного расширения. Пример тому — джойстик и окулус )
За статью спасибо
0
В свежей версии Citrus Engine удобное решение для различных геймпадов: wiki.starling-framework.org/citrus/input#gamepad
Проблема была, насколько я знаю, в различии XBox-геймпадов от других – смещение некоторых кнопок.

Кстати, китайские геймпады будут работать? У Карлова была как-то статья, что на старте этой фишки работали только геймпады от Microsoft.
0
В документации (http://help.adobe.com/ru_RU/FlashPlatform/reference/actionscript/3/flash/ui/GameInputControl.html) везде маркировка AIR. Документация устаревшая или что?
0
А вот до сих пор интерес разбирает. Дело в том, что сам я не поклонник консолей (редко-редко где-то в гостях не больше 5 минут поиграю и забываю, своих нет и не хочется), но на писюке вообще не сталкивался, чтобы на писе играли во что-то с контроллера, кроме случаев если это симулятор (тогда используется нормальный палочный джой, а не эта фигулька с кнопками :)) и кроме случая, если кто-то пытается играть в эмулятор прставки и для полного погружения подключает геймпад (помню времена, когда геймпады от (вроде) пс1 через LPT на соплях припаивали).
В общем, насколько распространены геймпады у PC-игроков? А то у меня сомнения, стоит ли вообще дрыгаться по поводу контроллеров в обычном флэше.
  • ADF
  • ADF
0
Я покупал сыну джойстик для PC, но он так и не прижился. Всё-таки флешек не так много, где удобно только джойстиком играть. Разве что некоторые платформеры.

Игры со Стима сейчас тоже многие заточены именно под использование мыши с клавиатурой. Пытался настроить для пары игр, но там фигурировал XBox'овский джойстик. Мой обычный китайский SpeedLink не пошёл. Хотя может быть можно как-то через Joy2Key переназначить…

А на эмуляторах да, отлично. Иногда сам поигрываю в Денди )
0
Короче, к обычной флешке контроллер имеет смысл только как опцию прикручивать.

Идея делать на эйре флайтсим для десктопа, играющий строго с палочного джоя с офигенной супер-пупер современной графикой — восхитительна в своей странности :)
0
Я играю на ПК только в игры с поддержкой геймпадов. За редким-редким исключением. Консоль не хочу, потому что к ней нужен телик и диски и ваще непривычно. А так подключил геймпад к своему 13' макбуку — почти хендхелд-консоль. (:
0
У меня было два хороших геймпада, достаточно регулярно играл во всякие аркадки и файтинги, типа, Super Meat Boy, потом отвёз их родственникам и они с удовольствием на них в футбол гоняют.
Сейчас хочу себе новый, жду Steam Controller.
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.