Search code examples
apache-flexflash-cs5flashdevelop

How can I import symbols from Flash CS in MXML?


I'm writing a mobile app in Flex with FlashDevelop and using Flash CS6 to create the visual assets. I created a symbol in Flash CS6 and exported it as AC3 into an SWC, which I imported into my FlashDevelop project. I then created a class for it, like so:

package com 
{
import flash.display.Sprite;

  public class volmeter_class extends Sprite
  {
    private var design:volmeter;

    public function volmeter_class()
    {
        trace("I'm a MySymbol instance called", name);
        design = new volmeter();
        addChild(design);
    }     
  }  
}

I'm now seeking to display the symbol I created on a page of my app. To do this, I suspect I am expected to somehow import it in my MXML, but I have no idea how to do so. Can someone give me a few tips on how to get started doing this?


Solution

  • In Flash Pro, assure AS Linkage is specified for the symbol.

    Flash symbol

    Using the published SWC from Flash Pro in the ActionScript Build Path of a project, the symbol may be instantiated by AS Linkage. Or, symbols may be embedded from the published SWF of Flash Pro.

    Pure ActionScript example:

    package
    {
        import flash.display.Sprite;
    
        public class AppExample extends Sprite
        {
            public function AppExample()
            {
                var exampleSymbol:ExampleSymbol = new ExampleSymbol();
                addChild(exampleSymbol);
            }
        }
    }
    

    Flex MXML example:

    <?xml version="1.0" encoding="utf-8"?>
    <s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
                   xmlns:s="library://ns.adobe.com/flex/spark"
                   creationComplete="creationCompleteHandler(event)">
    
        <fx:Script>
            <![CDATA[
                import mx.events.FlexEvent;
    
                protected function creationCompleteHandler(event:FlexEvent):void
                {
                    var exampleSymbol:ExampleSymbol = new ExampleSymbol();
                    symbol.addChild(exampleSymbol);
                }
            ]]>
        </fx:Script>
    
        <s:SpriteVisualElement id="symbol" />
    
    </s:Application>
    

    Another approach would be to embed the symbol by linking a SWF from Flash Pro.

    Flex MXML embed example:

    <?xml version="1.0" encoding="utf-8"?>
    <s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
                   xmlns:s="library://ns.adobe.com/flex/spark">
    
        <fx:Script>
            <![CDATA[
                [Embed('assets/library.swf', symbol = 'ExampleSymbol')]
                [Bindable]
                public static var ExampleSymbolClass:Class;
            ]]>
        </fx:Script>
    
        <s:Image source="{ExampleSymbolClass}" />
    
    </s:Application>