ActionScript 3.0 :: Super.super.someMethod() - Call A Method In The Super Class Of A Super Class?
Dec 15, 2009
Is it possible to call a method in the super class of a super class? I tried the above and it doesn't work, unsurprisingly. Only way I've been able to do it is to store a reference to a super.someMethod in the super Class (eg. var superMethod: Function = super.someMethod) and call that instead. Seems reasonable and it works but wonder if there is an in-built method for doing this?
I am trying to create a spark datagrid item renderer. This item renderer extends a checkbox, and implements IGridItemRenderer public class CellCheckBoxItemRenderer extends CheckBox implements IGridItemRenderer
When I implement IGridItemRenderer, I need to implement the interface methods, I am having a problem with the following methods:
I am trying to extend the new AutoComplete component from Adobe. In two different places I need to bypass the AutoComplete methods and get right at the ComboBox methods.
I was told that super.super.someMethod() works just like it does in Java. But I keep getting Compiler errors:1084: Syntax error: expecting identifier before super.Any suggestions other than just cutting and pasting the code and extending the AutoComplete superClass?
I always don't call super() when I extends Sprite.But doesn't not calling super() cause any problem?Till now, I don't have any problem and I have never seen code which call super() in constructor which class extends Sprite. How about TextField? I don't have any problem about TextField, too. How to know whether I should call super() or not?
public class Example { public function Example () { }[code]............
You can see that the two last classes extend the first one, and both have the 'variable' property. In case that I have an instance of Example and I am sure it is also an ExtendedExample OR AnotherExtendedExample instance, is there some way to access the 'variable' property? Something like
function functionThatReceivesAnExtendedExample (ex:Example):void { if(some condition that I may need) { ex.func()
I'm not really asking how. What I'm asking is, is it possible? And I ask because I thought it was not - certainly it didn't work in AS2 - and yet that's what I appear to have done. Am I going crazy? Structure: A SWF (#1) with a class NewActivity that extends class AActivity. Another SWF (#2) with a shared library of code in it, including AActivity. A third SWF (#3) which loads the library followed by SWF#1. Here's what happened: I didn't expect AActivity to be able to be shared. I mean, it should be compiled no matter what in SWF#1, as SWF#1 includes a class that extends AActivity. I had added some properties to the AActivity class, ran the project, and when SWF#3 tried to set those properties I was told they couldn't be applied. "Of course", I said, "I need to recompile SWF#1, because the code is now out of date. The version of the class there doesn't include these new properties.".
However, that didn't work. I got the same problem. Maybe, I thought, there's a definition conflict between SWF#1 and the library, so I removed the AActivity class from the shared library in SWF#2 for the time being. Only SWF#1 uses it, and it should already be compiled into SWF#1 as, like I said, it is extended by another class there. But when I ran the project, I was then told that the AActivity class could not be found at all! Looking at SWF#1 in a decompiler, there is in fact no mention of AActivity (I had up to this point assumed it was implied). So this left just one option: I needed to recompile the library in the first place, not SWF#1. I added AActivity back to the library, recompiled, and it worked.
To check I wasn't going crazy: I added a test property to the AActivity class and recompiled the library. The containing project - SWF#3 - then set this property on SWF#1, which had NOT been recompiled, and then read it back out. No errors. I should point out that the getting/setting of this property is done through an IActivity interface - AActivity is not being accidentally compiled into the main project (SWF#3), and the decompiler indicates this also. Am I going nuts? I really didn't think having a runtime shared super class was possible in any way. If it is, that opens up a whole new world of awesome, even though I've created this project on the basis of that being impossible.
i got a class(class1) that extends another class (class2)...when something happens in super class, i need to update the class1, soi need to trigger a function in class1 from class2... I know is bad programming, but is that possible? I'm confused
I am hoping someone can explain about subclasses accessing variables from the super class. I found that the subclass can only access variables which are set in the constructor of the super class. Is there any way around this?
I have the following scenario:i have a MovieClip and I created a linkage for it named A.
[code]...
what is allowed? how can I resolve the issue ? update ok this is an exact scenario but a more simple one that I still wasn't able to resolve. The original scenario is that I have a MovieClip called user_bg_me that has a linkage named user_bg_me that extends user_bg_genericthat extends 'MovieClip` inside user_bg_generic class i want to be able to modify elements inside the movie clip itself. using super.element_name provides an error that the property isn't found.
I dont know if that is normal, but this code create an infinite loop, because when i create a new instance of class Two, because of the extends, the class One constructor is called again, and creating a new instance of class Two, and so on...I know how can i get this fixed, but, what i want to know is, this is correct? Its a Flash bug? Isnt that way in AS3?
i have recently started a project that would require writing a set of classes and a small API.i know some basics of inheritance and extending classes but i still have some questions.
1) how should sub-class refer/communicate with super class.i think that dispatching events is the way to go but i have no experience on that. i have previously done it by having a parent set up a reference to itself in a subclass e.g
//i know that there is already a "parent" keyword in flash objects if i extend one but is that a decent way to communicate with super class
e.g SubClass.myParent.removeChild(this);//sounds a bad call
//but is it better if i dispatched an event that calls the removeChild() in the parent.i have is about dispatching events in a class that is likely going to be extended.
ActionScript Code: public class Button { //add event listeners[code]....
//now if i extend the Button class into another class, let say ControllerButton and want that button to dispatch different event. e.g ControllerEvent, i am forced to override and rewrite all the common stuff in the handler functions.how to avoid having to override allot of common stuff.
Now how is it that I can add the variable SPRITE which is a Sprite in the OBJECT_square class to the display list of MAIN class? I've tried addChild(SPRITE) and super.addChild(SPRITE). If everything works I should see a red square somewhere on the screen but right now its all blank, except for the text drawn in the MAIN class.
Basically I want it so i can just make a new OBJECT_square and it will draw itself without any more instructions from the MAIN class.
In Flex, lets say I have a super-class... something like: class SuperComponent extends DragStack { private var _childReference:UIComponent; public function SuperComponent() { // ??? addEventListener(FlexEvent.CREATION_COMPLETE, onCreationComplete); } private function onCreationComplete(e:FlexEvent):void { //The 'this[]' technique doesn't seem to work and causes run-time errors: //trace("Component found: " + this["myButton"]); }}
And then I make use of the following derived-class in my application (just a mockup MXML as an example): <!-- Component ChildComponent.mxml --> <mx:SuperComponent> <mx:Button id="myButton" label="Press Me!" /> </mx:SuperComponent> How do I go about verifying the presence of "myButton" from the SuperComponent class, and referencing it? Do I need to use getChildByName( ... ) ?
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'm trying access a static variable located of a super class through an instance of one of it's subclasses and I'm receiving an access of undefined property error (example of which below). Creating another static variable in the subclass and assigning the value from the super class will allow me to dot operate to it.
I'm having a problem using superclass constructor with arguments. I've searched all over for the solution and found some really useful advice. Problem is i;ve followed it and it doesn't work... not for me anyway. So i've learned that you need to callthe super constructor in the subclass' constructor to avoid this error. problem is, this code still gets the same error....
Code: **Error** C:Documents and SettingsMetjuDesktop\_GENERAL FLASHflashcommetjuphysicsVector.as: Line 41: There is no method with the name 'super'. super ( x, y );
[code]...
I tried clearing the ASO files a thousand times, restart flash, resave the Vector.as file and still nothing.
I'm trying to make a CustomLoader class that extends another class.In the contructor of my CustomLoader, i need to call super(myLoader:Loader) where myLoader is a Loader object. Problem is I need to listen to the complete event of the loader before passing it or i'll get an "Error #1009: Cannot access a property or method of a null object reference". but if i put super() in a handler function i get an "Error 1007: A super statement can be used only inside class instance constructors."
Here's part of my code:
Code: public class CustomLoader extends ParentClass { ... public function CustomLoader():void
If a constructor takes its parameters as a vararg (...) it seems to be impossible to create a subclass that will just pass on that vararg to the superclass.
There is a related question with fix for this same situation for normal functions: Wrapping a Vararg Method in ActionScipt but I cannot get that to work with a super call.
base class:
public class Bla { public function Bla(...rest) {
[Code]....
Aside from actually moving the handling of the parameters to the subclass or shifting it off to a separate initializer method
When invoking super() in my subclass, I can pass uints and strings as params to super, but passing a TextField instance that is on the stage of the library instance of the subclass fails. Why? Is there a workaround?
I want to end up with the following effect. Bitmap pencil quickly moves accross the canvas diagonally and reveals an image. The image itself is drawing so I kinda want to make the illusion that the pencil draws whatever is on it. I don't want the pencil to follow the actual line in the image just to ask like a mask and quickly reveal the picture. So I was wondering if there is any cleverer way to achieve this, instead of animating everything manually
Say I have a class B that extends class A.In class A, I have a variable that I've declared to be a function, which gets defined in the constructor. Now, in class B, is there any way to reference that function with the use of super.functionName()?
Thats the schematic of my the specific area of my program thats causing me trouble. In output i get "C Called" only. I'm guessing that on the return of the super() call to A() then it jumps back to C(), but id expect that the call stack could handle multiple super calls.
I recently put together a gallery based on examples that Stringy posted here.A couple improvements have been made, there is now a forward/back button that is sensitive to which photo you're on...thumbnails appear only on rollover. Run locally, it works perfectly.But there's a problem. For this particular project, there NEED to be 30 photos loaded in to the gallery, and they're biggish, average = 130k/per. When i'm running it live, the first 15 photos work fine (using the next/button) ... but once you reach the final 20...it CRAWLS. Most browsers I've tested it on crash at 28.Now, I don't know if this is just a feature of having so many images (if so, is there any way I can make a buffer of the next 5 images preloaded, and then delete those that were cached after I've viewed them?)
I am searching for a super basic example of loading xml into a couple of textfields. Everything I find is way more complex, looping through huge lists and adding children etc. I have 2 named textfields on stage headline_txt and body_txt. I want to set up an xml file that has 2 items, 1 for each textfield and AS3 to load and display them.
I have a Spaceship movieclip, with a movieclip Turret inside. Spaceship extends the Unit class, where I want to rotate the Turret. In my Spaceship constructor, I use super(this.turret); but this always returns null. Passing other variables works, and before calling super(), I can successfully trace this.turret So why can't I pass it to super? And how can I fix this? [edit] Perhaps it has something to do with the turret not being available/added to stage yet when super() is called? If so, how could I deal with that and get it "Unit" anyways?