Как стать автором
Поиск
Написать публикацию
Обновить

Комментарии 18

Приятно, что кто-то помимо меня еще пишет на ActionScript/Flash :)
А у вас есть какие-то игрушки на as3 + starling? :)
У меня их много, но они все в «прототипном» виде. Т.е. чисто обкатка игровых механик, в виде далеком от релизного. Вот, например, наиболее презентабельная: elegar.ru/planet/

До аппстора я пока добрался только с одной игрой, но она пока недоступна, поскольку баг с адобским геймцентр.ане я обнаружил на следующий день после того как игра прошла ревью, эппловцы его пропустили:) Но я решил не релизиться в таком виде и теперь жду ревью апдейта.
Коллизия сделана по алгоритму пересечения кругов?

Кстати, попробуйте сделать сзади паралакс эффект ибо космос у вас красивый, а паралакс добавил бы динамику.
Кругов конечно, чего же еще?))

А как сюда можно добавить параллакс? Этот эффект появляется при движении камеры, а тут она статична.
> Кругов конечно, чего же еще?))
ну можно было бы по квадрату Rectange.intersect ну и конечно же тяжелый вариант попиксельно

>А как сюда можно добавить параллакс? Этот эффект появляется при движении камеры, а тут она статична.
Ну все объекты в космосе двигаются… ваша планета тоже может двигаться :)
Нас трое.
Или четверо.
В тот момент когда мы начинаем использовать нативные расширения наш код перестает быть кроссплатформенным.

Это не совсем так, ane может содержать бинарники для нескольких платформ (винда, мак, андроид, иос).
Может содержать, а может и нет, так что в общем случае — перестает:) К тому же, в любом случае, если это air application, то оно уже не будет запускаться в обычном swf-плеере… Блин, а вот про это забыл в статье написать, что немобильный проект — он еще еще и не AIR-app
Если разместить код по модулям, и для AIR специфики (например, сохранение в бд) писать в одном модуле, а для веб специфики его (например, сохранение в localStorage) писать в другом модуле с общим интерфейсом то можно делать сборки и для мобильный и для веб версий и для десктоп.
Не понял. Что такое модули?)
Но вообще я вроде как про что-то похожее в статье и написал: код имеющий отношение к эйру — в одних классах, не имеющий — в других. А чтобы по-быстрому между ними переключаться — разные файлы проектов со специфичными настройками и с разными документ-классами, которые как раз импортят специфичные классы.
К примеру нужны 2 версии ПО, одна для веб, другая для AIR, в обоих версиях нужно что то сохранять, в AIR можно в базу, в web в LocalStorage.
Делается swc модуль в которому описывается UI, логика и универсальный интерфейсы доступа к данным (API), делается swc с реализацией интерфейса в котором есть доступ к функциям AIR, в том числе и Native Extension (бд например) + делается swc в котором реализуется универсальный интерфейс для доступа к LocalStorage. Затем делаются 2 модуля swf, первый для мобильной версии (AIR) к которому подключается модуль с UI и логикой работы + модуль swc для доступа к бд, второй для веб версии, к нему подключается модуль UI и логикой и swc с доступом к LocalStorage. В итоге результат == UI и вся логика в одном месте (swc модуль), для разных платформ (как пример) реализация доступа к данным в разных модулях и 2 так сказать exe swf в котором несколько строк кода для соединения конкретного модуля с общим UI модулем под конкретную платформу.
Ну адоби там писали о методе isSupported, надо проверять доступен ли функционал, остальное на уровне билдов и модулей (я пользуюсь Intellij).

Вот так используется у нас:

package com.cost.guide.util
{
    import flash.system.Capabilities;

    public function Vibrate(duration:int):void
    {
        var isDesktop:Boolean = Capabilities.os.indexOf("Windows") != -1 || Capabilities.os.indexOf("Mac OS") != -1;
        if(!isDesktop)
        {
            vibrate(duration);
        }
    }

}

import com.adobe.nativeExtensions.Vibration;

/**
 * moved to separate method to avoid class not found error in emulator
 */
function vibrate(duration:int):void
{
    if (Vibration.isSupported)
    {
        var vibration:Vibration = new Vibration();
        vibration.vibrate(duration);
    }
}
Да, но для этого надо чтоб во-первых был этот isSupported, что на практике не всегда бывает:) В GameAnalytics SDK, например, этого метода нет.
А во-вторых, чтоб так делать, надо все-таки импортировать Vibration, а он не будет компилиться, если у вас не AIR application, а swf для флеш плеера. Т.е. под виндой собираться будет, но во флеш плеере работать не будет, а мне хотелось сохранить и эту возможность.
Да, естественно, просто так не будет компилится, но во флеше хватает для этого методов :) Модули в Intellij достаточно удобно позволяют это сделать, раньше делали через подключение разных сорцов во время компиляции, можно через импорты.
НЛО прилетело и опубликовало эту надпись здесь
Попробовал. Упало на стадии упаковки со следующим текстом:
Undefined symbols for architecture armv7: "_traits:AOTBuildOutput-0000000100_33:22::CharLocation", referenced from: _AOTBuildOutput-0000000100_33:816:starling.text::BitmapFont/arrangeChars i n AOTBuildOutput-0000000100_33.o _AOTBuildOutput-0000000100_33:809:starling.text::BitmapFont in AOTBuildOut put-0000000100_33.o ld: symbol(s) not found for architecture armv7 Compilation failed while executing : ld64
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации