ActionScript 2.0 :: Scope When Extending Mc Class?
Feb 18, 2005
I have this extremely odd problem. OK to start off I have an MC in my library with the linkage identifier "Interface" and the AS2 class "Player" (both without "" of course). Now, my player class looks like this.
Well... Doesnt work at all... In the class, there isnt a instance of i, so, how may i access this property inside a class function? But i still have an way to access the class.
I have a Debug class I've written, and I'd like to include a static trace() method in there, unfortunately I have no idea how to then access global / top level trace as effectively I've blocked it with the local static scope.[code]
What is the scope of a class created in Flash? If you create a class on the main timeline, can you use it anywhere in your project? If you use your class in a a movieclip, can you use that class outside of the movie clip?
I recently completed a tic-tac-toe game in AS3, using some simple function-based code I had written in C many years ago.Now I'm on a quest to do it the "right way" using OOP techniques and best practices.Everything is now divided into neat little packages, it looks pretty, and the last part of my journey is to get all the little buggers to communicate with each other.I want to move the code which holds the game state from my main to it's own class in com.okaygraphics.model.GameState.The problem is nearly every other package gets and sets these game state properties.I'm trying to figure out the simplest way to encapsulate this stuff, while still allowing my other classes to access it.
1) Do I need a constructor? I mean, my program will never have more than one GameState. If I should call my getters/setters as instance methods, how do I get each other class to reference the SAME instance from their respective packages?
2) Do I even need getters and setters? Perhaps the class could just have 3 public properties? If so, how would I acheive the proper scope with regard to my other classes?
3) Should I assign everything to the class itself using the static keyword? If so, how would I implement and use those static methods?
4) Is this a mistake? Did I totally just program myself into a corner?
Specifies the value of thisObject to be used within any function that ActionScript calls. This method also specifies the parameters to be passed to any called function. Because apply() is a method of the Function class, it is also a method of every Function object in ActionScript. i don't get how "thisObject" is accessible from within the function invoked with it's apply method i'm trying to pass the scope of one class to the function of another so that the keyword "this" in the target function refers to the passed scope or am i misunderstanding the apply() method? it appears to behave differently between as2.0 and as3.0 as well, try this example code from the adobe docs
I have 2 class. Main class and a subclass (being an image loader).When the subclass has finished loading I want it to access a timer function in the mainclass.Code: Select all1)mainclass |> subClass.loadMe();2) When subclass load finished.3)Subclass |> mainclass.startTimer();This i dont know how to do.
PHP Code: import classes.LevelObj; var newLevel:LevelObj = new LevelObj(); var levelListener:Object = new Object(); levelListener.onLoaded = function(oEvent:Object) { [Code] .....
Now this runs great but in the loadLevel function of LevelObj.as, when I receive the event from the GBXML class that it has finished loading I want to call another function within the same class (LevelObj) to continue with further processing the XML data. What I make of it, is that I am still within the scope of the myListener object. Should I use a Delegate function here to get to the function within the LevelObj scope?And how about properties from the LevelObj scope? When doing a simple trace of some testVar I get undefined. Logical ofcourse because it is not within the same scope. But I am stuck here.
This is the part that should contain the call to the function.. PHP Code: myListener.onLoaded = function(oEvent:Object):Void { trace("LevelObj.XObj > "+oEvent.success); if (oEvent.success) { trace(testVar); //CALL FUNCTION HERE IN SCOPE OF LevelObj } else {
I want to add a property to the MovieClip class. I just have a bunch of MovieClips that are placed on the stage by reading an XML file and creating lots of clips according to the information in them. Now, I need to know which MovieClips were created below previous clips, and I figure that the easiest way to do so would be by extending the MovieClip class and add an order property.I have some problems though: I don't know how to set or get this order property within the main clip, I don't know how to place this clip within my movie, and I don't know how to create them dynamically (do I just do something like var myNewObjectOfExtendedClass : myExtendedClassName = new myExtendedClassName?)
This is the code I have on my extended class, called Expando.as:
I made the transition to AS3 two years ago, but I still carry with me old AS2 habits. Could someone please help me understand how I extend a custom class correctly. I have the bad habit of putting most of my code in one .as file (the Document class), but I use a few custom classes now and then. What I'm tring to figure out is how I would extend a class of this type:
public class ClipDragger { private var _clip:MovieClip; public function ClipDragger(clip:MovieClip) { _clip = clip;
[code]....
For example I would like to add a MOUSE_MOVE listener, and also add actions to the drag function.
I'm having an issue extending a class in the JWPlayer API, but I think it's probably more of an issue of the way I'm extending the class in AS3 rather than the class itself. Here is the code:
All three of the final functions do not return values even though I have event listeners only calling those values one Event.COMPLETE (of the loaded SWF that contains this script).
am attempting to make a simple asteroids game using push button engine. In the game the ship should fire when the user pushes the spacebar button.To do this my KeyboardController class should make a new instance of the Bullet class on every tick when the spacebar is down.The problem is for some (probably simple) reason I can't extend the Entity or IEntity class. IEntity is an interface so I understand why I can't extend that, but I'm not sure why it's not letting my extend entity. Heres my code for calling the bullet constructor:
if (PBE.isKeyDown(InputKey.SPACE)){ var _newBullet: Entity = Bullet(); }
By this question, I don't just mean add a final to your class name.I'm talking about, let's say that you have a class that only one other class uses, but should not be accessed by no other class. Is it possible to say in the extended class that only this other class can extend me?*Change* Also, can you restrict which classes are allowed to initialise it?
I have an AS file named MovieClipTLnd which I created to add a property to the MovieClip class, plus a function to trace the current value of the property I added. I works out just fine. But when I do the same trying to extend the Button Class, it won't work.
check the last lines of this LiveDoc, a few days ago someone posted a comment regarding this problem
[URL]
I know there are some workarounds for this problem... like embedding the button into movieclips and assigning properties as objects, but I need to know if it's possible to Extend the Built-in Button class itself just like it can be done with the MovieClip Class.
extending a class from MovieClip? I could just make a movieclip variable in the class to make it simpler. I heard if you extend from Movieclip it makes it feel like its dynamic because you have frames (gotoAndStop, etc). However, it allows me to have direct access to variables (or this.) instead of somemc., and I believe thats faster because 1) smaller name variable lookup, 2) no get function call.
I've been going through the OOP AS 2.0 tutorial here on Kirupa, and I was curious WHY this code is in a class which extends the MovieClip class and is used to affect a linkage item in the library:
Code: // init method for arguments which in other normal // circumstances (non-MovieClip classes) would be // given to the constructor. Not an option with MovieClips
[code].....
Is there something undocumented about why I wouldn't pass those parameters in when instantiating a new instance of the class in question? What is different about extending the MovieClip class?
I have class that subclasses fl.controls.DataGrid. The function below from the DataGrid superclass throws a compile time error (implicit conversion fl.controls.DataGrid to DataGrid) when the subclass resides in an unnamed package.If I place the subclass in a named package, the error disappears. If I use a different class name (e.g. DataGrid2), the error disappears.I never intended to leave the subclass in an unnamed package. However, I am curious as to why the unnamed package is preventing the compiler from seeing that DataGrid is a subclass of fl.controls.DataGrid.
Code: public function addColumnAt(column:*, index:uint):DataGridColumn { var dataGridColumn:DataGridColumn;
I'd like to write a class that extends String, changing the functionality of several methods such as charAt to incorporate the Welsh alphabet. The reason for this is that the Welsh alphabet is as follows: as you can see, some "letters" actually contain two characters, which messes up any charAt operations, etc.
Is it possible to extend String? When I try, I get "base class is final".
I found this thread on another forum which talks about doing this, but has no mention of it not being extendible:[URL]..
i have class A, then class B which entends class A, then class C which entends class B.now in class A there are couple of empty methods currently defined as protected.in class B these methods are also empty //i dont know how to make this exactly, they should obvioulsy be here as well because... -> then in class C i want to override these methods and actually do something in them.so how do i stretch these empty methods from class A to class C?
Code: class A: protected function rollOverHandler(e:MouseEvent):void {} class B: override protected function rollOverHandler(e:MouseEvent):void {
I have an AS file named MovieClipTLnd which I created to add a property to the MovieClip class, plus a function to trace the current value of the property I added.I works out just fine.But when I do the same trying to extend the Button Class, it won't work.check the last lines of this LiveDoc, a few days ago someone posted a comment regarding this problemknow there are some workarounds for this problem... like embedding the button into movieclips and assigning properties as objects, but I need to know if it's possible to Extend the Built-in Button class itself just like it can be done with the MovieClip Class.
public function addNewMc():void{ var newMC:MovieClip= new MovieClip(); this.addChild(newMC); } public function removeOldMc(newMC):void{ this.removeChild(newMC); }
How can I create a new MovieClip within a method, which can be used throughout the class, without defining it at the top of the class? And for extra points, without using return. I can get it to work, if the first function addNewMc returns the value newMC, and passing that to any other methods.
I am creating objects for a game, they are all sprites. but I also want them to implement an interface. Is it possible to do both ? If not, how can i have an object have the capabilities of a sprite and also have it implement an interface. I am wanting to create another class that checks all my objects to see what datatype they are and evaluate them accordingly
I am trying to extend the TextItem class in Flex 4 but I keep getting the following error: Could not resolve <custom:txtIdNumber> to a component implementation.
My txtIdNumber.as is as follows package custom { import spark.components.TextInput; public class txtIdNumber extends TextInput { public function txtIdNumber(){ super(); [Code] .....
Initially I thought that I might be extending the class in the wrong way, but all the examples I found look the same.
I don't how to describe the situation in short, so I am going to describe it in details.
I have created a class, extended from MovieClip. It looks like this:
// Libraries are imported public class WindowObject extends MovieClip { public function WindowObject():void { dragArea_mc.addEventListener(...);
[Code]...
When I clicked on the errors, they redirected me to the WindowObject class.If I don't create new classes, but just write the additional functions on the MovieClip directly, and set back the base class to be WindowObject, it works fine again.