Вставить около 90 изображений во флэш - PullRequest
1 голос
/ 06 августа 2010

У меня есть около 90 изображений, которые мне нужно встроить в сценарий действия (версия 3).Единственный способ выяснить это - набрать следующий код 90 раз для каждого изображения.

[Embed(source="images/door0091.bmp")]
    private var Door1:Class;
    var door1:Bitmap = new Door1();

Очень больно писать его столько раз.Я хотел бы знать, есть ли способ сделать это программно?

Я не могу использовать метод загрузчика, так как изображения должны присутствовать вместе с файлом SWF.Я хочу, чтобы SWF был независимым после компиляции.Пожалуйста, помогите !!!

Заранее спасибо.

Ответы [ 3 ]

2 голосов
/ 08 августа 2010

Если вы работаете в Windows, вы можете использовать пакетный скрипт, чтобы сгенерировать файл, содержащий код для встраивания (или сгенерировать его часть и вручную вставить его в другой файл).для простых задач это почти годно к употреблению.Скопируйте следующий код в новый файл и назовите его как хотите (используйте .bat в качестве его расширения).Поместите этот скрипт в папку с изображениями и запустите его (дважды щелкните по нему).Он должен создать файл images.as с сгенерированным кодом ActionScript для каждого изображения, которое заканчивается на .jpg (вы можете изменить скрипт для использования других расширений).

@echo off
set out_file=images.as
echo     // script generated file > %out_file%
for /f %%a IN ('dir /b *.jpg') do (
    echo     [Embed^(source="images/%%a"^)] >> %out_file%
    echo     private var %%~na_class:Class; >> %out_file%
    echo     private var %%~na:Bitmap = new %%~na_class^(^); >> %out_file%
)

Это довольно просто и не будет работатьхорошо, если имя ваших файлов содержит «странные» символы, такие как пробел.Но в противном случае, я думаю, это может сделать тяжелую работу.

1 голос
/ 06 августа 2010

Есть способ - если вы хотите использовать ZIP-файл. Вы можете встроить весь zip-файл, содержащий все изображения, в ваше приложение. Затем откройте zip-файл во время выполнения, чтобы получить нужные вам изображения. Вы можете написать свой собственный zip-утилиту или, как показано ниже, просто использовать бесплатный от nochump:

Когда вы вызываете функцию zip.getInput (), именно тогда извлекается содержимое этой отдельной записи zip, поэтому используйте этот вызов, только когда вы готовы извлечь конкретный файл.

Вот целое демонстрационное приложение:

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" creationComplete="init()">
    <mx:Script>
        <![CDATA[
            import nochump.util.zip.ZipEntry;
            import nochump.util.zip.ZipFile;

            [Embed(source="images.zip",mimeType="application/octet-stream")]
            private var imagesZip:Class;

            protected function init():void
            {
                var theImages:Object = new imagesZip();

                var zip:ZipFile = new ZipFile(theImages as IDataInput);
                for each(var entry:ZipEntry in zip.entries)
                {
                    var fileName:String = entry.name.toLowerCase();
                    if(fileName == "image2.jpg")
                    {
                        var loader:Loader = new Loader();
                        this.rawChildren.addChild(loader);
                        loader.loadBytes(zip.getInput(entry));
                    }
                }
            }
        ]]>
    </mx:Script>
</mx:Application>

Надеюсь, это вам поможет!

0 голосов
/ 08 августа 2010

Встраивание - это то, что делается за Время компиляции , вы не можете сделать это программно.

единственное, что вы можете сделать, это использовать путь и сгенерировать его вмассив.или если вы согласны с встраиванием, я согласен с трюком Хуана Пабло Клифано или, как правило, с помощью генератора кода, такого как Code Smith и т. д.

...