Как я могу узнать, какие символы доступны в .swf? - PullRequest
0 голосов
/ 11 июля 2011

Я ничего не знаю о Flash Professional, но мой друг дал мне файл .swf, который предположительно содержит графику, которую он хочет импортировать в программу Flex - о которой я знаю немного.

У меня есть .swf, но я понятия не имею, что поставить для «символа». Кажется, мой друг не знает, о чем я говорю. Как я могу определить имя символа для добавления во 2-й параметр встраивания?

[Embed(source='SomeSwf.swf', symbol='WhatGoesHere??')]

Есть ли какой-нибудь способ просмотреть .swf или какой-то способ просто импортировать все это и пройтись по символам в ActionScript?

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

Ответы [ 4 ]

3 голосов
/ 11 июля 2011

Вы должны указать имя связывания символа как 2-й параметр.Чтобы установить имя связывания, ваш друг должен выбрать символ на панели «Библиотека», открыть его свойства и установить флажок «Экспорт для сценария действий», указать имя класса (при необходимости):

Имя класса, указанное на этой панели.это второй параметр, который вы должны использовать для встраивания этого объекта.После публикации SWF вы сможете создать экземпляр этого символьного объекта следующим образом:

public class EmbedTest extends Sprite
{
    [Embed (source = "square.swf", symbol="Square")]
    private var swfAsset:Class;

    public function EmbedTest():void    
    {
        var embeddedSwf:*=new swfAsset();
        addChild(DisplayObject(embeddedSwf));
    }
}

UPD1:

Есть ли способ просмотреть.swf, или какой-то способ просто импортировать все это и пройтись по символам в ActionScript?

Вы можете попробовать просмотреть все встроенные символы встроенного SWF следующим образом:

package
{
    import flash.display.DisplayObject;
    import flash.display.Loader;
    import flash.display.LoaderInfo;
    import flash.display.MovieClip;
    import flash.display.Sprite;
    import flash.events.Event;
    import flash.utils.getDefinitionByName;

    [SWF(backgroundColor="#FFFFFF", width="1000", height="400")]
    public class EmbedTest extends Sprite
    {
        [Embed (source = "yourSwf.swf")]
        private var swfAsset:Class; 
        public function EmbedTest()
        {
            super();    
            var embeddedClip:Sprite=new swfAsset() as Sprite;
            var loader:Loader=Loader(embeddedClip.getChildAt(0));
            loader.contentLoaderInfo.addEventListener(Event.COMPLETE, loadCompleteFunction);
        }

        private function loadCompleteFunction(e:Event):void {
            var loaderInfo:LoaderInfo=e.target as LoaderInfo;
            var content:MovieClip=loaderInfo.loader.content as MovieClip;
            for (var i:int=0; i<content.numChildren; i++) {
                var embeddedMovieClipChild:*=content.getChildAt(i);
                trace (embeddedMovieClipChild.name, embeddedMovieClipChild);
            }
        }
    }
}

UPD2: Также рассмотрите возможность добавления ресурсов в ваш проект в виде SWC-файлов.http://blog.geewa.com/post/2009/03/16/Integrating-Flash-Professional-and-Flex-Builder-Using-SWC.aspx

0 голосов
/ 11 июля 2011

На самом деле существует способ динамически загружать список доступных определений.

Существует класс SWFExplorer, который может дать вам возможность сделать это.

Здесь все объясняется: http://www.bytearray.org/?p=175

Вам нужно создать проект, создать класс, называемый, например, «SWFReader», который отслеживает список имен, которые вам нужны.

0 голосов
/ 11 июля 2011

Вы можете попробовать просмотреть swf во FlashDevelop, который имеет функцию исследования SWF . Если вы используете боковую панель «Проект» в FlashDevelop для навигации по swf, вы можете открыть ее, чтобы увидеть названия классов, символов и шрифтов внутри нее. Но символы, которые вы видите, будут только теми, у которых уже есть имя Символа; если бы оно было неназванным, оно могло бы получить забавное имя, например instance2143, которое не будет указано в списке.

0 голосов
/ 11 июля 2011

Из-за способа, которым flex встраивает эти данные, вам нужно знать имена символов при их внедрении. Для этого вам понадобится файл .fla.

Если у вас есть только swf, вы можете попытаться декомпилировать его, чтобы получить имена - но они должны быть связаны для экспорта (поэтому они могут даже не иметь их!). В этом случае вы, вероятно, захотите вставить его во флэш-память, а затем назовите их и пометите для экспорта самостоятельно в другом SWF-файле.

нервотрепка. Лучше всего, чтобы ваш друг, который дал вам swf, дал вам имена активов или файл .fla.

=)

...