ActionScript 2.0 :: Get Scope From Within Object/class?
Aug 24, 2009Normally when creating small apps, i create a small object something like this.
Code:
//Example
var theApp:Function = function(){
[code].....
Normally when creating small apps, i create a small object something like this.
Code:
//Example
var theApp:Function = function(){
[code].....
I have an object and would like to call a function from it, which the way I am trying to do it, does not seem to work. Here is what I have:
Code:
private function setTimer():Void
{
[code]......
In the first function homeL adds the 'restMenu' text field when it's called. In another function the hideTarget method is called and it checks to see if the objects name is "instance5" which is the name of homeL. Is there a way to link an objects name to the object because I get :
[Code]...
I add this actionscript code on the first frame. Variables are loaded but. The question is below the code.
[Code]...
Take a look at this code:
Code:
import mx.utils.Delegate;
class Test
{
[code]....
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 could do this way:
Code:
class Test
{
function Test(mc:MovieClip)
{
[code]....
But this way, doesn't sounds good
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.
[Code]...
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]
View 4 RepliesWhat 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?
View 3 RepliesI 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?
[Code]...
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
[Code]....
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.
View 2 RepliesHow do I fix this? With this code in my class:
function moveDelay():Void {
myInterval = setInterval(this.movePoints, delay);
}
I lose scope when it calls the function. "this" becomes undefined.
I have 3 files.
main.fla
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 {
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 have a simple object defined by an object literal, and have a couple functions assigned to this object. Inside the functions, I try to access global variables, and it only gets undefined. The Flex debugger tells me the variables are just right up the scope tree.Yes, I know I can access Thing by using 'this', that doesn't solve my scope issue though.Project Flex Compiler Settings: Flex SDK 3.4, Require Flash Player 10.x.Example:
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" creationComplete="Thing.bling();">
<mx:Script>
<![CDATA[
[code].....
I'm working on writing a tweening class in as2 that has a callback variable and I can't seem to find a good way to get the scope without specifically passing in a scope variable as well. This tweening class needs to work in classes as well as on the timeline. Here's what my codes looks like right now.params.scope[ params.onComplete ]( params.onCompleteParams );params is an object passed into the class. This works but I don't want to have params.scope in there.
View 1 Repliesknow if the index effect the scope of an object because I am creating a game and for some reason, I get an error like below
TypeError: Error #1009: Cannot access a property or method of a null object reference.
at com.objects::Torret/updateObject()
at com.objects::EngineApi/loop()
[Code].....
updateObject is the loop for all my objects. I have one centralized loop and in that loop it calls on an array of objects that have been placed on the stage. all of them containing the method updateObject. to update the status of the object. addGameChild() is a encapsulated addChild() , that not only adds the object to the stage, but places it in a array so it's updateObject() method can be called on. it is also used to make it easier for garbage collection.
You will find enclosed a ".zip" file in wich there's a ".fla" file, a ".txt" file and 6 ".jpg" images. Frame 1 of the FLA only has a "Preload" class/constructor found on another site and works well. Frame 2 launches the graphic interface construction. The file "externalVar.txt" has one variable "maxVin" with a value of 6.
I would like to know WHY i can't acces this variable from outside of the loadVars object's scope (i would better say from outside of its ".onLoad" methode scope). In fact, when i trace my variable "maxVinNum" from outside of this function, flash player return "undefined". Even if i declare "maxVinNum" on the _root (_root.maxVinNum). For information, at the start of frame 2, i have let an instruction in comment: //var maxVinNum = 6; When we activate this instruction, then the variable is directely declared and everything works well. This test allow us to verify that scripts are not bugged. Here is the script of frame 2, some of you may understand quickly what's wrong :
[Code]...
I'm not an experienced Actionscript user so I'm not sure what the normal way to associate a custom class with a movieclip that has been designed in the Flash IDE is. I made a class called Window to control a movieclip called TestWindow. There are some buttons in the movieclip whose
functionality I would like to assign the instance of class Window. How is this supposed to be done? Here's a representation of what I mean. I hope it is sort of clear. My actual problem is that the local variables are outside the scope of the onPress function but I also think there must be some other way of associating classes with movieclips that have been designed in the IDE.
My question deals directly with ActionScript 3, although it could possibly appear in other languages. Consider the global trace function found in AS3. Calling the method requires no imports and is globally available from all classes.
class A {
public function A() {
trace("Hello, A!"); // Hello, A!
}}
Now, what if I create my own class method of the same name? In AS3, if I have a class method trace and then make a call to trace elsewhere in my class, the call is made to the class method over the global function. Essentially, I've blocked my ability to call the global trace method.
class B {
public function B() {
trace("Hello, B!"); // no output
} public function trace(s:String):void {
// do something else.
}}
Now, I know the obvious answer is to say, "don't create a class method called trace." But what if I'm unaware of the existence of the global trace function? Or what if I have a desire to "override" or "block" the global function? Is doing so bad programming? Or is this just another example of how AS3 is a poor object oriented language?
Why I am losing scope on an array that i define as a private member in a class? I am able to access it from a couple of different functions but in one place inparticular it keeps coming up "undefined". What causes scope to be lost in a function for an array that is defined as a private class member?
View 4 RepliesI'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):
[Code].....
I have a class CoverPoint extends Pointwith some extra function.except for that ther is no difference. I would like to use the functions of Point with a return value of Point, to calculate those CoverPoints.Can i turn the return value into CoverPoint (since all the vars are the same, there shouldn't be a problem with that, right?), so that it can be stored in my var cP:CoverPoint;
View 2 RepliesI have a class in which I have declared an array. The functions in that class are designed to make changes to the array, but it's not working:
[Code]...
Anything I do to customerCheck treats it as if it were a new array. This is especially obvious when using customerCheck.push in addCharToCheck() -- the trace always shows a blank array before push and an array with one object in it after the push... then next time it does the same. I know I'm making some sort of fundamental error regarding the scope of the array within the class but I just cannot find any good information on how to fix it! Moving to AS3 (been coding it for all of about 3 weeks) is a nightmare so far, and it seems to be the 'easy' stuff that causes me problems
If I have three classes:
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()
Using Flash CS5 Professional I have created a symbol, dragged it onto the stage, and given it an instance name of GreenLight1. If I want to make this visible from the document class, I can simply do the GreenLight1.visible=true; and poof it's good to go when I test the file. As long as I stay in the document class I am good to go, but now I'm trying to move to another class and hitting ALL kinds of trouble just trying to get Flash to allow me to access this simple object. All I am looking to do is have this GreenLight1 go invisible (visible=false) when a certain condition occurs in this new class and Flash just won't let me access GreenLight1 at all. Things I've tried thus far:
stage is passed to the class and is referenced by _stage and is working just fine when I do _stage.addchild or anything like that. So I have tried "_stage.GreenLight1.visible=false;" and I get "ReferenceError: Error #1069: Property GreenLight1 not found on flash.display.Stage and there is no default value." My document class extends Sprite, so I figured I'd try the root function. So I tried "Sprite(root).GreenLight1.visible=false;" and I get "1119: Access of possibly undefined property GreenLight1 through a reference with static type flash.display:Sprite." I tried to create the Resource class as described therein. To which I came across the same problem that I started with in that it doesn't know what GreenLight1 is to begin with so I got "1120: Access of undefined property GreenLight1." Here is my code for Resource.as (am I supposed to pass something to this class from the document class?)
[Code]...
I have question regarding removing instantiated objects. Let's say i have a main class in which i instantiate a custom video player (or whatever) class:
[Code]...
From my experience, if i don't destroy for example event listeners from my VideoPlayer class and just remove VideoPlayer class the way described they still get fired with null exception messages etc. This is something that's bugging me for a while so i would really like to know what's best thing to do here?
When I use MouseEvent.MOUSE_OUT the target is [object MovieClip], but when I use MouseEvent.ROLL_OUT I get [object Bildspel] - and Bildspel is my class. The thing is that when I use ROLL_OUT I'm not able to delete the targets ENTER_FRAME event.
[Code]...
Ok. So heres what I am trying to do. I want one movie clip to follow another one that I move around with actions on the main timeline.The problem is that the follower clip is linked to a class file and I cannot find a way to find the players position.
[Code]...
I found myself loading a new XML file every day and so decided to create a small class that will load the xml file and return it.The class is loading the file but when i try to return it to a new xml object in the document class it doesnt load it.I think that it's something to with the return being in a nested function but i tried a few ways and non seems to work.
[DOCUMENT CLASS]
loadXML:LoadXML = new LoadXML();
myXML:XML = new XML(loadXML.loadXMLFile("gallery.xml"));[code].....