Собственные расширения Adobe AIR

У меня проблема с собственными расширениями AIR. Для моей бакалаврской работы мне нужно создать многопользовательскую игру на планшетах, где игроки общаются через Bluetooth. Мне нужно реализовать свою игру с помощью AIR, потому что она должна работать на всех планшетах (IPad, планшеты Samsung и т. д.). Я должен использовать собственное расширение AIR, поскольку у ActionScript нет Bluetooth API.

У меня есть несколько вопросов по моей теме:

  1. Правда ли, что мне нужно реализовать собственный код для моего расширения на C? Я читал, что собственный код Java работает только для Android.

  2. Для собственного расширения мне нужен собственный код, библиотека ActionScript, которая действует как интерфейс, это ясно. Но я не знаю, зачем мне нужен проект Flex для создания собственного расширения AIR? Я просто хочу вызвать нативные методы из своей игры. Я надеюсь, что кто-нибудь может объяснить это мне.

Спасибо за помощь мне.


person Michael Lang    schedule 16.10.2013    source источник


Ответы (2)


  1. Вам нужно написать собственный код для каждой отдельной платформы. Поэтому вам нужно будет писать код как на Java (Android), так и на Objective-C (iOS). Расширение — не что иное, как мост к нативному коду.
  2. Вам не нужен Flex для использования собственного расширения. Собственное расширение должно быть полностью написано на ActionScript, а собственная часть расширения должна быть написана на родном языке (Java, Objective-C или C++, в зависимости от платформы).

Вам следует ознакомиться с ресурсами, которые Adobe предоставила по этому вопросу. ANE — не самая документированная функция в мире, но есть много ресурсов, доступных для начала. Кроме того, уже есть общедоступные ANE, которые позволяют поддерживать Bluetooth. Я никогда не тестировал их, поэтому не могу ручаться за их качество и эффективность, но если вы можете использовать сторонние библиотеки, возможно, стоит на них взглянуть.

http://www.adobe.com/devnet/air/native-extensions-for-air.html http://help.adobe.com/en_US/air/extensions/air_extensions.pdf http://help.adobe.com/en_US/air/build/WS597e5dadb9cc1e0253f7d2fc1311b491071-8000.html http://www.adobe.com/devnet/air/articles/ane-android-devices.html http://www.adobe.com/devnet/air/articles/building-ane-ios-android-pt1.html

person Josh    schedule 16.10.2013
comment
Вы можете использовать сторонние библиотеки, но есть хаки/обходные пути связывания, которые вы должны использовать, чтобы заставить их правильно связываться в ANE. - person Nabren; 16.10.2013
comment
@Nabren Перечитай сказанное. Я ничего не говорил об использовании сторонних библиотек в расширении. Я просто спросил, может ли спрашивающий использовать их в своем школьном проекте. Если он может, он должен использовать уже построенный ANE, чтобы ему не пришлось создавать его самому. - person Josh; 16.10.2013
comment
О, прошу прощения. Я подумал об этом утверждении: я никогда не тестировал их, поэтому не могу ручаться за качество их эффективности, но если вы можете использовать сторонние библиотеки, возможно, стоит на них взглянуть. имел в виду использование сторонних библиотек в ANE, я просто пытался уточнить. Еще раз, мои извинения. - person Nabren; 16.10.2013

Мы, команда MyFlashLab, написали туториал, который может быть вам полезен, вот ссылка http://www.myflashlabs.com/build-multiplayer-games-in-adobe-air-using-bluetooth-ane/ и вот некоторые ключевые моменты для инициализации и добавление слушателей к Bluetooth ANE.

var _ex:Bluetooth = new Bluetooth();

// dispatches the state of Bluetooth whenever it changes (you will know if it's on or off)
_ex.addEventListener(BluetoothEvent.BLUETOOTH_STATE , bluetoothState);

// dispatches the communication state of two devices
_ex.addEventListener(BluetoothEvent.COMMUNICATION_STATUS , communication);

// dispatches the connection state of two devices. Are the devices connected or not.
_ex.addEventListener(BluetoothEvent.CONNECTION , connection);

// dispatches the 'enable' and 'visibility' dialog states
_ex.addEventListener(BluetoothEvent.DIALOG_STATUS , dialog);

// dispatches the device discovering state
_ex.addEventListener(BluetoothEvent.DISCOVERING_STATUS , discovering);

// dispatches when new devices are discovered
_ex.addEventListener(BluetoothEvent.NEW_DISCOVERD , newDiscoverd);

// dispatches whenever a new String message is received from the other device
_ex.addEventListener(BluetoothEvent.READ_MESSAGE , readMessage);

// dispatches to notify you about the scan mode of the device
_ex.addEventListener(BluetoothEvent.SCAN_MODE , scanMode);

// dispatches when a String message is sent to the other device
_ex.addEventListener(BluetoothEvent.SEND_MESSAGE , sendMessage);

// check if Bluetooth hardware is on or off
if (_ex.isEnable)
{
    // make Bluetooth visible to others infinitely 
    // or set a duration which must be between 0 and 3600
    _ex.visible(0);

    // start the communication service for Bluetooth
    _ex.initCommunicationService();
}
else
{
    // if it's not on, just turn it on
    _ex.enable();
}

// listen to know when the Bluetooth is turning on
function bluetoothState(e:BluetoothEvent):void
{
    trace("state >> " + e.param);

    if (e.param == "bluetoothOn")
    {
        // as soon as it's on, make it visible and start the communication service
        _ex.visible(0);
        _ex.initCommunicationService();
    }
}
person MyFlashLabs    schedule 07.12.2015