[Bindable]
[Embed(source="myFlash9.swf")]
private var mySwf:Class;
This creates the bindable variable "mySwf" which can be bound to the backgroundImage attribute of certain components e.g.
<mx:Canvas backgroundImage="{mySwf}"  />
However much I tried, I couldn't access the timeline of that swf as it was cast as a Class type and essentially wasn't a MovieClip. Flex only permits Class or String variables when embedding in this way.
I needed to find a way to load a swf into Flex and use it as a fully accessible MovieClip. Here's what I did:
- Create a bindable MovieClip variable
- Load in the swf using the flash.display.Loader class
- Assign the result from the Loader class to the bindable MovieClip variable
- used the Image component in Flex to add the swf to the application
Here's the complete MXML code:
<?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 flash.net.URLRequest;
   import flash.display.MovieClip;
   import flash.display.Loader;
   import flash.events.*;
     
   [Bindable]
   private var mySwf:MovieClip;
   
   private function init():void{
    var bgURL:URLRequest = new URLRequest("Test.swf");    
    var bgLoader:Loader = new Loader();  
    bgLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, completeHandler); 
    bgLoader.load(bgURL);
   }
 
         private function completeHandler(event:Event):void {
             mySwf = event.target.content as MovieClip;
             mySwf.gotoAndPlay(20); // access the timeline of the loaded swf
         }
  
  ]]>
 </mx:Script>
 
 <mx:Canvas width="856" height="527" horizontalCenter="0" verticalCenter="0"> 
  <mx:Image source="{mySwf}" />
 </mx:Canvas>
</mx:Application>
You can now directly access the timeline of the loaded swf using the "mySwf" variable.
Using the backgroundImage attribute caused errors as it expected a Class variable to be passed into it. Using Image seems to have got around this problem.
 
 
5 comments:
is it possible with flash 8 swf?
Looks like you lost your embedding capability for the SWF. I have found that you can not touch the timeline of a loaded SWF when it is embedded. Have you found different results?
Thanks,
Jason
I make loading swf by this method. And load swf from another domain. But nothing happend. Flash movie from domain not loading.
Debugger sais 0 bytes loaded.
Can I make swf movie embeded and provide some parameters(FlashVars) to this movie. I haven't sources and can't add functions to this Movie.
Have anyone tried to associate an event listener to a swf symbol.
It seems that no actions could be added.
I just stumbled across this, looking for blog posts similar to mine:
http://alecmce.com/as3/embed-asset-gotcha
Hope the solution helps someone!
Post a Comment