ActionScript 3.0 :: Loaded Sub Swf - Want Different ApplicationDomain?
Apr 13, 2009
I have a main swf that is a container for various flash games. I want this "console" to be in a different applicationDomain as the games to avoid class/function naming problems. As I understand, the default behaviour allows loader and loadee to exchange information. How do I make sure that classes for the console doesn't interfere with the games?
I'm trying to load a swf compiled by the Flex SDK into a swf exported by the Flash IDE and instantiate the assets by way of getDefinition(). Normally this works fine with assets exported from the Flash IDE then loaded into another swf also from Flash IDE.This is how I could normally do this using only the Flash IDE:Loader - > Using same ApplicationDomain - > getDefinition(class)Now, using the 'Test.as' compiled from Flex SDK using the [Embed] metadata tag:Loader - > Using same ApplicationDomain - > getDefinition("Test_" + class)The problem is I'd rather not have to keep track of the asset libraries loaded to prefix the class name I'd like to get (('Test_" + class) vs (class)). Is there any way of doing this without referencing the library the class is being pulled from or without accessing the original loader? This way I don't need to know which swf the asset is coming from, just the class name that I could instantiate from the current ApplicaitonDomain.
I am loading a content SWF into a container and I want the content SWF to exist in a child application domain to the container. Therefore, the structure should look like:
I am loading a content SWF into a container and I want the content SWF to exist in a child application domain to the container. Therefore, the structure should look like:[code]That if-statement is being triggered, meaning the content does not recognize the existence of a parent application domain.
I have been developing two seperate flash projects and the time has come for them to merge. To do this i have decided that, rather than try to mash the code together, i will simply use a loader to load and unload the second SWF as needed. My problem is that the SWF to be loaded uses:
Code: var className:String = Entities[No]; var libraryDomain:ApplicationDomain = stage.loaderInfo.applicationDomain; if (libraryDomain.hasDefinition(className)) { var MyClass:Class = libraryDomain.getDefinition(className) as Class; item = new MyClass();
[Code]...
This works fine seperately, but when the SWF is embedded into the parent SWF it seems to use the parent's library rather than its own. (if i put an item in the parents library it can load it, otherwise it throws an error). Is there any way to keep the child SWF using its own library? and if not, any other way to do this?
The current implementation of the Flash Player ApplicationDomain with regards to override class definition seems like a giant security flaw to me.A parent SWF has complete control over what child SWF they want to load and add to its ApplicationDomain. It stands to reason that if the parent trust the child SWF enough to load the file, it should also trust the class definition defined by the child SWF and use those definitions.
In contrast, a child SWF has no control over where it is being loaded into, or if it want to be loaded into another SWF at all. Therefore, there is no reason for the child SWF to trust the class definitions defined by the parent SWF.I recommend changing the current implementation of the ApplicationDomain and allowing a child SWF to override any conflicting class definition in the parent's ApplicationDomain.
I'm using Flex Builder 3 to build what will be a fairly large project. I'm suffering from modules stepping on each other and a conflict between application/module. My structure looks something like the following:
How to access a public method in the swf loaded in a new ApplicationDomain?
ActionScript Code: var appDomainA:ApplicationDomain = new ApplicationDomain(); * var contextA:LoaderContext = new LoaderContext(false, appDomainA); var loaderA:Loader = new Loader(); loaderA.load(new URLRequest("application2.swf"), contextA)
I want to access a public method in application2.swf from the main swf that loaded it.
I'm accessing the classes from an externally loaded SWF so that I can "skin" SWF applications at runtime. Everything works fine but I'd like to make it as dynamic as possible and allow developers to access all the class definitions in a loaded SWF without having the FLA file or a list of their names.
I've refactored a whole project, splitting the main FLA file into 1 main FLA file and 10+ asset FLA files. Each asset FLA file main stage is empty and has no Document Class associated. Instead, each asset file's library contains a MovieClip linked to an .as class. The loader is first added to the stage, then is told to start to downloading the 10 asset SWF files.
When the download is completed, my application starts instancing the class coming from the asset files. Now, the problem is the following : when I try to access a stage instance from a downloaded clip (for example, a textfield that has been drag&dropped and named via the Flash IDE) , I encounter the #1009 error, saying the stage instance is null...
I have made a Flash app in which there is an class called "MyGame.Person" which has multiple subclasses "MyGame.PoliceMan", "MyGame.FireMan", "MyGame.Doctor" etc. "MyGame.Person" is defined in the main .fla file, but the other classes are each defined in separate .fla files. I have split each into its own .swf file so that I can extend the game without having to reissue the main .swf file.I then use a Loader to download each .swf file and call
var assetClass:Class = myLoader.contentLoaderInfo.applicationDomain.getDefinition(assetClass Name) as Class; to extract the class from the downloaded swf file. So if assetClassName is
I've refactored a whole project, splitting the main FLA file into 1 main FLA file and 10+ asset FLA files. Each asset FLA file main stage is empty and has no Document Class associated. Instead, each asset file's library contains a MovieClip linked to an .as class. The loader is first added to the stage, then is told to start to downloading the 10 asset SWF files. When the download is completed, my application starts instancing the class coming from the asset files.
Now, the problem is the following : when I try to access a stage instance from a downloaded clip (for example, a textfield that has been drag&dropped and named via the Flash IDE) , I encounter the #1009 error, saying the stage instance is null.
i m getting an error, i am loading an external child swf file to main parent swf, and want to access the document class of the child swf through parent swf document class using application domain. Now when both child and parent swf resides in same directory it's works properly with application domain means we can access the document class of the child swf see the attachment samedirectory.zip and when we move child swf and it's document class to sub directory that time we are unable to access the document class of the child swf see the second attachment subdirectory.zip
i m getting an error, i m new to as3, actually i am loading an external child swf file to main parent swf, and want to access the document class of the child swf through parent swf document class using application domain. Now when both child and parent swf resides in same directory it's works properly with application domain means we can access the document class of the child swf see the attachment samedirectory.zip and when we move child swf and it's document class to sub directory that time we are unable to access the document class of the child swf see the second attachment subdirectory.zip and give me right direction
I'm building a 10 channel mixer/remixer in Flash. Users can select a "song" to load from an xml driven combo box at the top of the application. In the document class, there is a function that takes the selected item from the combo box and loads in an external swf, which just serves as a library for the 10 sounds of a particular song. I then have to extract each of these sounds by their class names ("Track1", "Track2", "Track3", etc...) and send them off to their respective "MixerChannel" objects. As you can see, the following code block in the "initHandler" is pretty long and redundant. Is there any other way/shortcuts I can use to reduce the code a bit?
So with the help of others, I figured out the runtime font loading issue, and all was working great.Until we moved to the live environment, where apparently Flash is freaking out if I load my swfs from [URL]..
Can anyone tell me what I need to do to fix this? Here's the error:
Code:SecurityError: Error #2112: Provided parameter LoaderContext.ApplicationDomain is from a disallowed domain. In short, here's the structure. A Wrapper swf is embedded on a page.The Wrapper loads a child Player swf into a separate Application Domain, and then calls a public init() function in the Player to get things rolling, passing into the Player swf a reference to that newly-created ApplicationDomain the player was loaded into.At some point the Player decides whether or not it needs to load an external font Library swf for embedding subtitle fonts. It loads the font(s) as needed into the same ApplicationDomain that was passed into it (should be the same one it was loaded in itself, no?).
Once again, I've tried all sorts of combinations of code changes, but nothing seems to be fixing it. It all comes down to whether or not the original Wrapper swf is embedded via "www.domain.com" or "domain.com".
FYI, I have a crossdomain.xml file set up allowing both combinations of the domain name, and in each loaded swf (the Player and the font Libraries) I have a Security.allowDomain(); set with both combinations of the domain name as well. I resolved a similar security error similarly (a different externally-loaded swf), but that doesn't seem to be working for this.
I have a shell swf that is loading a swf. How do you have the loaded swf tell the parent loader to unload itself after the loaded swf finishes playing?
Im working on a project that has a main swf file associated with the document class. It loads XML that provides the text content for the project, then it loads a swf that contains a font in its library, then it loads the first of several content module swfs. When the font swf has inited, I'm registering its library font with Font.registerFont(), and using it in a TextFormat object. After everything is done, I can add code to the document class to create a text field on the stage of the main swf and format it successfully with the TextFormat object, but when I try to do the same thing inside the loaded content module swf, the text doesn't show up there at all.
I'm working on a project that has a main swf file associated with the document class. It loads XML that provides the text content for the project, then it loads a swf that contains a font in its library, then it loads the first of several content module swfs. When the font swf has inited, I'm registering its library font with Font.registerFont(), and using it in a TextFormat object. After everything is done, I can add code to the document class to create a text field on the stage of the main swf and format it successfully with the TextFormat object, but when I try to do the same thing inside the loaded content module swf, the text doesn't show up there at all.
I am in the process of building a site for an Architect... Jamie Fobert Architects (projects) I am useing transitions between the projects and am loading details/text and images externally through flashvars, php and a mySQL database. Within my transitions I have a a preloader on the forst 2 frames the code is as follows (taken from a Voetsjoeba tutorial):
[Code]....
This works pretty well if the content is within the .swf, but when it is loaded externally it doesnt preload it at all. Does anyone know how I can adapt/improve this preloader? or somehow ensure that all the content being loaded externally is loaded before the transition plays?
I have three btns on stage, clicking on each one i want them to load an external mp3.The problem is the previous loaded sound doesn't stop when a new one is loaded so I have all sounds playing at the same time
The following code loads correctly the xml file but not the stylesheet. Do I have to change the ordrer of some chunks of this code? (ta = textarea movieclip; in the css I only have, for the test, spectacle>item>title {font-size:40;})
ActionScript Code: function whattoload( eye:Number){ var ld:Loader = new Loader()[code]............
This works perfect for loading the said .swf and displaying it on my flash program. However I have a next button which When clicked I want it to increment so that It picks a new swift from the array.
ActionScript Code: var swiftI:Number = 0; var maxI:Number = 3;[code]...........
This also works well for my desired effects. However I need to remove the previous loaded .swf before the next one is loaded. How do I do this?When I try to use removeChild(ld); It doesn't work.
I am loading an externally loaded swf that uses a mask to transition in. When the user clicks a different button I am doing a gotoAndPlay that goes to a mask that "unloads" the content (it doesnt actually unload the info is just outside of the mask area. As soon As I jump to that section the movie is no longer loaded and just shows the container clip that I had created for it. The Container Clip is never changed and is the same throughout the whole process. The only thing that changes is the mask animation.I have tried both loadClip and loadMovie but no luck on keeping the clip loaded.
EDIT - I have narrowed it down. When I change the mask movieclip the movie unloads for some reason. Is there a way I can keep it loaded?