2012-03-07 3 views
0

Первый таймер здесь.Упаковка Flash Builder Приложения для Android/IOS - каталог активов Q

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

I код каталога Загрузчик как таковой:

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*/ 
} 

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

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

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

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

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

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

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

ответ

3

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

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

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

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

+0

это помогло мне :) – ThanksBro

Смежные вопросы