External SWF using stage width & height...

Hi,
I have an external .swf file (zoomify-esque) that I would like to use in my Flex app, but it's size attributes use the stage width and height.
This basically means that the loaded swf file will load at 100% of the size of the stage. I can resize the loaded .swf using whatever Flex component I put it in, but that shrinks it rather than behaving like it would if I embedded it in an HTML page.
I hope that makes sense. If anyone could help me out with this, I'd be very grateful!
Thanks in advance,
  Alex.

Thanks for your response Alex,
The swf is from an external company that we pay for virtual slide serving software, and I am currently unaware of any other zooming tools that can efficiently view medical images averaging over 5 gigapixels in size. If you know of any, that'd be really useful, but correctly embedding the original swf is preferred.
  Alex.

Similar Messages

  • Loading External SWF using Absolute Path

    Hi,
    I am having trouble loading an external swf on a server using the absolute path. This external swf uses webcam streams and is loaded in the original swf file using the URL request code. I can load other swfs but just not that one. I have set the permission of the external swf to allow write/read/execute. Any help is apprieciated.
    P.S. I have also tried changing the location and name but still doesn't help.
    //Loads the augmented SWF into the main timeline.
    var request:URLRequest = new URLRequest("http://www.reminisce.me/files/jz_AR.swf");
    var loader:Loader = new Loader()
    loader.load(request);
    arHolder.addChild(loader);
    arHolder.x=300;
    arHolder.y=125;
    Thank you for your help in advance.
    -John

    I can´t get the linked swf to run in any browser, are you sure that it compiled right?

  • How to Load an external swf using loadmovie in AS3

    I need to create a button with script, on rollover load an external swf into movieclip in AS3.  This was able to create this in AS2, but I need to create this in AS3

    Thanks again Ned.
    Kenneth Russell
    graphic artist, Sr.
    Lockheed Martin - MS2
    2323 Eastern Blvd., Baltimore, MD 21220
    Phone 410.682.0554    Fax 410.682.0543
    From: Ned Murphy <[email protected]>
    Reply-To: [email protected]
    Date: Thu, 23 Jul 2009 19:08:25 -0600
    To: kenneth russell <[email protected]>
    Subject: How to Load an external swf using loadmovie in AS3
    In AS3 you use the Loader class to load external swf's and image files.  You
    should be able to find examples both in the Flash help files and these forums
    if you search.  If you aren't aware of how to code buttons in AS3, that can be
    found as well.  In AS3, just about any kind of interction involves the use of
    event listeners in combination event handler functions... in the case of a
    button rollover an example would be...
    btnName.addEventListener(MouseEvent.ROLL_OVER, overHandler);
    function overHandler(evt:MouseEvent):void {
         // your loading code or whatever
    >

  • Dispatching Events - External SWF & Main Stage

    Hi Everyone
    I am dispatching two different events showbutton and removebutton from the code inside the LOADED SWF.
    on main file, (the one that is loading the swf file) i m listening for events and either showing or removing the
    buttons based on proper scenario. Here is he error i m getting. I appreciate if someone can help me understand
    the problem thanks.
    ERROR   1180  Call to a possibly undefined Method Event   - - - > dispatchEvent(new Event("showbutton"));
    -----------------EXTERNAL SWF -----------------
    dispatchEvent(new Event("removebutton"));
    dispatchEvent(new Event("showbutton"));
    -----------------MAIN STAGE-----------------------
    movieLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, loaderCompleteHandler)
    function loaderCompleteHandler(event:Event) {
        (event.currentTarget.content as MovieClip).addEventListener("removebutton", categoryClickHandler);
        (event.currentTarget.content as MovieClip).addEventListener("showbutton", categoryClickHandler2);
    function categoryClickHandler(event:Event):void {
        alaarm.visible=false
    function categoryClickHandler2(event:Event):void {
        alaarm.visible=true
        trace("yohoo");

    MathAdor,
    Have you considered solutions that don't involve event handlers available to AS3.
    If I understand correctly you are trying to:
    1.  Control buttons that exist in your main .swf file
    2.  Control the visibility of those buttons from a child .swf called into existence from the main .swf file
    You could control this completely from the child .swf by setting a variable for your parent .swf
    In your child .swf creat a variable that contains the parent movieclip:
    var myParentClip:MovieClip = MovieClip(parent.parent);
    Now control your buttons with the appropriate command from your child
    myParentClip.buttonName.visible = true;
    myParentClip.buttonName.visible = false;
    Total control from your child .swf
    Hope this helps

  • Loading external swf using Loader.load() method is delayed with flash player 10.1 and next versions.

    I am trying to load an external swf file of size 300 kb using Loader.load() method and trying to access some objects in it and i am getting some delay in loading the external file with flash players 10.1 and next versions.
    The action script code used to load:
    var strUrl:String="toLoad.swf";
    var urlReq:URLRequest=new URLRequest(strUrl);
    var ldrLoader:Loader = new Loader();
    var ldrLoaderContext:LoaderContext = new LoaderContext();
    ldrLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, externakSwfLoaded);
    ldrLoader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, errorInLoadingSwf);
    ldrLoader.contentLoaderInfo.addEventListener(SecurityErrorEvent.SECURITY_ERROR, errorInLoadingSwf);
    ldrLoaderContext.applicationDomain = ApplicationDomain.currentDomain;
    ldrLoader.load(urlReq, ldrLoaderContext);
    addChild(ldrLoader);
    System specifications:
    O.S. Windows XP sp2 (32 bit)
    Browser IE 6.0 (128 bit)
    Flash Player version WIN 10,2,152,32

    I think you are lost. This forum is for ROME. It sounds like you want one of the Flash or Flex forums...
    Good luck!
    Harbs

  • Unload external SWF using event dispatch

    Hi i am working on a flash website where i have a main movie named as Navigation where i have all the navigation buttons and drop menus. i am using switch case method to load multiples external SWFs. so as user clicks on any of the navigation button...it loads the external SWF
    now i have a close_btn in the loaded SWF and i simply want the unload the external SWF when user clicks on the close_btn.
    I come to know that i can do this by event dispach but i am not sure what code to put in external swf  so when close_btn is clicked it can access the unloader function in main movie and unload the External SWF.
    Could you Please help, Thank you !
    this is my code
    //--------main swf---------------------
    import flash.display.Loader;
    import flash.display.Sprite;
    import flash.events.*;
    import flash.net.URLRequest;
              home_btn.addEventListener(MouseEvent.CLICK,Click_To_Close);
              ourstory_btn.addEventListener(MouseEvent.CLICK, clickHandler);
              facility_btn.addEventListener(MouseEvent.CLICK, clickHandler);
              customers_btn.addEventListener(MouseEvent.CLICK, clickHandler);
              sustainability_btn.addEventListener(MouseEvent.CLICK, clickHandler);
              contactus_btn.addEventListener(MouseEvent.CLICK, clickHandler);
    //  Dropdown Menu1 Buttons
              menu1.menu_mc1.organicinitiative_btn.addEventListener(MouseEvent .CLICK, clickHandler);
              menu1.menu_mc1.myhope_btn.addEventListener(MouseEvent.CLICK, clickHandler);
              menu1.menu_mc1.target2015_btn.addEventListener(MouseEvent.CLICK, clickHandler);
    //  Dropdown Menu2 Buttons
              menu2.menu_mc2.mens_btn.addEventListener(MouseEvent.CLICK, clickHandler);
              menu2.menu_mc2.womans_btn.addEventListener(MouseEvent.CLICK, clickHandler);
              menu2.menu_mc2.teans_btn.addEventListener(MouseEvent.CLICK, clickHandler);
              menu2.menu_mc2.babies_btn.addEventListener(MouseEvent.CLICK, clickHandler);
    var loader:Loader = new Loader();
    addChildAt(loader,0);
    function clickHandler(e:Event):void{
    switch(e.target.name){
        case "ourstory_btn": loader.load(new URLRequest("ourstory.swf")); break;
        case "facility_btn": loader.load(new URLRequest("facility.swf")); break;
              case "customers_btn": loader.load(new URLRequest("customers.swf")); break;
              case "sustainability_btn": loader.load(new URLRequest("sustainability.swf")); break;
              case "contactus_btn": loader.load(new URLRequest("contactus.swf")); break;
              case "organicinitiative_btn": loader.load(new URLRequest("organicinitiative.swf")); break;
              case "myhope_btn": loader.load(new URLRequest("myhope.swf")); break;
              case "target2015_btn": loader.load(new URLRequest("target2015.swf")); break;
              case "mens_btn": loader.load(new URLRequest("mens.swf")); break;
              case "womans_btn": loader.load(new URLRequest("womans.swf")); break;
              case "teans_btn": loader.load(new URLRequest("teens.swf")); break;
              case "babies_btn": loader.load(new URLRequest("babies.swf")); break;
    //-----------my unloader function in main swf --------------------
    function Click_To_Close(event:MouseEvent):void
                  if(loader != null) {
         loader.unloadAndStop();

    thank you
    i have tried to use   this.parent.Click_To_Close  but it gives compilation error
    i checked the tutorial about custom events i think its little complex for me now to understand the typeriter app.
    also i cheked the similer thread and tried to test that code myself..i found that the last block of main movie does not works and does not unload the loader2. however  all the trace are showing in the output windows that i added to check the code but last trace from the main movie is not showig...   
    trace("child removed from Main Movie") 
    so if this can work somehow i will use this method of event dispatch in my application that i am working...
    Thank you
    -----main movie ---------
    var loader1:Loader = new Loader();
    var loader2:Loader = new Loader();
    loader1.contentLoaderInfo.addEventListener(Event.COMPLETE, assignMovie1Listener);
    loader1.load(new URLRequest("movie_1.swf"));
    loader2.load(new URLRequest("movie_2.swf"));
    addChild(loader1);
    addChild(loader2);
    function assignMovie1Listener(evt:Event):void {
          MovieClip(evt.currentTarget.content).addEventListener("eventTriggered", removeLoader2);
                trace("listner is listning..")
    function removeLoader2(evt:Event):void {
          loader2.unloadAndStop();
          removeChild(loader2);
             loader2 = null;
                trace("child removed from Main Movie")
    //------------- movie_1.swf code:
    removeMovie2_btn.addEventListener(MouseEvent.CLICK , removeMovie2);
    function removeMovie2(event:MouseEvent):void
          dispatchEvent(new Event("eventTriggered"));
                trace("event triggered form Child Movie-1");
    as u can see when i click close button its triggering the trace from movie-1 but its not unloadign the movie2

  • How to load external SWF used sharing library.

    Hi~~~
    Before ask the question, plz understand my bad English..
    Recently I try to load the Swf file that is maded by Flash CS 6.0.
    Especially it used shared library..
    When I try to load this SWF, I used FileStream instead URLRequest.
    This is because the target SWF File located same device with the Swf Application.. So when I use the URLRequest
    it give me the warning - Sandbox security violation.
    But by using FileStream, the warning did not occur.
    This is the sample code below..
      var myFile = new File(path);
      var myStream = new FileStream();
      myStream.open(myFile, FileMode.READ;
      var myBytes:ByteArray = new ByteArray();
      myStream.readBytes( myBytes );
       mSwfLoader.loadBytes( fileStream, context );
       mSwfLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, onLoadedComplete);
    As you can see, I made a event listener to get the content of the Loader, after receving Complete Event(I guess.. after decording?).
    But I can't receive any event call, so I removed symbol used sharing library in the SWF.
    And this gave me the result as I respected... So I guess the problem caused by using sharing Library..!
    (In parenthease, I can see the valid result in running debug time on the Flash CS6..)
    What should I do? I respect that using sharing libary give saving memory.  So I want to using it as possible.
    Thanks for your reading...!

    Here is one way:
    http://help.adobe.com/en_US/flex/using/WS2db454920e96a9e51e63e3d11c0bf69084-7f9c.html
    HTH,

  • Importing flash symbols from an external SWF using URLrequest

    Hello.
    I'm trying for several days now to properly import flash symbols into a flex application.
    i can't only @Embed because the swf file that contains the skins will not be available locally so i need to use URLRequest.
    This is what I've got so far.
    1. I created a flash file, lets call it foo.swf that contains several elements in the library and each element has both `Export for ActionScript` and `Export for runtime sharing` on. one of the elements is called 'test' which is a movieclip of an image.
    2. i created a flex project that creates the swf flashSkins.swf that contains the following Wrapper class:
            package
                import flash.display.Sprite;
                    public class Wrapper extends Sprite
                     [Embed(source="foo.swf",symbol="test")]
                        [Bindable]public static var test: Class;
    I tested to make sure that this class properly fetchs symbols from the flash file properly
    using the following code:
        <fx:Script>
            <![CDATA[
                public var wrapper:Wrapper;
            ]]>
        </fx:Script>
            <mx:Image source="{Wrapper.test}"/>
    it loads the image and shows it properly.
    3. I created another swf file that will fetch the flashSkins swf and import the Wrapper class from it. this is where i fail.
            public function loadSkins():void
                    bgLoader = new Loader();
                    var bgURL:URLRequest = new URLRequest('http://files.xpogames.com/flashSkins/flashSkins.swf');
                    bgLoader.contentLoaderInfo.addEventListener(Event.INIT,onLoaded);
                    bgLoader.load(bgURL);
                public function onLoaded(e:Event):void {
                    var clazz:Class = bgLoader.contentLoaderInfo.applicationDomain.getDefinition('Wrapper') as Class;
                    var a:Object = new clazz();
                    theimage.source=a.test;
            ]]>
          </fx:Script>
            <mx:Image id="theimage" />
    I tried using getDefinition with 'wrapper' or 'Wrapper' but on both cases i get an error that the variable is not defined.
    any ideas?

    Did you try using the Event.COMPLETE instead of Event.INIT?

  • Use cs4 make loader load flex swf width/height problem

    hi,all:
      i use cs4 make as3 loader from SharedObject.getLocal, load flex make swf file, so width/height is not Ok
    load cs4 make swf file is Ok,
    why?
    as3code:
    // copy right china summer xiatian qq 11602011
    package{
      import flash.net.SharedObject;
      import flash.utils.ByteArray;
      import flash.display.*;
      import fl.controls.*;
      import flash.net.URLRequest;
      import flash.net.URLRequestMethod;
      import flash.system.ApplicationDomain;
      import flash.system.LoaderContext;
      import flash.net.*;
      import flash.utils.*;
      import flash.external.ExternalInterface;
      import flash.system.*;
      // http://as3corelib.googlecode.com/svn/trunk/src/com/adobe/crypto/MD5.as
      import com.adobe.crypto.MD5;
      import flash.events.*;
          public class MyCacheLoader extends Sprite
              public function MyCacheLoader()
                  Security.allowDomain("*");
                  Security.exactSettings = true;
                  function getStr(s:String):String
                     return ExternalInterface.call("(function(){return window['" + s + "'];})")  || '';
                  function MyLog(s:String):void
                      // ExternalInterface.call("(function(){var o = document.getElementById('myLog');o.value += '" + s + "' + '\n\n';})");
                      ExternalInterface.call("(function(){top.alert('" + s + "');})");
                      // myTestTxt.text = myTestTxt.text + s + "\n\n";
                  var bLoadSwf:Boolean = true;
                  var parm:Object = loaderInfo.parameters;
                  // parm["u"] = "/xuicore/test/myTest.swf";
                  // parm["v"] = "4.4";
                  var szUrl:String = parm['c'] + "/CMHS?jsessionid=" + parm['s'] + "&CMHS=GetOutSpFile&rmpath=rs/&rmf=" + parm["u"] + ".swf",
                      szVer:String = parm["v"], szName:String = parm["u"];// "X" + MD5.hash(parm["u"]);
                  var loader:Loader = new Loader();
                  var so:SharedObject = SharedObject.getLocal(szName);
                  loader.x = loader.y = 0;
                  addChild(loader);
                  function showSwf(byteArray:ByteArray):void
                    // MyLog("开始显示处理: " + byteArray.length);
                    if(0 >= byteArray.length)return;
                    bLoadSwf = false;
                    // loader.visible = false;
                    configureListeners(loader.contentLoaderInfo);
                    var context:LoaderContext = new LoaderContext(false,ApplicationDomain.currentDomain);
                    // context.allowLoadBytesCodeExecution = true;
                    loader.loadBytes(byteArray, context);
                  function displaySwf():void
                     var oData:Object = so.data;
                     // MyLog([szVer, oData.version].join(" = "));
                     if(szVer == oData.version)
                       showSwf(so.data.swf as ByteArray);
                     else downloadSwf();
                  var ldr:URLStream = new URLStream();
                  function downloadSwf():void
                      bLoadSwf = true;
                      // MyLog(szUrl);
                      var ur:URLRequest = new URLRequest(szUrl);
                      ur.data = new Date().getTime();
                      ur.method = URLRequestMethod.POST;
                      configureListeners(ldr);
                      ldr.load(ur);   
                  function configureListeners(dispatcher:IEventDispatcher):void {
                      dispatcher.addEventListener(Event.COMPLETE, completeHandler);
                      dispatcher.addEventListener(HTTPStatusEvent.HTTP_STATUS, httpStatusHandler);
                      dispatcher.addEventListener(Event.INIT, initHandler);
                      dispatcher.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler);
                      dispatcher.addEventListener(Event.OPEN, openHandler);
                      dispatcher.addEventListener(ProgressEvent.PROGRESS, progressHandler);
                      dispatcher.addEventListener(Event.UNLOAD, unLoadHandler);
                      if(!bLoadSwf)dispatcher.addEventListener(Event.INIT,loaded);
                  function removeListeners(dispatcher:IEventDispatcher):void {
                      dispatcher.removeEventListener(Event.COMPLETE, completeHandler);
                      dispatcher.removeEventListener(HTTPStatusEvent.HTTP_STATUS, httpStatusHandler);
                      dispatcher.removeEventListener(Event.INIT, initHandler);
                      dispatcher.removeEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler);
                      dispatcher.removeEventListener(Event.OPEN, openHandler);
                      dispatcher.removeEventListener(ProgressEvent.PROGRESS, progressHandler);
                      dispatcher.removeEventListener(Event.UNLOAD, unLoadHandler);
                      if(!bLoadSwf)dispatcher.removeEventListener(Event.INIT,loaded);
                  function loaded(e:Event):void{
                          loader.x = loader.y = 0;
                          loader.content.y = loader.content.x = 0;
                          var s:String = "", k:String, obj:Object = loader.content;
                          // for(k in obj)s += k + " = " + obj[k] + ";";
                          // obj.width = "100%", obj.height = "100%";
                          // MyLog([obj.width, obj.height].join(", "));
                          loader.x = -180;
                          loader.scaleX = 1.83;
                          loader.scaleY = 1.05;
                          // loader.content.height = stage.stageHeight;
                          // loader.scaleContent = true;
                          // loader.content.width = stage.width,loader.content.height = stage.height;
                          // loader.content.stage.stageWidth = stage.stageWidth,loader.content.stage.stageHeight = stage.height;
                          // loader.content.stage.scaleMode = "exactFit";
                          setTimeout(function(){
                            // loader.x = loader.content.x = 0;
                            var fullWidth:Number = loader.content.width;
    var fullHeight:Number = loader.content.height;
    var stageWidth:Number = loader.content.loaderInfo.width;
    var stageHeight:Number = loader.content.loaderInfo.height;
    var fixOffStageScaleX = fullWidth / stageWidth;
    var fixOffStageScaleY = fullHeight / stageHeight;
                            loader.content.scaleX = fixOffStageScaleX,loader.content.scaleY = fixOffStageScaleY;
    // loader.content.width = stage.width * 1.59;loader.content.height = stage.height * 1.15;
                            // loader.content.width = stage.stageWidth,loader.content.height= stage.height;
                            // loader.width = stage.stageWidth,loader.height= stage.height;
                            // loader.content.stage.scaleMode = "exactFit";                       
                          }, 3000);
                  var _byteArray:ByteArray = new ByteArray();
                  function completeHandler(event:Event):void {
                      if(bLoadSwf)
                          if(0 < _byteArray.length)
                             so.data.swf = _byteArray;
                             so.data.version = szVer;
                             try{so.flush();}catch (e:Error){}
                             removeListeners(ldr);
                             showSwf(_byteArray);
                          else removeListeners(ldr);
                          bLoadSwf = false;
                          ldr = null;
                      else
                          removeListeners(loader.contentLoaderInfo);
                          // loader.visible = true;
                          // loader.content.width = (height / loader.content.height) * loader.content.width;
                          // loader.content.height = (width / loader.content.width) * loader.content.height;
                          if(isNaN(loader.content.width) || 0 >= loader.content.width)
                            setTimeout(function(){
                             loader.content.width = stage.stageWidth;
                             loader.content.height = stage.stageHeight;
                          }, 4000);
                          // width=loader.content.width;  height=loader.content.height;
                          // MyLog("显示处理完毕");
                  function httpStatusHandler(event:HTTPStatusEvent):void {
                      // MyLog("httpStatusHandler: " + event);
                  function initHandler(event:Event):void {
                      // MyLog("initHandler: " + event);
                  function ioErrorHandler(event:IOErrorEvent):void {
                      // MyLog("ioErrorHandler: " + event);
                  function openHandler(event:Event):void {
                      // MyLog("openHandler: " + event);
                  function progressHandler(event:ProgressEvent):void {
                      // MyLog(bLoadSwf + ": progressHandler: bytesLoaded=" + event.bytesLoaded + " bytesTotal=" + event.bytesTotal);
                      if(bLoadSwf)
                        var urlStream:URLStream = event.currentTarget as URLStream;
                        while (urlStream.bytesAvailable)
                           urlStream.readBytes(_byteArray, _byteArray.length);
                  function unLoadHandler(event:Event):void {
                      // MyLog("unLoadHandler: " + event);
                  displaySwf();
    flex code:
    <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" horizontalAlign="left" layout="absolute"
    paddingLeft="2"
        paddingTop="2"
        paddingBottom="2"
        paddingRight="2"
        autoLayout="true"
        width="100%"
        height="100%"
    backgroundGradientColors="[0x000000,0xBAD3F9]"
    ">
    </mx:Application>
    must:
    width="100%"
    height="100%"

    loader from SharedObject.getLocal, use SharedObject.getLocal cache bytearray swf data is ok,
    so, Can be seen as not with urlstream
    loader.loadBytes(byteArray, context);
    as3 cs4
    flex sdk 3.3.0.4852

  • Get external swf width height

    Hi,
    I'm am trying to load an external swf file using a different swf that is on a different domain. I have noticed that it is possible to use addChild on the external swf, but when I try to get its contents width and height using contentLoaderInfo I get a security sandbox error.
    It seems it is possible to fix it by using  Security.allowDomain("*") and Security.allowInsecureDomain("*") in the external file.
    And now it's get tricky, the external swf file is a file that users upload to my site so I don't have control on the code so I can't add the "allowDomain" part.
    The second swf (the host file that loads the external file) is a file that I let others to embed on their site.
    The intresting thing is that when I share the host swf on facebook there is no problem, and I don't even need to add the code for "allowDomain" on the external file.
    I it makes a different, I use HTTPS protocol to access to the external swf.
    I tried to load the crossdomain.xml file, but it didn't help.
    What can I do? the only data I need to get on the external swf is its width and height to scale it to the host file.
    Thank you

    Thank you.
    Now it looks i am getting close but not exacly there.
    Everytime I get near something else doesn't work properly.
    Now I get the dimension after two things:
    I added 'secure="false"' to the https' crossdomain and added LoaderContext to when I load the external event:
    context.securityDomain = SecurityDomain.currentDomain;
    context.checkPolicyFile = true;
    Now you probably ask what's the problem.
    well I have no idea why, but it looks like the external swf file I load (which is as2, but I still didn't check if it matters) keeps on jumping between its first frame and second frame ( The swf has two frames). If you having hard time to imaging what I mean, lets  say this jumping between frames is really not recommended for people with Epilepsy.
    It has a stop() action, but sadly the player doesn't care.
    let me remind you that if I only addChild the Loader (without the context)  it looks fine, but I need the width and height to resize the swf.
    anyone knows what can cause this?
    and thx again martinjamesroberts1 for the link, it put me on the right track.

  • What is or isn't possible on iOS?  (Not having Loader, loadBytes(), external swfs, etc)

    My basic question is:  "What are the classes which we should not use for iOS using the packager."
    I have been trying for a few days trying to get a simple Flash app to run on the iPad.  A very simple app (with sound!) with just 2 classes works fine (Performance is a whole other issue.  We will get to that).  But if I try anything else, all I get is a white/black screen on the iPad.  So it would be really nice to know what classes, functions, etc we CANNOT use for the Packager.
    I have fairly simple app (not as simple as 2 classes) which loads some art assets via URLRequest/Loader, puts them on the stage.  Fairly common standard practice in AS3.
    I've read about not able to load an external file using the Packager.  So to fix the situation of loading assets, I have looked into the [embed] tag, which seems to work.  I hope the blogger doesn't mind, but this page is an excellent source on what works and doesn't work with the [embed] tag in it's various flavors:  http://www.richardleggett.co.uk/blog/index.php/2010/03/08/flash_builder_and_flash_pro_asse t_workflows.  For example, AS3 in a swf is stripped out from an external swf using [embed].
    The best way to load an external swf file for iOS seems to be using [embed] with "application/octet-stream" and load the swf through ByteArray (Option #4 in the link above).  This works great on the PC.  HOWEVER, on iPad, it fails.  The [embed] tag works on the iPad with the other ways, so my guess is that loadBytes() does not work.  Is this true Adobe/Flash guys?  Can you confirm this?
    My initial question is "why is this not allowed on iOS?".  If it is because of the fact that it uses a Loader, can it be changed so it's not using a Loader to construct a MovieClip?  I have a ByteArray with the raw swf/MovieClip data.  Why can't I construct a MovieClip from it without going through Loader?
    This loadBytes() failure seems to be the only thing preventing me from using the normal pipeline of Flash development in loading external assets.  If there are other ways people have found, please share!
    Now on to performance.  Adobe, can you post some examples/samples of code which runs at decent performance?  Like a "tech demo" of what is possible using the Packager running on iPad/iPhone.  That would be extremely helpful for everyone.  I have done a lot of the optimizing suggestions on various sites and pages ( and by Adobe http://www.adobe.com/devnet/flash/articles/optimize_content_ios.html), but I am not seeing the 30 fps performance that is MORE than possible on iPhone/iPad.  Displaying and moving around Bitmaps (I don't use any vector graphics) should be blazing fast.  Quake runs on iPad without any problems and that code is 10 years old.  Moore's law dictates that drawing Bitmaps using CPU should be faster than a 3D engine written 10 years ago...  I am trying out the new iOS 4.2 which is supposed to be "significantly" better, but I am still stuck on loadBytes().
    So at this point, I am blocked on loadBytes() and my performance for a simple app which draws a few Bitmaps and MovieClips is terrible.  I am hopeful some people out there have figured out some solution (there are lots of clever people out there) and I will stumble on to something.  But being forced to go native Objective-C seems to be my only option at this point.
    In summary, here are the questions I would like to ask the Adobe/Flash group for some more help/information/advise:
    - Why is Loader not allowed on iOS?  Is it a technical limitation of the hardware/os/Flash?  Will it never be supported?  What is the future of this class on iOS?
    - Why is loadBytes() not allowed on iOS?  I have the raw embedded data in memory.  I don't need to make a remote call so security should not be an issue.  Can I create a MovieClip without using Loader?
    - Why is AS3 stripped from the timeline when a Symbol is retrieved using [embed]?  Maybe this is the same reason loadBytes() fails, but if I could use [embed] and get a copy of the Symbol, that is what I need.  (There are issues with the mx.core.MovieClipLoaderAsset/Asset, but it is better than being blocked by loadBytes())
    - What are some apps you guys have written that we can use to compare PC vs iOS?  Again, a "tech demo" or sample code of what you as experts in Packager for iOS have done which runs at decent framerate (30+fps) would be of tremendous help.  If the Adobe/Flash group hasn't gotten the current Packager for iOS to handle more than 50+ 2D Bitmaps on screen running at 30+fps, that would be good to know.  Please let us know what the experts and owners of your software are capable of getting the most throughput using the Packager.  I'd hate to sound a bit fed up/angry, but I think you are wasting a lot of people's time and energy with a piece of software that, to me, seems like it was a bit early to release.  Flash can do some great things.  If it can do it on iOS, even better.  But PROVE it to us that it's possible, before having your customers run into barriers imposed on us by trial and error.
    Thanks.

    I have hardly ever seen a post here from someone at Adobe, so you may need to be patient.
    Read this article, and get its associated demo files, to see some good performing tech demos:
    http://www.adobe.com/devnet/flash/articles/optimize_content_ios.html
    Back to your main point, loaders are working, what isn't working for you is accessing of things in the library of a successfully loaded swf, that have been set to Export for ActionScript. That means that the swf you have loaded has an ActionScript Class, to represent the library symbol. iOS Flash apps are native ARM code, and don't include the virtual machines that a browser plugin has, and so it's not able to interpret ActionScript. That may be why it would fail.
    Now, I can think of at least a couple of reasons why you might want to have external swfs with elements that you want to reuse in the main swf. One would be if you're intending to make a lot of them, like say if you wanted to have an Asteroids game and the ability to use artwork from a set of different swfs. Another reason might be if you want to skin your interface, by taking specific elements from the loaded swf and using them in the main swf. That way you could have artists preparing those swfs for you, and you just include them in your package, and load the one you want.
    There is a way to do either of those things. The second one can be done by having the item as a named symbol on the stage of the loaded swf. With a to-be-loaded swf named "inner.swf", that has a movieclip on its stage named "mc1", this script in the main swf would load that external swf and use its symbol on the main swf's stage, without having to make the inner swf's symbol use ActionScript:
    var req:URLRequest = new URLRequest("inner.swf");
    var ldr:Loader = new Loader();
    ldr.contentLoaderInfo.addEventListener(Event.COMPLETE,loaded);
    ldr.load(req);
    function loaded(e:Event) {
    var mc:MovieClip = e.target.content as MovieClip;
    var innermc:* = mc.mc1;
    innermc.x = 50;
    innermc.y = 50;
    addChild(innermc);
    For the other case, you can take the item off the stage of the loaded swf and draw it into a bitmapdata, and then make as many bitmaps from that as you like. Here's the above example, only it adds the original movieclip to the main swf stage, and also creates a bitmap that looks the same:
    var req:URLRequest = new URLRequest("inner.swf");
    var ldr:Loader = new Loader();
    ldr.contentLoaderInfo.addEventListener(Event.COMPLETE,loaded);
    ldr.load(req);
    function loaded(e:Event) {
    var mc:MovieClip = e.target.content as MovieClip;
    var innermc:* = mc.mc1;
    innermc.x = 50;
    innermc.y = 50;
    addChild(innermc);
    var bmd:BitmapData = new BitmapData(innermc.width,innermc.height);
    bmd.draw(innermc);
    var bm:Bitmap = new Bitmap(bmd);
    bm.x = 150;
    bm.y = 150;
    addChild(bm);
    So, the thing to learn is that a native ARM code application does not have an ActionScript interpreter in it, and if you need to do something that normally requires interpreting ActionScript, find another way to do it.

  • Loading external SWF with masked content - get size of masked area

    I am loading an external swf using the SWFLoader component. The swf that is being loaded is masked so that only a portion is being shown. However, when it's loaded the actual size of the swf (loader.content.width && loader.content.height) is the complete swf including the masked area. Therefore, the loaded swf does not display properly in the itemrenderer Is there a way to to grab the size of the just the masked area as opposed to getting the size of the entire swf's contents (area not masked)?
    One item to note that is complicating the issue, is that these are swf files that have already been created and there are many of them. In some instances, the size of the stage matches up with the size of the masked area. In other instances, the stage is larger (or possibly smaller) than the masked area movieclip as well as possibly the actual size of the movieclip (w/o the mask).
    I am currently loading the external swf in using a Loader. Once loaded, I make a copy (screen shot) of the swf by creating a bmp of the loader.content.This is done as I don't want to have any animations being shown on screen at this moment. I am setting the size of the bmp using using loader.content.width & loader.content.height. I then set the SWFLoader.source to the bitmap.

    Here's the code I am using to load the swf:
         <fx:Script>
                <![CDATA[
            protected  function application1_applicationCompleteHandler(event:FlexEvent):void {
                 loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onSWFLoaded);
                 loader.load(new URLRequest("c:\\Flex Testing\\FA warns Mr. Jones.swf"),  context);
            private function  onSWFLoaded(event:Event):void {
                bmData=new  BitmapData(loader.content.width, loader.content.height, true, 0x990000);
                 bmData.draw(loader.content, new Matrix());
                bmp=new  Bitmap(bmData);
                swfLoader.source=bmp;
                 addElement(swfLoader);
                with (swfLoader)
                    setStyle('verticalAlign', "middle");
                     setStyle('horizontalAlign', 'center');
                     verticalCenter=0;
                    horizontalCenter=0
                     scaleContent=true;
                    maintainAspectRatio=true;
                     addEventListener(MouseEvent.CLICK,onClick,false,0,true)
                     useHandCursor = true;
                    buttonMode = true;
                     width=200;
                    height=200;
                 loader.unload()
                loader=null;
               ]]>
    </fx:Script>

  • Loading External SWF - Problem

    Hi,
    Using MovieClipLoader I want to load external SWFs - and it
    is working fine
    if external swf doesn't have anything outside it's stage,
    otherwise it shows
    everything - that's the problem.
    For example, external swf's stage dimensions are 100x150, but
    it has some
    timeline animation (some objects scrolling through the stage,
    some bouncing
    text animation that sometimes goes off-stage, etc..).
    So when I load this external movie (banner.swf), I can see
    all these objects
    that were bouncing outside this 100x150 area (the stage of
    banner). Even
    more - the size of loaded movie is larger than 100x150px
    (because of these
    off-stage objects that are now visible). This way I'm getting
    positioning
    problems, too.
    var mcl:MovieClipLoader = new MovieClipLoader();
    mcl.loadClip("banner.swf", holder);
    mcl.addListener(listener);
    holder._x = Stage.width/2 - holder._width/2;
    holder._y = Stage.height/2 - holder._height/2;
    Thanks in advance,
    B.

    Hi kglad,
    Does doing that takes only into account width and height of the stage, or also considers off stage items (as in the initial question)?
    I am also looking at this issue and we can't have all the content providers modify their pre-existing flash applications to be displayed in the appropiate scale. We are looking to any of the following:
    find a way to get adobe air/flash to not consider the off stage elements on the width/height we set to the movie.
    find a way to get the stage size from the external movie and use that to auto calculate the resize needed.
    any other alternative that allows to have the same end result, which is loading up the external content at the size we specify and displaying well. We can actually hide content outside the stage, but we still need to know the appropiate scale / size to apply to the movie so what's visible matches the are where we want to show the content.

  • Loading an external SWF in and displaying it behind overlay/watermark

    I am building a SWF and the goal is to load in an external SWF file and then display that within my container. They are totally unrelated items and I do not want to modify the functionality of the item I am loading in. My SWF will briefly display a watermark overlay, but then disappear. Can anyone guide me into this best way of doing this?
    Also, is there anyway to get the properties from the SWF I loaded in (namely height and width) so I might be able to easily adjust the size of my SWF to match?
    Thanks!

    just load your external swf using the loader class.  what you described doing is standard stuff and nothing special needs to be done.
    however, you must wait until loading is complete before you can access the loaded object's width and height.

  • SWFLoader width height Issue

    When I use the SWFLoader to load an swf from a URL it is not
    using the
    sizes specified in the SWFLoader component that is loading
    it, the swf
    seems to initially load at whatever size the actual swf is,
    but after
    the swf has been downloaded fully then the SWFLoader jumps to
    the
    width/height I specified, so basically all swfs I load start
    out huge
    then after sever seconds shrink to the size I want them to
    be. has
    anyone else seen this or know how to remedy this issue?
    (also the element in the swf that animate say from outside
    the
    original swf stage width/height show out way outside the
    bounds of the
    size specified)
    //set the source(within a function)
    swfplayer.source="
    http://www.somedomain.com/myswf.swf";
    <mx:Canvas id="swfplaycontainer" width="452" height="252"
    horizontalCenter="0" verticalCenter="0">
    <mx:SWFLoader id="swfplayer" width="100%"
    height="100%"/>
    </mx:Canvas>
    Also tried with no Canvas...
    <mx:SWFLoader id="swfplayer" width="452" height="252"
    width="100%"
    height="100%"/>
    Thanks, Tim
    specified size does not take effect until fully loaded swf

    hmm, well I tried explicitly setting the widht/height of the
    SWFLoader to no avail, I just tried the scaleContent, it also did
    not work ;-( I cannot hide the SWFLoader until complete event
    because these are long swf animations(they are tutorial videos in
    swf format) some seem to take 30-60 seconds to fully load(depending
    on network traffic). They do start playing quite well immediately
    but the size is messed up until complete, but I would think and
    explicit size on the SWFLoader should be the definitive answer.
    Adobe?

Maybe you are looking for