Can you enumerate exported symbols in a loaded SWF?

We have a number of SWFs that we use as asset libraries.  These SWFs each contain a bunch of statically exported symbols.
I'm trying to make a tool to help catalog our assets.  I want the tool to be able to load these library SWFs and extract a list of all the exported symbols each contains.  Is that possible to do?  I can't find a way to enumerate or iterate over the exported symbols in the application domains of the loaded SWFs.
(I could swear I saw an example of doing this in documentation somewhere, but now I can't find it... I'm wondering if I dreamed it, or misinterpreted some other example.)
I'd be game for doctoring up the library SWFs in some way, e.g. make them use some custom helper class as their document class, if that would help.

A friend of mine and I came to this post hoping to be told how to do it, after getting just "use jsfl" we set off on our journey to learn a bit about it.
After an hour, we did it!... Kinda. Thanks for suggesting jsfl.
So in CS5, we go File > New > Flash JavaScript File
Then we looked at some jsfl docs ( http://help.adobe.com/en_US/Flash/10.0_ExtendingFlash/WS5b3ccc516d4fbf351e63e3d118a901b0bd -8000.html) tried and tried, looked at the docs some more, tried some more and eventually came up with this script:
var doc = fl.openDocument("file:///PutFilePathHere/YourFlashFilesName.fla");
var itemArray = fl.getDocumentDOM().library.items;
var iLength = itemArray.length;
fl.trace(iLength.toString());
fl.outputPanel.clear();
for(var i = 0; i < iLength; ++i)
    if(itemArray[i] == "[object SymbolItem]")
        var str = itemArray[i].name;
        var iLastIndex = (str.lastIndexOf("/"));
        if(iLastIndex > -1)
            str = str.slice(iLastIndex+1);
            fl.trace(str);
fl.outputPanel.save("file:///PutFilePathHere/ExportedSymbols.txt");
And yay! A text document filled with all the symbols in in the library. Ok, ok, it's not perfect because it includes symbols that weren't marked as "export for actionscript 3" which is what we initially wanted, but we're either going to perfect it or just deal with it and put identifiers on our LinkageNames (like EX_Tree, EX_Fire for exported to as3 symbols, and just leave the other symbols alone).

Similar Messages

  • Can you send/export a still frame from an FCP sequence?

    Can you send/export a still frame from FCP as a picture to the desktop? Doesn't matter if it is a .jpeg, .tiff, . bitmap
    G5 Mac OS X (10.4.8) Dual 1.8

    serach the forum for any of the hundreds of posts detailing this process -
    my personal favorite is shift-N, apple-9, type name, drag to bin, batch export.
    The best thing about the batch export queue is you can set up a batch with the file format and destination folder and then keep adding new clips/stills to export.
    Hope this helps -
    Max Average

  • If your database in Full Recovery mode, can you use Bulk Insert Task to load data

    If your database in Full Recovery mode, can you use Bulk Insert Task to load data

    If your database in Full Recovery mode, can you use Bulk Insert Task to load data
    Yes you can ofourse but dont be in idea that logging will be mininal. Loggign will be as per recovery model full. Every thing will be logged. If you are going to use bulk insert task you can consider switching recovery model to Bulk logged but you will not
    have option to do point in time recovery.
    PS: please dont create duplicate threads
    If you read first Note section in below link it clearly states that yes logging will be full and you can use
    http://technet.microsoft.com/en-us/library/ms191244(v=sql.105).aspx
    Please mark this reply as answer if it solved your issue or vote as helpful if it helped so that other forum members can benefit from it.
    My TechNet Wiki Articles

  • Can't Access MovieClips and Functions in Loaded SWF

    Hi everybody,
    I'm trying to simply access anything inside this loaded SWF and all I get is 'null'.
    I have code in the parent SWF that needs to tell the child SWF movieclip what to do but nothing works. This was a piee of cake in AS2 and I can't seem to get anything to crossover in AS3.
    Here's my code:
    import com.greensock.TweenMax;
    import flash.display.MovieClip;
    var myLoader:Loader = new Loader();
    var url:URLRequest = new URLRequest("SWCS_S3_500x250_exp_panel_2.swf"); // in this case both SWFs are in the same folder
    myLoader.load(url);  // load the SWF file
    panel2.addChild(myLoader);   // add that instance to the display list, adding it to the Stage at 0,0
    panel2 = myLoader.content as MovieClip;
    photo_about.alpha = 0;
    photo_downloads.alpha = 0;
    //panel2.content_about.alpha = 0;
    //panel2.content_downloads.alpha = 0;
    function closeSection():void
              panel2.controlsMC.forcePause();
              TweenMax.to(photo_about, .5, {alpha:0});
              TweenMax.to(photo_downloads, .5, {alpha:0});
              TweenMax.to(photo_home, .5, {alpha:0});
              TweenMax.to(panel2.content_about, .5, {alpha:0});
              TweenMax.to(panel2.content_downloads, .5, {alpha:0});
              TweenMax.to(panel2.controlsMC, .5, {autoAlpha:0});
              TweenMax.to(panel2.content_home, .5, {alpha:0});
    panel2 traces null and all the clips loaded within pull up undefined property errors.
    Can somebody please tell me what I'm doing wrong? I'd be stoked to know what I'm missing and feel like this should be a piece of cake.
    Thanks for any help!

    You are not adding the content to the stage at 0,0, you are adding it to panel2 at 0,0.  THen you take panel2 and assign it to be something that likely doesn't exist by the time you assign it.  You need to wait until the loader completes loading before you attempt to do anything with its content, otherwise it has no content (null).  Similarly, you cannot control anything in the loaded swf until it has finished loading.  So assign an event listener to the contentLoaderInfo property of the Loader to determine when loading is complete, and have the event handler function deal with starting the interaction with it.
    var myLoader:Loader = new Loader();
    var url:URLRequest = new URLRequest("SWCS_S3_500x250_exp_panel_2.swf");
    myLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, processLoadedSWF);
    myLoader.load(url);
    function processLoadedSWF(evt:Event):void {
        // deal with the loaded swf here
        // but you don't want to be assigning it to the panel2 object that contains the loader
    As far as controlling anything inside the swf you load, is it an AS1/2 or an AS3 swf?

  • Can you share/export HD video as SD 4x3?

    After editing HD video using FCPX, can you adjust settings when you share (export) to make a ProRes SD 4x3 720X480 video?  Without using Compressor?  Can you edge crop the video in the same step?

    Easiest way is to create a 480 project;  copy the t080 timeline and paste it into the 480 project. It will be letterboxed because of the different aspect ratios. If you don;t want letterboxing, use transform>scale to fill the screen or spatial conform – in the Inspector. (I prefer transform, because with scale and position I have more control over framing.)
    Russ

  • Ive uninstalled and re-installed over and over, firefox crashed like a week ago, everytime i try and open it, it wont it puts up the crash box again and again. why? pleez can you help my firefox will not load.

    everytime i try and open firefox it crashes i click to restart it and send report but its the same thing over and over nuthin changes, i used firefox up till like week ago now it will open period.

    Can you start Firefox in [[Safe mode]] ?
    You can also do a clean reinstall and download a fresh Firefox copy from http://www.mozilla.com/firefox/all.html and save the file to the desktop.
    Uninstall your current Firefox version and remove the Firefox program folder before installing that copy of the Firefox installer.
    It is important to delete the Firefox program folder to remove all the files and make sure that there are no problems with files that were leftover after uninstalling.
    You can initially skip the step to create a new profile, that may not necessary for this issue.
    See http://kb.mozillazine.org/Standard_diagnostic_-_Firefox#Clean_reinstall

  • HT5312 forgot my security question can you help me my daughter down loaded a games need to change password asap

    I have forgotten my security questions and i need to change my apple pass word please can you let me know how to do this
    thanks

    Call Apple to help reset your Security Question.
    http://support.apple.com/kb/HT5699

  • How can I get stage width of an loaded swf?

    Is there any way to get the real stageWidth of an loaded swf?
    The problem comes when the loaded swf has some elements outside the scene. In this case content.width becomes bigger then the scene.
    My code looks like this:
    var request:URLRequest = new URLRequest(file.url);
    var loader:Loader = new Loader();
    loader.load(request);
    loader.contentLoaderInfo.addEventListener(Event.INIT, checkSize);
    loader.contentLoaderInfo.addEventListener(Event.COMPLETE, addImg);
    private function checkSize(e:Event) {
                // this is where I need to see the width of my loaded swf
    trace(e.target.content.width);
    private function addImg(e:Event) {
                    trace("complete");
    Thanks,
    Andrei

    I don't think you can get the stage width of the loaded file unless you assign it as a constant somewhere within the file.  The loaded file forfeits its stage when it is loaded into another swf

  • Can't target main stage from dynamically loaded swf...

    A part of the Flash app. I'm working on right now does the following -
    Main stage loads an external swf using the following function:
    function loadAsset(evt:String):void{
    var assetName:String = evt;
    if (assetName != null){
      var assetLdr:Loader = new Loader(); 
      var assetURL:String = assetName; 
      var assetURLReq:URLRequest = new URLRequest(assetURL); 
      assetLdr.load(assetURLReq); 
      assetLdr.contentLoaderInfo.addEventListener( Event.INIT , loaded) 
      assetLdr.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, displayAssetLoaderProgress);  
      function loaded(event:Event):void { 
       var targetLoader:Loader = Loader(event.target.loader); 
       assetWindow.addChild(targetLoader);
    The externally loaded swf loads another external swf into itself using the following function:
    function loadQuiz(evt:String):void{   
    var quizName:String = evt;
    if (quizName != null){
      var quizLdr:Loader = new Loader();
      var quizURL:String = quizName;
      var quizURLReq:URLRequest = new URLRequest(quizURL);
      quizLdr.load(quizURLReq);
      quizLdr.contentLoaderInfo.addEventListener( Event.INIT , loaded)       
      quizLdr.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, displayQuizLoaderProgress); 
      function loaded(event:Event):void {
       var targetLoader:Loader = Loader(event.target.loader);
       quizWindow.assetLoader.addChild(targetLoader);     
    Everything loads fine, but from the quizWindow.assetLoader.addChild(targetLoader) level, I want to send a message/fill in a dynamic text box on the Main Stage. I have been "parenting" my brains out and I'm not sure how to communicate with that level.
    can anyone show me the proper path or method based off the above, or have a suggestion?
    Cheers,
    ~Chipleh

    Andrei1,
    Thanks again for your help. I was finally able to get the solution you posted below to work for me.
    Much appreciation,
    ~Chipleh
    "In your loaded movie write:
    function traceMyself(e:MouseEvent):void{
         dispatchEvent(new Event("I_WANT_TEXT"));
    function writeText(text:String):void {
         xmlFileName1.text = text;
    In the top movie that loads external swfs something like that:
    loadedSwf.addEventListener("I_WANT_TEXT", onTextRequest, true);
    function onTextRequest(e:Event):void {
         Object(e.target).writeText(tQuizXmlFile1.theQuizXmlFile.text);
    This way these two entities are independent and, most importantly, don't care who is the parent or grandparent."

  • Can you batch export in FCP X, can you batch export in FCP X

    I work for a business and am constantly working on projects that have multiple, separate projects within the same project. because of this I do all my editing during my business day and then when I leave for the day, I used to batch export the projects and the next morning I would come into work and be able to move onto the next thing. so far in FCP X I have not been able to find out how to do that. I know that in FCP 7 you could do it obviously, but I'm wondering...does FCP X have that same capability because I can't seem to find it and I don't really have the time to waste by exporting during the day.
    Thanks for your help,
    Scotty

    Hey Scotty,
    Andynick is correct about the batch export workaround.  The way I do it is this:
    1.     Go to the Project Library
    2.     Select the first project you want to export
    3.     Go to file>Send to Compressor. (I set a shortcut -Sift>Option>C from preferences, If you need help with that let me know.
    4.     Repeat this process for each project
    5.     Go to Compressor (it will already be open)
    6.     Now here's where it gets kind of anoying, You need to choose which batch you want to make your main one. Pull off the tab on top and drag that project into your prefered batch, then close the old tab.  Now you'll have two projects in your chosen batch.
    7.     repeat that process for the rest of the batches Compressor created.  When you're done you should only have one batch open with all of your projects in it.
    8.     Submit the batch and let Compressor do it's thang.
    Things to note:
    When you send a project to compressor, it will automatically choose your default settings and location.  If you want them to be different you'll have to do it mannually or change your defaults before you begin this process.
    FUN right! Hopefully Apple will fix this so you can at least select multiple projects in the Project Library to make it a bit easier.
    If anyone has a better workflow I am all ears!

  • Can you change export setting?

    Any way of changing the export setting on LiveType? I'm working with dvcpro codec 720 60 and the default export is Animation. Anyway of changing this on LiveType? Thanks!
    *Taking it to FCP7 and trying to match Sequence settings
    Message was edited by: Chulo01

    LiveType always exports as Animation because of the Alpha channel.
    There is a setting for 720 HD in Edit > Project Properties. You will have to customize the frame rate if your FCP Timeline is 60P. Easy enough to do, just type in the numbers.
    Instead of rendering a movie, you should save the LiveType project file and import that into FCP (it has a .ipr ending). You will have to re-render both the .ipr and the .mov output from LiveType. Save yourself a step and just import the .ipr. It can be treated exactly as if it were a video clip.

  • Can you save Export Settings?

    Title says it all. I can't believe you wouldn't be able to, but I can't seem to find a way. Once I get that perfect setup, I don't want to lose it.
    Thanks!
    sjlocke

    Nope. Only the "Most Recent" settings (those used last) are available. Once you switch to a different export option those become the most recent (removing the older settings).
    On a Mac we use AppleScript to create export settings and can just drag and drop a .mov file onto the Droplet to export.
    We also have a new app named Automator that can create workflows.
    QuickTime for Windows is scriptable.

  • Can you use an image button to load a CFWINDOW?

    Is it possible to use an image to open a cfwindow instead of
    a regular button input type?

    All I had to do was to use a regular link instead of using
    the input tag. This is because the OnClick event can be used in a
    input that has a type of button and on regular "<a href..."
    links. However, you cannot use the onClick when you have an input
    type of image.

  • Can you re-export an nfs mount as an nfs share

    If so what is the downside?
    I'm asking because we currently have an iscsi san and a recent upgrade
    severely degraded iscsi connectivity. consequently can't mount my iscsi
    volumes.
    Thanks,
    db

    Originally Posted by David Brown
    The filer/san NFS functionality is working normally. I can't access
    some of the iscsi luns. Thinking of just using NFS as the backend.
    Which would be a better sub forum?
    Thank you,
    db
    Depending on which Novell OS you are running.... this subform is for NetWare, but I suspect you are using OES Linux.
    I've never tried creating a NCP share on OES for a remote NFS mount on the server. My first guess would be it is not allowed and also not a good practice. You could however, with this situation and if you are running an OES2 or OES 11 Linux server, try configuring an NFS mount on the OES server and then configuring the NCP share on that using remote manager on the server.
    What I would recommend however to see if the iSCSI issue cannot be fixed or worked around.
    Could you describe a bit more of the situation there/what happened and what is not working on that end?
    -Willem

  • Can you tell me if these websites load for you?

    www.postgresql.com - I get 'connection was reset'
    www.stackexchange.com - Page doesn't load properly
    In Internet Explorer I get the same results
    In Chrome both pages load properly
    I have tried clearing history/cache/cookies
    On 64bit Windows 8.1

    Both of the above sites load correctly for me.
    Please check if all your plugins are up-to-date. To do this, go to the [http://mozilla.com/plugincheck Mozilla Plugin Check site].
    Once you're there, the site will check if all your plugins have the latest versions.
    If you see plugins in the list that have a yellow ''Update'' button or a red ''Update now'' button, please update these immediately.
    To do so, please click each red or yellow button. Then you should see a site that allows you to download the latest version. Double-click the downloaded file to start the installation and follow the steps mentioned in the installation procedure.

Maybe you are looking for