Я отправляю этот вопрос, потому что у меня небольшая проблема с API GameInput в adobe AIR desktop app. Я тестировал API в тестовом приложении, и он работал отлично. Однако, когда я добавил его в свое настоящее приложение (игру), он больше не запускается при запуске.GameInput.DEVICE_ADDED не запускается при запуске приложения
Все остальное работает, и если я отсоединяю/снова подключаю контроллер, все работает нормально. Однако начальный триггер функции обратного вызова больше не работает.
Любая идея, почему? Вот что я делаю:
if (GameInput.isSupported) //GAMEPADS SUPPORT
{
gameInput = new GameInput();
gameInput.addEventListener(GameInputEvent.DEVICE_ADDED, controllerAdded);
gameInput.addEventListener(GameInputEvent.DEVICE_REMOVED, controllerRemoved);
gameInput.addEventListener(GameInputEvent.DEVICE_UNUSABLE, controllerProblem);
} //GAMEPAD SUPPORT
public function controllerAdded(e:GameInputEvent):void
{
var vec:Vector.<String> = new Vector.<String>();
gamepad = GameInput.getDeviceAt(0);
vec[0] = gamepad.getControlAt(0).id;
gamepad.enabled = true;
gamepad.sampleInterval = 10;
gamepad.startCachingSamples(5, vec); // numSamples = 5
for (var i:int = 0; i < gamepad.numControls; ++i)
gamepad.getControlAt(i).addEventListener(Event.CHANGE, handleChangeEvent);
}
Я предполагаю, что это может быть проблемой фокусировки или что-то связаны, но я действительно не понимаю, почему это происходит. Мое приложение выглядит следующим образом: Ядро (класс под названием от ФНБ и управляет всем приложение)
Экраны (разные классы, наследуемые мувик, но имеют логику внутри, такие как игры, optionscreen и т.д.)
Инициализация Gameinput выполняется в ядре после инстанцирования объекта (с использованием Event.ADDED_TO_STAGE).
Нет, это не работает. Если устройство было подключено до запуска и не доступно сразу, событие DEVICE_ADDED будет отправлено, когда устройство станет доступным для использования. Как я уже сказал, у меня не было проблем с другим приложением, в котором я тестировал это. Моя проблема исходит из чего-то другого, кроме самого API, но я не вижу, что это такое. Я, очевидно, не могу опубликовать весь код для приложения здесь, так как у меня есть более 100 файлов, а некоторые из них - 1000 строк. XD Что я хотя, был тест numDevices, и это 0 в обоих приложениях. На «рабочий» он отправляет события для уже подключенных контроллеров. –