Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Как осуществить доступ к контенту в "[Embed(source =" ? (http://www.flasher.ru/forum/showthread.php?t=176606)

dark256 14.03.2012 13:52

Как осуществить доступ к контенту в "[Embed(source =" ?
 
В АС3 я полный чайник, поэтому заранее прошу снисхождений :)
Итак. Работаю в FB. Есть необходимость встроить в проект звуки. Куча мелких звуков на всякие там открыть-закрыть окно и прочее.

Как я понимаю, в компиленный MAIN.SWF на выходе ФлэшБилдера можно встраивать внешние SWF.
Судя по тому, что вес MAIN увеличивается, встраивание происходит. Как-то.

Во flash IDE создаю AS3 проект, кидаю в него свои звуки, прописываю им в linkage SND1, SND2, ... SNDx

В ФБ в коде пишу:
Код AS3:

[Embed(source = "../assets/soundFork.swf", mimeType = 'application/octet-stream')]

И вот далее - как же мне теперь сделать
var snd:Sound = new ( SND1 )(); ?

То есть как зарегистрировать этот встроенный контент для доступа?

КорДум 14.03.2012 13:58

Дарк, точно по сабжу не помогу, но посоветую использовать SWC.

Aquahawk 14.03.2012 14:06

http://www.bit-101.com/blog/?p=853
Если в крадце по русски то надо сделать
Код AS3:

[Embed(source="assetname")]
 private var AssetClass:Class;

и потом
Код AS3:

new AssetClass() as ЧтоОноТамУТебя


HardCoder 14.03.2012 14:14

Цитата:

Сообщение от Aquahawk (Сообщение 1068936)
Код AS3:

[Embed(source="assetname")]
 private var AssetClass:Class;


Немного дополню:
Код AS3:

[Embed(source="library.swf", symbol="НазваниеСимволаЗвука(его linkage класса)")]
private var AssetClass:Class;

Добавлено через 1 минуту
потом:
Код AS3:

var snd:Sound = new AssetClass();


dark256 14.03.2012 14:18

Код:

[Embed(source="library.swf", symbol="НазваниеСимволаЗвука(его linkage класса)")]
Ага, а с учетом того, что "его linkage класса" там допустим 100 штук - для каждого прописать?

GBee 14.03.2012 14:23

Код AS3:

package
{
        import flash.display.Loader;
        import flash.display.Sprite;
        import flash.events.Event;
        import flash.media.Sound;
        import flash.system.ApplicationDomain;
        import flash.utils.ByteArray;
 
        public class TestSound extends Sprite
        {
                [Embed(source = "../assets/soundFork.swf", mimeType = 'application/octet-stream')]
                private var _soundFork:Class;
                private var _appDomain:ApplicationDomain;
                public function TestSound()
                {
                        super();
                        var ba:ByteArray = new _soundFork();
                        var loader:Loader = new Loader();
                        loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onLoaded);
                        loader.loadBytes(ba);
                }
 
                private function onLoaded(event:Event):void
                {
                        var loader:Loader = event.currentTarget.loader;
                        _appDomain = loader.contentLoaderInfo.applicationDomain;
                        getSound("SND1").play();
                        getSound("SND2").play();
                }
 
                private function getSound(name:String):Sound
                {
                        if(_appDomain.hasDefinition(name))
                        {
                                var sc:Class = _appDomain.getDefinition(name) as Class;
                                var s:Sound = new sc();
                                return s;
                        }
                        return null;
                }
        }
}


Aquahawk 14.03.2012 14:26

Цитата:

Ага, а с учетом того, что "его linkage класса" там допустим 100 штук - для каждого прописать?
зачем? я так понимаю можно всю swf заэмбеддить, а потом applicationDomain.getDefinition.
Ещё можно экспортнуть эту же swf в FlashIde как swc, и подключить к проекту её как external, тогда будет и статическая типизация и всё хорошо. ТОлько смысла особого эмбеддить swf и использовать внешнюю swc нету. Я так делал когда в рантайме подгружал swf и классы которые в ней есть объявлялись через external swc.

dark256 14.03.2012 17:12

ОГРОМНЕЙШЕЕ ВСЕМ спасибо!


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

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