Невозможно правильно масштабировать холст на iOS для контроллера AirConsole, созданного в Construct 2.

Я экспериментировал с созданием контроллеров AirConsole с помощью Construct 2. Construct 2 поставляется с несколькими режимами масштабирования, чтобы гарантировать желаемое масштабирование холста. Я протестировал все возможные комбинации и обнаружил, что симулятор (работающий в Safari, Edge, Chrome и Firefox) работает правильно, Nexus 5 работает правильно, но iPhone 7 Plus и iPad (работающее с приложением iPhone AirConsole) не работают. подчиняться масштабированию, которое я установил в Construct 2.

При разрешении 1280x720 это означает, что часть контроллера всегда находится за пределами экрана. Я использовал плагины «AirConsole» и «AirConsoleController» на стороне экрана, и у обоих одна и та же проблема. Когда я удаляю оба плагина из своего проекта Construct 2 и загружаю страницу с помощью airconsole.com/#[SERVER_URL]/pong, проблема масштабирования исчезает, но я теряю возможность вызывать методы API AirConsole (установить альбомную ориентацию, рукопожатие, обмен сообщениями и др.).

Я полностью понимаю, что это, вероятно, не входит в список приоритетов, поскольку команда AirConsole проделала большую работу по сборке генератора контроллера, но можно ли рассмотреть эту проблему на устройствах iOS? Что-то происходит на стороне AirConsole, что перезаписывает правила масштабирования экрана Construct 2 для контроллеров iOS?

Одна из целей нашей команды — создать мини-игру с контроллером, в которую пользователь мог бы играть на своем устройстве, в то время как основная игра шла на screen.html. Было бы намного проще сделать это в Construct 2, чем кодировать вручную.

Редактировать:

Я повторил быстрое тестирование примера Pong, используя в качестве контроллера экран резервуара Phaser.io вместо кнопок pong. В этом тесте я ожидаю увидеть загрузку экрана резервуара на контроллер. Это то, что я вижу в симуляторе и на своем Nexus 5. На моем iPhone половина экрана резервуара находится за краем телефона.

Поскольку подобное поведение наблюдается как в проектах Construct 2, так и в проектах Phaser.io, у меня есть подозрение, что проблема может возникать всякий раз, когда элемент холста размещается на экранах iOS для контроллеров AirConsole.


person CBruce    schedule 29.01.2017    source источник
comment
Я знаю, что в AirConsole довольно много правил, чтобы контроллер не прокручивался, не масштабировался, не перемещался и т. д. и т. д. Я могу показаться повторяющимся, я знаю, но пробовали ли вы использовать в IOS новый генератор контроллера? developers.airconsole.com/tools/airconsole-controller- генератор/   -  person Psychokiller1888    schedule 30.01.2017
comment
@Psychokiller1888, спасибо за ссылку на новую версию генератора контроллеров. Он НАМНОГО лучше старого! Вы использовали его? Я предполагаю, что для создания разных/крупных кнопок нужно просто поменять местами изображения и изменить размеры кнопок в CSS?   -  person CBruce    schedule 30.01.2017
comment
Можете ли вы также попытаться установить для setup_document значение false в параметрах AirConsole? Например: новая AirConsole ({ setup_document: false }); на контроллере   -  person Zeus    schedule 31.01.2017
comment
Да, с новым генератором контроллеров стиль стал намного проще. Каждый элемент теперь имеет класс id или css, и вы можете написать свой собственный css или перезаписать css.   -  person Zeus    schedule 31.01.2017
comment
@Zeus, спасибо за предложение! Я попробовал setup_document:false, но это тоже не сработало.   -  person CBruce    schedule 31.01.2017
comment
@Zeus Как я уже сообщал по почте, новый генератор очень классный. Но вам, ребята, не хватает списка используемых классов css для отображения пользователю, создающему свой контроллер. Как нам создать круглую кнопку, если мы не знаем классы css?   -  person Psychokiller1888    schedule 31.01.2017
comment
хорошо - ваш код где-то в сети? @Psychokiller1888: это правда, хотя список стилей, которые мы предлагаем, очень мал. Мы скорее хотим поощрять разработчиков создавать свои собственные стили. Вот в основном документ: github.com/AirConsole/airconsole-controls   -  person Zeus    schedule 31.01.2017
comment
Можете ли вы попробовать запустить его в контексте, отличном от AirConsole? Просто файл controller.html с игрой, а затем загрузить его со смартфона? Также может быть проблема с рендерингом iPhone7.   -  person Zeus    schedule 31.01.2017
comment
@ Зевс, не повезло. Если я запускаю его без AirConsole, он отображается нормально. Если я запускаю его внутри AirConsole, но не создаю новый объект airconsole, он отображается нормально. Как только я создаю новый объект airconsole, возникает проблема. Вот ссылка: [ссылка]https://www.airconsole.com/simulator/#https://dl.dropboxusercontent.com/u/55106174/pong/   -  person CBruce    schedule 31.01.2017
comment
Хм, хорошо, потому что setup_document — это единственное, что изменяет стиль документа. Кстати, у вас есть airconsole-1.6.0.js, включенный дважды. Можете ли вы загрузить версию, которая работает? Кажется, что ширина контейнера холста установлена ​​​​на 1280 пикселей, а холст - на 2560 пикселей. Каким-то образом он не изменяет размер, и родительский iframe также становится шире.   -  person Zeus    schedule 31.01.2017
comment
Странный. Эта версия должна работать нормально — просто отключите второй контроллер и вместо этого используйте iPhone в качестве контроллера.   -  person CBruce    schedule 31.01.2017
comment
@ Psychokiller1888, в соответствии с вашим предложением выше, я играл с генератором контроллеров V2, используя официальный плагин AirConsole Construct2 версии 1.4.8.1, и не смог получать сообщения в C2. OnDeviceJoin работает нормально, но я не могу заставить OnMessageFromAnyController срабатывать, и когда я проверяю AirConsole.Message, я ничего не вижу. Я пробовал каждый из форматов сообщений (структура данных по умолчанию, ключ-значение и строка JSON) без везения. Пример сообщения, отправленного из controller.html: {element:attackbrown,data:{pressed:true}} Есть предложения?   -  person CBruce    schedule 08.02.2017
comment
@Zeus, на форумах Construct 2 я разместил еще несколько скриншотов и фотографий, показывающих, что я вижу на Nexus 5, iPhone 7 Plus и iPad Air 2: scirra.com/forum/   -  person CBruce    schedule 08.02.2017
comment
@CBruce Для этого вам нужно использовать функции OnMessageKey, посмотрите мое руководство по выражениям.   -  person Psychokiller1888    schedule 08.02.2017
comment
Поскольку AirConsole загружает игру в iframe, похоже, в iOS есть ошибка: scirra.com/forum/ . Однако предложенное исправление не сработало. Собираюсь попробовать больше   -  person Zeus    schedule 22.02.2017


Ответы (1)


Кажется, в iOS есть ошибка с iframes.

Применение этого CSS к файлу controller.html исправило это для некоторых разработчиков:

html, body {
    height: 100%;
    overflow: hidden;
}
person Zeus    schedule 22.02.2017