ActionScript 3.0 :: References Variables Across Classes?
Jan 12, 2012
I'm building a simple Pong-esque game and I've 'hit' a problem. I'm having an issue with referencing one variable from one class into another. Sounds confusing to me, even harder to understand.
Basically I've got this in my "game.as" class:
ActionScript Code:
public var pongBall:ball;
and in my "player1.as" class I am trying to get said ball to bounce off the player's bat on contact. I think I have the coding right for it apart from trying to link it to the ball from game.as! So far I have this:
ActionScript Code:
public function bounceTest (event:Event) {
if (this.hitTestObject("game.as".startGame.pongBall)) {
Long time ago I've been creating some as 2.0 projects, all of them based on the code within the timeline. I wanted to start learning as 3.0 based on classes rather on timeline but I find it confusing and difficult to understand introduction into the classes. I can't get to understand why the following example is not working :
I've got 3 files: main.fla with main class "Main"
Code: no code Main.as
Code: package { import flash.display.MovieClip; import projectconfig.Configurator; public class Main extends MovieClip { var projectConfigurator:Configurator; [Code] .....
I have four movie clips in my library that are defined as classes: Option0, Option1, Option2 and Option3. I have four buttons that pass a different value from 1-4 to a function. I want to add the clip to the display list that relates to the passed value. In AS2 it would go something like:this.attachmovie["option"+currentVal, "newOption", this.getNextHighestDepth()];
Before this application runs, I have to do some basic intialising - load up some stuff, build the display list, check I've got the right xml, wire a few objects together. I'm used to doing all of this stuff in the constructor of Main() - my main application class, but it gets a little unwieldy. Would there be any mileage in offloading this into a command class? Is that common practice? I was thinking that way all that Main() would have to do is just listen for events and manipulate methods of the other main classes. The only thing that concerns me is that Main needs references to the main classes and to add event listeners etc. This could be tricky if it's all set up in a command...
I'm pretty new to working wth custom classes, but so far everything has been working great - up to the point where I create more than one instance of the same kind of class. For example:
[CODE]...
Do I simply have to call the arrays different names??? I really don't want to, shouldn't by creating two different instances you subsequently create two different arrays in turn?
Imagine you have one main document class wherein you have some variables that make your objects move or roatate. Now, you make another class in which, for instance, you draw a rectangle (with the graphics class) and want the rectangle rotate in the same way your other objects on the stage rotate. You'd probably wish to access the variables from your main class, so as to asign their values to your rectangle rotation velocity. The question is: how to access those values? Is it even possible to share variabless across all the classes?
What I have is a list of videos (FLV) and when I click on avideo name (button) I want the menu page to close, open anotherpage (the video interface page) and play the video that was chosen.I do not want the video to play on the menu page but on it's owninterface page. I am guessing I will need to save the String namein an outside file for the video class to grab. Once the video hasfinished playing I want to go back to the menu page.
What I am trying to do is pull data from an XML file so that I can store paramaters for my FLV player (i.e. flv link, dimensions, video name, etc) I can get the data from the XML file and story it in a dictionary but I am unable to access the data from my main class. I know it has to be something pretty simple but I think i have been looking at it to long to see it.
// Main.as package includes.action{ import fl.video.FLVPlayback; import flash.display.*; import flash.events.*; import flash.net.URLLoader; import flash.utils.Dictionary; import includes.action.XMLData; public class Main extends Sprite[code]..........
basically with all my traces this is what I get back...
// Trace dataVIDOEXML COUNT: undefinedELEMENTS: nullMAIN:LINK: nullWe are in LoadXMLname - no get: mortgagename - get: mortgage
The trace for Elements and Main:Link should give me back the name of the video but as of yet its either returning NULL or undefined.
I want to send the contents of a variable to a class where it can be used in its functions. Since I have no experience with object orientated programming what so ever I tried to break it down into real simple code so I can understand better what's going on and how I can implement it in my main code.I made a test file and a test class, basicly I just want to give a variable contents in my main code, then send the variable to the class so the class can trace it. But no matter how I try it i always get "Testoop.as, Line 6 1120: Access of undefined property test.Here is the code:
so this is the FLA: import Testoop; var test:String;
I've done a search and all I could find are creating global variables through Classes.
Is there a way of creating them on the timeline? I have a preloader.swf that loads another swf to itself and would like to read the values off of the parent.
ActionScript Code: class Vector2d extends Math { private var x:Number;
[Code]....
I can't seem to get my private variable, x, to be private. From my understanding of private variables, tracing n.x should throw an error, and adding 150 should throw an error. I've tried changing the variable's name, and the cast type, to no avail. The first trace goes through, the addition goes through, and the second trace goes through.
I'm new to classes, so I could easily be overlooking something vital. But the vars need to be private, because I want to use get/set to update the variables when one or another changes. For instance, if 50 is added to the y value, the magnitude and unit vectors would change, so I want to update them using getMag and getUnit. That whole system would be thrown off if the user had direct access to the properties.
ive written a class to control my content panels on my site. They work well! Currently they controll all the positioning perfectly on there own. What I am having trouble with, is how do i pass variables into my classes. For instance, my main content panel, has variables in the class: public var contentState:Number; Now, what I would like to do, is have movieClips on my stage, or 'buttons' that will be able to change 'contentState' within my class.How do i go about passing these variables?[code]
Let's say someone clicks a next button in the FormClass. That dispatches an event "nextForm". Documentclass is listening for this event, and displays the next page. But it needs to read a value (selected radiobutton) from the ListClass. What would be the best way to get this variable to the documentclass?
I am having this issue were I can not access any variables from any other class![code]Now, from my other variables, that is what I do, I don't understand what I am doing wrong?
I need to know how to reference variables in other classes. I have been avoiding this by referencing variables from the Main class, where they are created. But at this point I would like to be able to have the option and it would make me a better programmer.
Say I create a movieclip in the Main.as
Code: public var Enemy_mc:Enemy = new Enemy(); addChild(Enemy_mc);
[Code].....
How do I do that^ without creating a variable in Main.as and having it check Background.as for variable updates?
Can I do something like "Main.Enemy_mc += 5;" like I can do in Main.as to variables that I have created in Main in other classes?
If we have declared some variables on a particular frame, say frame 20 in the actionscript coding window, can we use these variables defined on a frame in a class? Is there something like a global variable which must be declared to do this?The class extends to movieClip and it has been encapsulated by a movieClip which is then put on the stage to run it when the corresponding frame plays.
I have this problem from time to time with AS3 where I extend a Class and then try call methods and variables which are public from the new class but I get errors that method or variable doesn't exist. My IDE recognises the methods and variables though.[code]When I run the script flash hates it. I thought when you extend a class it was supposed to inherit its properties and methods?Does anyone else have these problems? I shouldn't have to cast it as Box. I swear I have this working in a project but cant see the different in setup?
I was wondering if ActionScript had some way to call functions and classes from variables, like they do in PHP:
function funcname() { print "Potatoes come from tree"; } $function = "funcname"; print $function; // Prints out "funcname" $$function(); // Prints out "Potatoes come from tree"
In case you don't know the syntax for PHP, you should know that anything perpended with a $-symbol is a variable.
I'm working on a game. Yep. I have the main class where I control all the stuff that's packed in external classes. My current issue is that I listen for a mouse event to happen, and when the left button is pressed, I add a child to the stage.[code]...
However, I want to set all the stats of the bullet in an external class called "Rock". In the main class I just attach a movieclip to the stage, and the behavior of this MC is supposed to be controlled by the Rock class. The problem is I dont know how to access the bullet variable from the Rock class.
m new to as3 & am trying to make a platform game. i'm just not sure how to define the objects & variables. like my character & any other object i want it to collide with will be sprites, but im not sure where to go from there.
I have a menu movieclip that has several buttons, each with listeners writtin in the movieclip's actions layer in Frame1. The script goes something like this:
I've got 3 coloured balls and 3 zones which any of the balls can be dropped in. The idea is that once a ball is placed in a zone, it stays in that zone and no other ball can be added to that zone until the current ball is removed.
I've got to a point so that any ball can be placed in any zone. However, the problem is there seems to be some hierarchy with regards to the balls. ball0_mc seems to be the chief ball, and will replace any of the other two balls if there placed in a zone, instead of snapping back to it's original position because the zone is full. ball0_mc also can't be replaced by any of the other balls if its placed in a zone. ball1_mc is the next one down the line and when in a zone, can be replaced by ball0_mc if its dragged over it, but it cannot be replaced by the third and final ball2_mc. ball2_mc seems to be the runt of the pack and can be replaced by either of the two other balls when its in a zone and cannot replace any of the other balls when they're in a zone.
Hope you're still with me?! So, what I'd like to do is make it so each ball is equal, so when any ball is placed in a zone, it can't be replaced with another ball until the current ball has been removed...and they live happily ever after in the land of ballshire.
Here's my code. I've created two classes, one linked to the movie clip balls called 'Ball', and another called 'EgoGame' which is being used as the document class for the main .fla file.
how subclasses,instances,and inheritance work. The below code isn't actual project code, it's theoretical code, generalized to a simplistic level so that we can talk about the big issues.Let's say I have animals_app.fla, with a "Dog" class MC and a "Cat" class MC. Both "Dog" and "Cat" are subclasses of "Animals"; animals_app.fla uses document class "Main".
Intuitively, I think Animals should declare that every subclass should have some animalSpecies, and each subclass will define the value of its own animalSpecies. It wouldn't make sense for Animals to provide any default value, because it will always be different per subclass. Is this correct? I had tried out some code similar to that below, and was perplexed because it seemed like whenever a subclass tried to define a value for its own animalSpecies variable, it was actually changing the value of the variable in the Animal class, but that's not what I want. How do I rewrite this code so that each subclass defines the values of variables it inherits from its superclass, without altering the superclass? And how would I define the value of variables for each instance of a class, so that I'm only changing the values of that instance, without altering the subclass?
Also, conventionally, what should be in my Main class? Only the addChild code which attaches MCs to the stage? Or should the values of variables be defined in Main? What am I missing? I recently read Foundation Game Design with Flash and didn't feel like the explanation was sufficient. I've tried scouring the web for OOP tutorials, but they're either too basic or too far over my head.where I should be defining values of variables for classes, subclasses, and instances?
does one protect this? I mean, Flash Cs5 ide has this little "protect from import" option but I don't think that's enough.I mean, the only thing I can think of is a scrambler.Something that would rename all variables, functions, and custom classes to some random hash. So something like myVar would be renamed to x41dDefh5kjFCe. It would be like a big "lol have fun" to someone who might manage to go that far.Still, that isn't enough. I mean, anyone else know of any good ideas or programs? Just trying to protect my work
The examples I'll use don't do anything - they're classes without ANY members - no variables, methods, anything.
Let's say I extends Sprite and call it MySprite.
I save it in test.core
[code]...
Now I create another custom class called MyWindow that extends MySprite.
I save it in test.windows
[code]...
Then I create another class that extends MyWindows (the example I'll use is a document class - but that doesn't matter - I've tested using an instance too).
[code]...
Notice that I'm not even trying to instantiate the helper classes - just having them there throws the error.
If there is only a single helper class, everything runs fine.
Also note that - as far as I can tell - this only happens when extending one class from another package, then extending that class with more than one helper object.I'm pretty sure there's no namespace bumps or typographical errors, as this is a very pared-down version of the original application.
EDIT: seems the problem exists even without the crossing packages - even extending MySprite in the document class with multiple internal classes generates this error.