ActionScript 3.0 :: Way To Create Class Instances?
Oct 8, 2009
I recently learned how to use gravity so I made a bouncing balls program but I have an issue with the interaction between the frame timeline code and the class.The problem is that when I create instances with a timer, I declare the variable inside the timer function. And I want to add a blackhole sort of thing when I click down on the stage but I cannot access the object from the blackhole function since it's declared inside the timer.
I create 3 instances of the class below. I need to find a way to call them with a delay so they get added to the stage one after the other. Is there a class that lets me queue up functions? Or an economical way to do it with the functions built into flash.
I created a custom class (no arguments needed for constructor) and I wanted to create an instance of that class that can be accessed by AS from aywhere inside the SWF (i.e. globally from any function or class).So far the only way I can think of doing that is to create the custom class with an associated MovieClip Symbol, drag an instance of that MovieClip Symbol to the stage, and then give it an instance name. It seems like I can then use the instance name to access that class instance anywhere.
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 want to know how to make class instances into listeners and broadcasters, from inside each class. Here is what I am trying specifically... part of the Proj class... (projectiles, as a matter of fact)
Code: private function listen():Void { u.register(this); onUpdate = function(){ step(); // a function I have which makes the projectile move (not shown) } }
where "u" is another class, the Updater class with this code...
Code: class Updater { // const. --- make this a broadcaster public function Updater(){
[code]....
PS: What is the syntax for using AS2 code tags instead of just "[CODE|"?
I'm slightly new to Flash CS3 + AS3 combo, so its more of a lack of practice question. My question stems from the problem described here http:[url].... . Note, its not the same problem, its a new one.The Problem ,So I have multiple library assets (which are on teh stage) and I want to assign similar functionality to all of them.
Attempt 1: So I create the n assets, create a custom class in AS3, link them to Flash CS3 and obviously enough it gives me the error that multiple assets can't be linked to the same class.Obvious enough to understand (well not completely, because from a programmers background it doesn't make sense).
Attempt 2: Same as attempt 1, but instead of linking all the assets to the same class I make the base class the same class, and let the derived class be dynamically created by Flash on compile time.So the linking works, but the problem is, in my base class I have a method which does something (say an tween) on a child of the library asset. So if the assets on the stage/library are called asset1, asset2, asset3 (same name for asset name, class name, id name), each of them has a sub-movieclip called ... say 'foo'. now if I manually wrote a class for each asset, I could do 'this.foo' to play with the sub-movieclip. However since this functionality is in the parent class, I'm unable to do it.
P.S. If you're form a programming/OOP background, its basically a abstract class problem. My Base class knows how to doSomething(), but it needs aSomething, which is defined in the Derived classes. However I found out that AS3 classes don't support virtual(C++ )/abstract (Java) in the true sense of the word (unless I missed some obvious documentation).
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'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'm trying to parse an XML file, and use it to create instances of a custom class the fly in actionscript 2. (can't migrate to 3 for this project).I'm trying to make something happen like:
Code: for (var i:Number=0; var<n; var++) { instanceName="MyObject"+i;[code].....
Which doesn't work.When it's all done, I need to have n objects named MyObject1, MyObject2, ..., MyObject(n).
Is it possible to create 2 instances of 1 class (for example: "Header"). Add these 2 instances to the stage on different positions. This Header class contains some buttons and what I want, is: when I rollOver one of these buttons, both buttons in the 2 Header instances are "rollingOver".
I have a piece of code, that moves an array depending on it's type. If the array is of TypeA objects, it will change TypeA. If it is TypeB it will change TypeB. The issue with the current code is the repeative blocks.
[Code]...
Which stops working whenever I need to access any property (user) selectedInstance.testSomething();
Here's a piece of script I would like to condense into a single loop where the number of instances created would be dynamic:
Actionscript Code: //create instances of Door objectvar door_1:Door = new Door();var door_2:Door = new Door();var door_3:Door = new Door();var door_4:Door = new Door();var door_5:Door = new
My project downloads an array from a MySQL server that has URLs for pictures in it. Part of my script then downloads these pictures and splices the array (removing the URL and replacing it with the bitmap). Now i need to use those bitmaps on the stage but i need two instances of the same bitmap at the same time, and it seems like flash is having a problem with this.
How do i create two instances of the same array bitmap?
For example if I wanted to do something like make a function which is used to spawn multiple instances of an enemy movie clip.[code]do this a specified number of times.How would I go about doing something like this? And what is the syntax for referring to these generated movie clips from outside of the movie clip (so i could do things like remove them, change x/y,alpha, ect, individually)I really just don't have an intuition for how movie clips actually work in actionscript, and its been holding me back a great deal.
I'm running into a roadblock with creating multiple instances of a movie clip. I'm trying to display a series of boxes across the bottom of the stage. The number of boxes are determined by _global.maxStep[_global.sectionNum]. I have a movie clip called StepBox that will serve as the template for each box. In the StepBox movie clip is a dynamic text box called stepNumText, which I want to set to the value of the counter. The problem I have is that I've only ever used attachMovie, but there is no movie for it to attach to. I tried using Content since that's the name of the layer this is in, but I know that doesn't make sense (and it doesn't work).
Code: _global.updateBoxes = function() { var curr_box; for (i = 1; i <= _global.maxStep[_global.sectionNum]; i++) {[code].....
I have a class the extends a movie clip with some dynamic content in it.I need 15 instances of this class so i created a for loop for that.Im using the same variable name but im just initializing it again and again.
var thumb:MovieClip = new ThumbClass(); addChild(thumb) my probem is that i need to find a way to control them after i created them.
I got a ton of movieclips in a class. Is there a more efficient way to apply a function to every instance in the class other than this?
var textArray:Array = [ interludes.interludeIntro.interludeBegin1, interludes.interludeIntro.interludeBegin2,
[Code]....
I have NO idea why the above doesn't work. I want to turn every single instance in the class interludeIntro invisible, but I want to turn specific instances visible later.
how to insert code on this website, pressing "code" doesn't do anything, so pardon the bad formatting)
Let's say I have created a class named Store. This class has several elements such as Name, PhoneNumber, Owner. I've created 2 instances of this class and want to know which values are different. So lets say that Store1 and Store2 are instances of this class.
Is there a way to automatically loop through all elements of a class instance and compare them to the same element in another class instance and return something when they differ?
I'm new to this OOP stuff, and I'm having a hard time understanding all of this.I'm trying to recreate in AS3.0 with classes a simple whack-a-mole game I created in AS2.0 using timeline coding.I've read through a lot of forums, but I still don't understand what exactly I'm doing wrong.Heres my setup:I have a movie clip named mrBunny (my girlfriend told me to change it to bunnies as moles were too ugly.). Now there are 6 instances of mrBunny on the stage, each named mrBunny0-5.The mrBunny symbol is linked to the com.mrBunny class.The class has a method called randomPlay(); which I use to randomize the animation times of mrBunny.I also have a button on the stage with the class stageBtn.
I am making an AS 2.0 Class for polygons called "Shapes2". Shape2 is basically an array of Vectors (another Class I made) and is built using the function addPoint(x1,y1) to build the shape from a series of points. The points are then converted to vector-edges, etc etc.Here's the long and complicated construction:
Code: var pent:Shape2 = new Shape2(); var rect:Shape2 = new Shape2();
if I comment out either instance, the other is functional when I test it. Trying to do two instances makes rect and pent point to the same array of vectors, but they keep other variables and properties separate, which means rect isn't just pointing directly to pent or visa versa.
I have four instances of the same class called Tile, that is bound to a movieclip with four frames. They're imbedded in a movieclip that I'm using to hold all of the visuals.In the main class of my .fla I declare a variable called menu1 that is bound to another movieclip with 2 buttons on it.
I'm trying to make three things happen here: on clicking the Tiles the menu will pop up over the tile that was clicked; that on clicking another tile when the menu is already up it will close that one before adding a new one; and lastly, that on clicking the second button in the menu, it will change the frame of the tile clicked and close the menu.The tile.as has an addeventlistener in it's construction method to add the function onTileClick to each Tile.
public class Tile extends MovieClip{ public function Tile():void{ addEventListener(MouseEvent.CLICK, onTileClick);[code]....
This works fine for one tile. I can click on it, the menu pops up, I can close and reopen the menu as many times as I want, and I can use the other button with no problems.Also, clicking around on different tiles moves the menu around without repeatedly adding it, so that seems to be working fine as well.The problem is this: If I click on a tile, close the menu, then click on another tile and close it, I get an error 1009.It still closes, that error just comes up. And it will come up for any more tiles I open and close it on.Then, after clicking on however many tiles, if I do click the advance button, it affects all of the tiles, and I get an ArgumentError: Error #2025 for each tile clicked on.I tried adding a variable that held the event.target value in the onAdvance function, and using that for the gotoAndStop, but the same thing happened. When I tried tracing the name of the variable, I noticed that it was tracing the names of each tile clicked with each subsequent trace.
Am I building this all wrong?I thought that making a class for my tile object, and adding eventlisteners to the class, and adding the functionality of the tiles inside of the class would be good practice for Object Oriented Programming, but it seems to be producing nothing but errors. When I defined these tiles inside the main timeline, with separate event listeners, I didn't have this problem
I'm trying to make it so that the instances of the class "Enemy" stop completely when they get too close to each other. They are circles so determining a collision is easy. But when I used this code:
Code: if (Math.sqrt(Math.pow(x-_root.newEnemy.x, 2)+Math.pow(y-_root.newEnemy.y, 2))<=width+3) { canMove=false; }
[Code]....
This code works just fine when I test it against the instance of a different class, but it's not working for some reason.