ActionScript 3.0 :: Class Override Behavior In ApplicationDomain?
Nov 9, 2010
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 have two datagrids and I want to override the behavior of the tab-key event, so that it goes to the next datagrid, when the cursor reaches the end of the first datagrid columns.
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 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 have learned that there is a class called Function which is used as a blueprint for all as3 functions. Is there a way to override the call() function within the function class so that a trace can be made when any/every function is called?
I always have a question about override custom event. I am not sure why or what do to inside override function. I searched google but didn't get too many feedbacks. EDIT: My projects seem work fine even though I use my custom event without override. Anyone could explain it?
That is i have called one AA class in to stage. AA class is extends from BB class. BB class extends from CC class.CC class extends MovieClip. In CC class i have given CLICK event trace("this is CC class"). i am also given for AA class CLICK event ("this is AA class ").When I Click the AA in out put panel "this is CC class" ,"this is AA class ") i want to stop CC Class mouseEvents.
I'm having a total brain fart right now because I haven't dealt with AS2 library linkage classes in a while. I want to be able to let a designer assign an object in the library to a specific class and have that class listen for changed _x and _y values.I have the class made up that extends MovieClip:
Code: class CoordinateMonitor extends MovieClip { public function CoordinateMonitor () {} }
But I draw a blank now on how I'm to monitor _x and _y values for the clip. I'm pretty sure I remember it being possible to do this and declaring an overriding function ("public function set _x(val:Number) { super._x = val; }") does not work as intended.
I have two child classes ClassA and ClassB both inherit the same base class.
I also have a function that has a parameter which could be an instance of either child classes.
function Test(instance):void //instance is either a ClassA or ClassB instance { instance.DoSomething(); }
However, when I run the test, it's always the BaseClass.DoSomething() get called. How can I use the same function (DoSomething()), but call child class function instead of the base class one?
I got a background asset loaded then I want to add a textField above that asset. How do I do this. It sets behind. And I can�t figure out how to override the IDisplay class.
Is it possible to externally override a public function of a class (as opposed to override via inheritance)?
For example:
Code: Class Foo {public function doFoo():void {trace ("Foo"); } } Such that:
[Code]...
I know this is possible in JavaScript and ECMAScript, but the compiler won't let me get away with this kind of mischief in ActionScript, from what I've seen: It barfs up a 1168 Illegal Assignment error as soon as I attempt to assign a new function to doFoo.
I'm thinking specifically in terms of a "hot fix" solution where you deploy a small swf that replaces a specific chunk of code in a larger application, without the need to recompile/deploy the full application (or even see the sourcecode for that matter, just know the API).
i know its easy to override a function of a parent class, but I need to be able to override a function for a class on movieclip.. see highlighted code.
Is it possible to override/replace a method of a class in AS3? When I say "replace", I don't mean subclass it and override it. I mean I literally want to replace the existing method with my own. For instance, AS3 has the built-in HTMLLoader class which has a load method. I want to say, in essence: HTMLLoader.load = function() { trace("Overridden"); }; Therefore, when *anybody* makes a new HTMLLoader object and calls the load method, it will call my method instead.
I've tried a couple things, and so far I've gotten this far: HTMLLoader.prototype.load = function() { trace("Overridden") }; And I compile it with -as3=false -es=true -strict=false. The problem is it doesn't override the already-existing load method. It looks in the class first before looking in the prototype, thus making it not work. There must be a way. Even if I can't override it, can I proxy it like a decorator in Python or a macro in LISP? (So mine gets called then it gets called.)
override a custom class method with a function expression? For instance, if I want to change the destination of a button on the fly, I could theoretically type:
Code: var new_destination:Function = function(evt:Event):void{ go_to_new_place();}; myButtonClass.mouse_clicked = new_destination;
but unfortunately that generates an error because the class method "mouse_clicked" is already defined in my class (with the eventListener tied to it). I tried using the "override" keyword in the Function Expression but that didn't work either.
Lets say I have the following inheritance hierarchy: Code: Select allpackage { public class ClassA { protected function foo():void { // do something }}} package { public class ClassB extends ClassA { [Code] .....
Now this is all well and good, as the call to ClassC.foo() will propogate through the inheritance chain; C > B > A. But what if I want ClassC.foo() to call foo() that is in ClassA and bypass the method call in ClassB? I have tried the following:
* Cast the method to the super-class type I want to execute, but this does not work as intended. Code: Select all... override protected function foo():void { // do something related to Class C // call ClassA.foo ClassA(this).foo(); }
I have a videoplayer with a custom skin class. I want to override the functionality of the fullscreen button. When I add an click event, the player still goes into fullscreen mode. How can I prevent the fullscreen event from firing?
I'm having some troubles with the use of interface and inheritance in AS3. I've done lots of OOP in the past and what I'm trying to do seems obvious to me, but doesn't work in AS3. The question is : Is it possible to override a function that return an Object of class A, and make it return an Object of Class B which extends A ? It seems not to be possible, since I'm getting a signature error in Flash, when compiling. For example, the following set of class do not compile (the code in function definition doesn't matter):
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 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 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?
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'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...