Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Загрузка изображений на этапе компиляции и дальнейшее использование (http://www.flasher.ru/forum/showthread.php?t=151725)

bifidokk 04.03.2011 13:56

Загрузка изображений на этапе компиляции и дальнейшее использование
 
Понадобилось загрузить 30-40 изображений. Все они имеют имена: 1.gif, 2.gif итд.
закидываю их во флеш:

Код AS3:

[Embed(source="/images/damage_digits/1.gif")] var damageDigit1:Class;

и т.д. все 30

далее есть метод, который должен обратиться к нужно картинке по параметру, вытащить ее и возвратить вызывающему.

Код AS3:

private function loadDamageDigit(damage:int):Bitmap{
          var imgLoad:Class=getDefinitionByName("damageDigit" + damage.toString())    as Class;
          damageDigits[damage.toString()] = new imgLoad();
          return damageDigits[damage.toString()];

вроде все должно работать, но компилятор выдает ошибку и говорит, что damageDigit1 не определена.
как решить проблему?

Wolsh 04.03.2011 15:37

Сложите классы в массив, все станет проще.

ps_spectre 04.03.2011 15:48

Предлагаю рассмотреть такой вариант:
something.Embeds.as
Код AS3:

package something
{
        public class Embeds
        {
                [Embed(source="../assets/SomeImage.png")]
                public var Image1:Class;
 
                [Embed(source="../assets/SomeImage2.png")]
                public var Image2:Class;
 
                public function Embeds() {}
        }
}

Tests.as
Код AS3:

package
{
        import flash.display.Sprite;       
 
        import something.Embeds;
 
        public class Tests extends Sprite
        {
                public function Tests()
                {
                        var e:Embeds = new Embeds();
 
                        addChild(new e["Image1"]);
                        addChild(new e["Image2"]);                       
                }
        }
}


Второй вариант, требует понимание как примерно работает mxmlc.
Код AS3:

package something
{
        public class Embeds
        {
                [Embed(source="../assets/SomeImage.png")]
                public static var Image1:Class;
 
                [Embed(source="../assets/SomeImage2.png")]
                public static var Image2:Class;
 
                public function Embeds() {}
        }
}

(для невнимательных: переменные static)
Код AS3:

package
{
        import flash.display.Sprite;
        import flash.utils.getDefinitionByName;
 
        import something.Embeds;
 
        public class Tests extends Sprite
        {
                public function Tests()
                {
                        var Img1:Class = getDefinitionByName("something.Embeds_Image1") as Class;
                        var Emb:Class = getDefinitionByName("something.Embeds") as Class;
                        addChild(new Emb["Image2"]);
                        addChild(new Img1());
                }
        }
}

но обязательно надо указать компилятору явно включить класс Embeds
Код:

-includes something.Embeds

something.Embeds_Image1
это появилось при компиляции. Детальней в блоге я писал. (тыц)

bifidokk 04.03.2011 15:52

спасибо, буду пробовать)


Часовой пояс GMT +4, время: 23:32.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.