Flash :: Create A Separate Class Then Create An Object Of That Class Within The Main Class?
May 17, 2011
I'm new to Flash AS3. I started making a game and I am a bit confused. Let's assume that I want to create a game that has multiple levels/modes, how can I do this in an object orientated way?
When i create games in other languages e.g. XNA C#, i create a separate class then create an object of that class within the main class and run the game based on a simple statement.
I have a problem with classes. What I am trying to do is this: I create a main class and then i import another class into it.then I create an instance of the new class and add it to the stage.the problem occurs when im trying to use the new classes methods.
import classes.NewClass; var test:NewClass = new NewClass(); addChild(test);[code].....
I've been playing around with custom classes. My objective was to create a custom class (Testing) that would create a box when an instance of the class is created. I've tried three different approaches, however only (3) seems to be showing up. I'm just curious why (1) or (2) doesn't work?
Also is there a better approach than (3)? Since at the moment it's been created on _root. I hope the box can only be accessible through the instance. Since I'd like to incorporate the whole idea of public, private, encapsulation, etc.
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?
Imagine you have a MC used as a container for several other MC's used as buttons.Now, should I use the class of the container to listen for and to dispatch events. OrShould I create a seperate class for each MC inside of the container to listen for and to dispatch events.
In summary: One class for all, or several smaller classes dedicated to their respective MC.How far should one go with abstraction?.
Is it possible to create an object from a class with a dynamic name? I have the name of the class in a string, but I want to create an instance of that class.
I've been searching around trying to work this out for a while now. There's been various ideas popping up, like dispatchEvent etc but nothing that seems to be a clear, simple way of doing this.What I'm trying to do is call a function from a class seperate (but in the same folder as) my document class.Specifically, I want to 'spawn' an object and run a function within that object's class from my Main.as.The snippet I have at the moment is as follows;
In Main.as: var object:class_Object = new class_Object(); object.spawn();
i) Create a symbol called SimpleSquare. This should consist of a simple red square graphic
ii) Create a class file to define a class called SimpleSquare. This should be linked to the SimpleSquare symbol. SimpleSquare ashould have the following functionality: When the instance is placed on the Stage, it should start to disappear by decreasing its alpha at 0.01 in every frame (hint: alpha)
create a class that delivers the a text format to a requesting class. Unfortunately, even though when I trace the return it comes back with [object TextFormat], I do not see the results of the formatting. Heres [part of the clas trying to use the txtformatting class:
ActionScript Code: private function buildTF(msg:String = null):void { with (_tfield) { alpha = 1;
I've been hitting dead ends while programming lately all over, and I finally came to the realization all the code I have that is broken is because I don't know how to interact with instances of one class from within another. Here's the gist of what I am trying to do:
The problem is, if I address a single instance that is on the canvas, I get "access to undefined property targetClip", even though the document class can interact with it fine. If I target the class file of targetClip, I get "Implicit coercion of a value of type Class to an unrelated type flash.display:DisplayObject". It isn't just a problem with hitTest either, I'm having this problem with other actions, so there is some basic syntax I'm failing to comprehend.
I have been practicing and trying to understand how classes work and I was wondering if it is possible to create a class that can be reused by declearing the class only once in my fla file. Rightnow I create an instance of the class than I asign it to a MovieClip the problem is that I can only use it once and if I want to use it again I have to create another instance of the same class, something like this.
I have 1 class that extends movieclip, let's call it Class0. I have 1 class that extends movieclip, let's call it Class1.
I create an instance of Class0 on stage like : var myClip0:Class0 = new Class0(this, "Class1");
The class Class0 when initializing, will create a new movieclip (myClip1) and add it as child, as an instance of Class1, like myClip0.myClip1. But it's when i create that clip, i want to tell it, it's an instance of Class1, like :
private var myClip1:Class1 = new Class1(this);
Where Class1 could be any class.
How do i pass Class1 to Class0 so it can create it dynamically?? Do i have to use the apply function??
I'm trying to dispatch a custom event. So that my main document class can react when a nav button is clicked.I have a navbutton class which creates the dispatch's the event... and is handled by the onNavigate Method...
This onNavigate method works perfectly.... however when I try to create a listener in my main document class I don't "hear" the event.Here's part of the code from the main doc class...here's where I register the listener
this.addEventListener("NAVIGATE", doSomething);
here's where I should handle it...
private function doSomething(e:Event) { trace(e.target.name); trace(e.target._label.text);
I have written a Class for skinning the UI. The Class works by taking a movie clip name from the stage passed to it and create the skin for it.So I create an Object from the class such as this:
Code: var CBox:UI = new UI();
Now what I wanted to do is reference a movie clip from the stage to this CBox variable, so when a call the Class methods it will know which movie clip to work on! Since currently I have to do this:
Code: CBox.Skinning(content_mc, "content", 100, 200); or CBox.Over(content_mc);
As you can see Im passing the movie clip, content_mc, everytime. I just want to avoid this by creating a reference.
I'm trying to load a RSL library into a flash animation developed with Flash CS5 IDE, that extends a custom class and implements an interface. I have reduced the problem to the simplest setup and find that I can have my main class extend another class or implement an interface, but not do both at the same time if I want to load an RSL.I have a very simple class to extend:
import flash.display.Sprite; public class MySprite extends Sprite {[ code]...........
but if I want both I get the VerifyError: Error #1014 with MySprite not found and ReferenceError: Error #1065.
I have a document class called Main.as In the class constructor I have the following listener:
enter code here var listeningFORModeChangeToStudent:Sprite = new Sprite; listeningFORModeChangeToStudent.addEventListener(TellAllModeChangeToStudent.STUDENT,exp); addChild(listeningFORModeChangeToStudent);
[code]....
In a third class I make a call to the despatcher in the previous class:
enter code here var ThisTellAllModeChangeToStudent:TellAllModeChangeToStudent = new TellAllModeChangeToStudent; ThisTellAllModeChangeToStudent.tellAllModeChangeToStudent();
I have trace statements in eveything and from this I know the despatcher in TellAllModeChangeToStudent is being called.The problem is that the listener in the main.as is not calling the function exp.I cant see why and I dont know how to check if the listener is actually seeing the dispatch event?
googled it and hardly found any answer(seriously)need a quick solution for this:- How to create object from class that extends MovieClipSay i have a class name MC
I've read through the Sticky in ActionScript 3.0 forum and looked through other threads in the topic but maybe I'm not using the right search terms. My problem is creating a new object in the constructor method, I've created a package "com.weenz.shutters" and created many class files within that package. The compiler is giving me the following 2 errors for the "Window.as" file[code]...
I'm trying to create a NetConnection object in action script 2 and I get this error. I get the same error when I try to create a NetStream object. I've looked at many other examples using NetConnection and they don't import anything relating to NetConnection. Is there something in the Flash settings that I need to set in order to get this working?
I'm tring to create instance of class, when I got name of this class.I think better to explain my problem will be this code:[code]I invoke some Function, and I get error: [Fault] exception, information=ReferenceError: Error #1065: Variable Level0Img was not defined.
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?)
I have two classes. The Main class calls a function, which is defined in a Second class.I'm getting the following error:Error 1120: Access of undefined property myFunctionBasically, I am creating buttons in the Main class that will add a corresponding Child to an Object in the Second class (if you click one button, child x1 will be added, if you click another button, child x2 will be added, and so forth).Here's the relevant code for the Main.as file:
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: ... var videoPlayer = new VideoPlayer(...); addChild(videoPlayer); ...
And inside VideoPlayer class i have of course dozens of objects (movie clips, sprites representing different parts of VideoPlayer) and dozens of event listeners attached to them. My question is, if i want to remove this VideoPlayer class from my main class is it enough to just do: