Упаковка приложений Flash Builder для Android / IOS - каталог ресурсов Q - PullRequest
0 голосов
/ 07 марта 2012

Первый таймер здесь.

Я пишу приложение, предназначенное для развертывания на мобильных платформах (iOS и Android). При этом используется целевая сборка Android Flash Builder 4.6 - в каталоге / assets / находится подкаталог, содержащий произвольное количество файлов .png.

Я кодирую загрузчик каталога следующим образом:

public function LoadFromDirectory(directoryName:String, store:Vector.<BitmapData>):Boolean
{
    //Changed here: this should work on both the development environment, AND the device.  
    //Guess what...

    imageDirectory = File.applicationDirectory.resolvePath("assets/" +directoryString);

    //This is triggering on Android. Doesn't do so in ADL. Not tested on iOS yet, 
    //but come on, if it doesn't work here, it won't work on iOS...

    if (!imageDirectory.isDirectory) 
    { 
        trace("Directory not found:" +imageDirectory.url);
        return false;
    }

    /*Snip loop through the contents of this directory, loading anything that is
    a PNG and storing the bitmapData of all loaded PNGs into the vector, one by one*/

   /*This of course, ALL works in ADL*/
}

Это работает в виртуальных воздушных устройствах, но не работает на мобильных устройствах или при развертывании. Вот где я застрял.

Изменить: Хорошо, я пошел и сократил код файла до одной строки. Я должен использовать resolPath для кросс-платформенной совместимости; Кроме того, упаковщик из Flash Builder не видит подкаталог «assets \», если я не помещаю его в «bin-debug \», потому что именно туда скомпилирован SWF.

Все еще не решает проблему, хотя - по крайней мере, для сборки Android, я могу увидеть папку активов в apk (переименовав ее в .zip и распаковав все), и она правильная (наряду с XML-файлы приложения и SWF).

apk устанавливается и запускается, но isDirectory по-прежнему возвращает false, когда я отлаживаю на самом устройстве (опять же, не на ADL - только на устройстве). Комментирование всего этого сегмента if ... приведет к сбою приложения, потому что он не может найти каталог assets \.

Я так близко к решению проблемы; был бы признателен, если бы кто-то помог мне с последним шагом, потому что это требует кровавого возраста, чтобы выяснить

PS: Я хотел бы просто вставить изображения в FLA или SWC, что я делал раньше, и это работает. К сожалению, количество и название изображений в этом конкретном каталоге произвольно ; единственное, в чем я уверен - это поддерживаемые расширения.

PPS: использование этой функции: LoadImagesFromDirectory ("imagesdirectory"), которая должна выглядеть в app: / assets / imagesdirectory на любой платформе. Логическое возвращение предназначено для отладки (возвращает false, если каталог с таким именем не существует.)

1 Ответ

3 голосов
/ 09 марта 2012

... хорошо, я не знаю, документировано ли это, но, видимо, я вызывал LoadImagesFromDirectory для имени каталога, которое является всеми заглавными буквами, потому что на ПК целевой каталог также был во всех заглавных буквах.

Таким образом, в тестовой платформе каталог был преобразован в "app: / assets / IMAGESDIRECTORY". Но при экспорте устройство показало, что каталог вместо этого разрешен в «app: / assets / Imagesdirectory», поэтому вызов IMAGESDIRECTORY недействителен.

Как ни странно, поиск "Imagesdirectory" работает как для ПК, так и для устройства без изменения макета папки и имен.

Похоже, я был Gotcha'd - не забудьте никогда не давать имена каталогов во всех заглавных буквах ...

...