ActionScript 3.0 :: How To Avoid Multiple Instances Of A Class
Apr 14, 2011new a class [code]Now ,I want call function newCourse many times and don`t new class again.
View 2 Repliesnew a class [code]Now ,I want call function newCourse many times and don`t new class again.
View 2 RepliesI 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 a "Window" class, which will create a window with the parameters you specify. One of the functions inside of that class is to place an element inside the window - something such as a text field, button, etc.
Now my issue. I've created two windows with different names, slightly different parameters, etc. I am adding a text field to each one. On the screen, both text fields show up (have borders enabled). I can refer to both windows using getChildByName(), but for one reason or another I can only find one text field using the getChildByName method. The other one will give me an error.... "Cannot access a property or method of a null object reference."This is the code that I use to add a Text Field, keep in mind this is inside the window class:
ActionScript Code:
public function element(builder:Object) {
switch (builder.type) {
case "static_text" :
[code]....
This code is repeated twice, for different windows. The only thing that's different about them is their names, which are slightly different. It seems that whichever text field I add first gets to stay, while an subsequent ones appear on the screen, but I cannot refer to them. I've tried switching around the window definitions and that does seem to be the case.
This is how I create a Class instance of Container_, called "wall0":
var wall0:Container_ = new Container_();
I need dozens of these, numbered sequentially. Is there a syntax available that would plug into a while statement? Like:
var w:Number = -1; while(w < 100){var (wall+[w]):Container_ = new Container_();}
I am creating multiple instances of a movie class with the same variable name. The movie is then added random on the stage with a tween. On a mouse handler click, i want to remove the movie from the stage.
I am getting error -
ArgumentError: Error #2025: The supplied DisplayObject must be a child of the caller.
at flash.display:isplayObjectContainer/removeChild()
at Untitled_fla::MainTimeline/removeBlock()
Code:
import gs.TweenLite;
import flash.utils.*;
var block:block_mc;
var myTimer:Timer = new Timer(1000, 15);
myTimer.start();
[Code] .....
So I know how to target a specific instance using MovieClip(root).objectName which I think is nasty way of referring to it anyways, but right now I'm trying to make a fighting stick-figure game and I can only refer my code to one NPC right now using an "enemy" class but I would like it if I could spawn multiple NPC's at once using the enemy class and instead target the enemy class instead of the instance itself while still having the NPC instances being unique so when I hit one they don't all get hit.
View 1 RepliesI'm creating an image loader with a specific effects that requires layering multiple masks over the same movieclip. in the timeline it looks like this:
What I want to do is add an instance of the loaded image into each of these masked movieclips. I'm trying this:
create a new instance of the loader and store it in an Array
Code:
for (var j=0; j<allThumbs.length(); j++) {
imgLoader = new Loader();
img_arr.push(imgLoader);
[Code]....
The only way I've been able to get this to work is to create an entirely new Loader object for each movieclip instance. Doing it this way loads the same image 4 times... that's not acceptable.
how I can store the image that is loaded and reuse it in the different movieclip instances?
The code works fine, but I am getting unexpected results; the array seems to be shared across multiple instances of the same class? I've coded an example to highlight what is happening:
Code:
import myClass;
var instance:Array = new Array();
instance[0] = new myClass;
[Code].....
keep all objects/arrays separate across multiple instances of the class.
In a scene I have 8 MC's each MC has a stop() on frame one and frame ten.on click the MC plays till frame ten ( moving into the scene ) then waits for another click to return to its original location. [URL] Signs for below example, if you click on multiple signs on the right of the page they over lap each other I want it so if you click one and view it once you click another a play function is sent to the mc that is on the stage to send it back to its original docker.Right now I am using this script.
import flash.display.MovieClip;
import flash.events.MouseEvent;
[code]....
can't find the variable, is this because it's in a movie clip?
I have a timer in my application. For every 30 min, it will hit the web services and fetch the data and updates the UI. The application was working fine till yesterday. Suddenly, because of some issue, the web services were not available for some time. During that period, Application displayed the RPC Error multiple times(More than 100 alert boxes) in alert window. Because of this alert boxes, my application was hanged and i was not able to do anything.
I have tried several approaches, but nothing worked.Finally, I have tried to use a flag. In all the approaches, this looked promising. so i have implemented it.Basically, in this approach whenever we open an alert we will set a flag.While opening and closing alert we will reset this flag.
Ok so here is my XML slideshow Actionscript:
ActionScript Code:
stop();
var xmlRequest:URLRequest= new URLRequest("graphicImages.xml");
var xmlLoader:URLLoader = new URLLoader(xmlRequest);
[Code]....
So I figured that the coding of separate scenes would work independently of one another, but I guess I was dead wrong, because when I apply this to a different scene and change the XML path for a different set of images, I get all sorts of conflict errors when I test the entire movie. I have my flash film set up so that each link send the user to a different scene, which plays a unique intro for each, and then the slideshow appears on screen and the viewer can navigate the images.
Is there a work around for this? Or am I going to have to break my flash movie into separate movies? Or should I just add a suffix to all my vars and functions so that they are unique for each scene?
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).
Let's say i have a bunch of balls/cells. I'm having trouble figuring out how to make it so that every other ball bounces off of every other ball.
so in short, it's really one instance being able to check all other instances of the same ball class?
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:
if(this.hitTestObject(targetClip)){
trace("hit!");
}
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.
can I use the same loader or do I have to have a loader for each instance (the one thing I haven't tried as yet)
View 3 Repliesi have a movieclip that is instanced on stage everytime i press space. problem being i can't seem to get it to hittest anything other than the first created instance.my spawn mc code is
Code:
function dropbox():Void {
//trace(me);
this.attachMovie("box","box"+Math.random()*300,this.getNextHighestDepth(),{_x: _root.one.me._x-25, _y: _root.one.me._y});
[code]....
the first one returns "It's working" but zip for all of the others.
How do I add multiple instances of the same mc to the stage dynamically?
View 3 RepliesAs you can see, after all the items in the Carousel have loaded, a function called fadeItemIn() is called which displays each of them one by one. I am looking to call a small "swoosh" particle effect flv I made in AfterEffects so that as each item tweens in, it instead looks like it is sparkling in from the left.
The problem I have is that using the code below, the swoosh.flv file tends to freeze before it finishes. In this case the swooshIn() function is called three times because there are three items being loaded into the Carousel.
I am wondering why the FLV freezes when multiple instances of it are loaded through AS3 using NetStream.
Code:
private function fadeItemIn(item:CarouselItem):void {
trace("fadeItemIn");
this.tweens.push(new Tween(item, "altitude", Regular.easeOut, item.altitude, 2.5, 0.50, true));
[Code].....
I have a Hero that can shoot bullets. I can get him to shoot multiple bullets, all with equal velocity. The bullets are supposed to be peas from a pea shooter, so I want to apply friction and gravity to them so they slow down and fall. I'd also like them to bounce of objects too.At the moment I'm just applying friction, so the peas should be shot forward, and then gradually come to a halt in the air. The problem I'm having is that if I apply friction to one pea, it generates the next one at the velocity that the 1st one is currently at - that is, the second pea starts out slow, and stops very quickly. The 3rd one is generated not moving.
How can I set the velocity to reset for each pea, so they all start out equal? They all move with the same properties, so I want to deal with them all in one arrray/loop. Is this possible?I have posted the basic structure without any velocity or anything specified because I'm not sure where everything should go. If I specify a starting velocity in the document class and then use the for loop to apply friction, it changes the velocity of every pea. The Pea class just contains functions to draw the pea.
Code:
public function bullets(event:Event):void {
if (s==20 && PandaHero.currentFrame==13) {
[code].....
I am trying to create several texts with animation on mouseover (basically animated menu).
Steps followed: created text, converted to movie clip (m_text), put a stop() in first frame added animation movie clip in second frame, which is played on mouseover (added onrollover function AS2.0)
It works fine. Now I tried to create multiple instances of this m_text, tried to change the text. But it changes in all instances.
If I try to create multiple instances of text only, then I will have to repeat the procedure of adding frames, adding animation clip, add AS for mouseover etc for each of them.
All I am trying to do is create one text with animation on mouseover, copy paste it several times and change only the text for each of them.
I have a problem with event handling. I'm working on a calendar, on which events can be listed. With actionscript i loop through an XML file with the days (and if there, the events for that day). So far so good. Where it goes wrong is this: I only want to display blocks with the day numbers on it. When you click on a day, a box pops up and shows the event's for that day.
This is what i did: created a movieclip with classname mc. loop trough the xml file and for each day create a new instance of mc with the day number as text on it. This al works, but now i want to add an eventhandler for each day. How to do this?
How to apply the hitTest to multiple objects for a side scroller game. Right now, I have the MC:hero hitTest against the MC:ground and MC: platform. Problem is, if I want multiple platforms (IE: copying and pasting the orginal MC: platform) he will only hitTest on the 1st instance (platform1). I've since read up on it and learned that Flash will only hitTest on that first instance. But is there a way to make that MC: platform universally hitTest my MC:man? As it is right now, I have to code into the MC:man instance each and every platform instance. It's not a big deal, but after about 5 platforms, the codes seems unnecessarily long. I'm new to AS so I know there's got to be an easier way. Maybe arrays or something?
View 12 RepliesI have a set of two buttons on frame 1.I am attempting to use the same set of buttons on frame 5.I copied the buttons with instance names from the first frame and placed them on the fifth frame, but they are not performing the designated actions.The buttons work fine on the first frame, so I know the buttons are functional.
View 4 RepliesThe following includes 3 files: A main Flex file and two classes. Only last instance created in the loop receives the myClass.doThis() method-- it only fires once. What I want to do is to broadcast to all of the instances. What change do I need to make to the myMethod function in Class1.as to make this work.
<?xml version="1.0" encoding="utf-8"?><mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" creationComplete="init()"> <mx:Script> <![CDATA[private var myArray:Array=
[Code]....
I have several movieclips in my project which are being used as buttons, and when you rollover the mc's the content is viewable the entire time the mouse is hovering in the area of the movie clip, once the mouse moves off it disapeers. Great. I have the code that allows this to happen, but i have multiple mc's and only one works at a time. Here is the code:
mc.addEventListener(MouseEvent.ROLL_OVER, overHandler);
function overHandler(evt:MouseEvent):void {
mc.gotoAndStop(2);
[code].....
I am loading a set of SWFs into my application. These are loaded as a list of thumbnails. I want to add a loaded SWF on the stage when the thumbnail corresponding to it is clicked. How can I do this?
View 1 RepliesI'm trying to do a drag and drop game, where I have to drag the same movieclip several times...
View 12 RepliesI have a doubt: When you open various flash pages in tabs, for example in Firefox, all those pages share the same Flash instance or each one use an instance of flash??
View 1 Replieswhat I want is for the text area box to be added the same amount of times as there are nodes in my xml file (currently 5)So, I'm trying to add 5 textboxes to the stage.Whenever my loop fires this
Code:
//make titles
var songTitle:TextField = new TextField;
[code].....