ActionScript 3.0 :: Accessing Dynamically Created Objects?
Mar 17, 2009
If objects are created dynamically in AS3, using code like this:
for (var num:Number = 0; num<10; num++){
var txtFld:TextField = new TextField();
txtFld.text = 'This is the original text';
this.addChild(txtFld);
}
then later, i want to changet the text of one of the TextFields, how can I do that? The only instance listed in the variables is a single instance of "txtFld" and it is the last one that is created. How can I access the others?
I have an application that I am adding movieclips to a container movieclip through a for loop and repeatedly calling myClip.addChild(theNewClip). Now I have a dozen clips in my container and it seems like the only way to access the clip is to use the getChildByName() method and cast it into a temporary clip so I can get at the its properties.
Is this the best and/or only way to do this? Does the old AS2 myContainer["theName"].property not work with dynamically created movieclips? It doesn't seem to work for me anymore.
I have an application that I am adding movieclips to a container movieclip through a for loop and repeatedly calling myClip.addChild(theNewClip). Now I have a dozen clips in my container and it seems like the only way to access the clip is to use the getChildByName() method and cast it into a temporary clip so I can get at the its properties.
Is this the best and/or only way to do this? Does the old AS2 myContainer["theName"].property not work with dynamically created movieclips? It doesn't seem to work for me anymore.
but when I put MC on stage dynamically via addChild, the first trace gives compiler error while second trace works(error: Scene 1, Layer 'Layer 1', Frame 1, Line 81120: Access of undefined property myParent1)
I'm trying to build a relatively simple photo gallery where the images are loaded via XML into thumbnail movieclips that have been dynamically generated, positioned and added to the display stack. I used a simple for loop to generate the thumbs and traced the thumb.name to make sure they all had unique instance names. I then added a listener to the thumb mcs in the for loop and created a function that traces the instance name of each thumb mc, to see if all is working, however, every thumb mc traces the same instance name. My question is how can I create the thumbs dynamically in a loop and, essentially, make them buttons that would display the big the full size photo.
Here is my prototype code:
ActionScript Code: for (var i=0; i<12; i++) { var thumb_mc:MovieClip = new thumb(); // Positioning: The xy coordinates are in an array outside the for loop.
Im dynamically creating an instance of a movieclip, call it a game piece. This game piece has 4 frames, each with a movieclip called base(although one is red, one blue, one green, one yellow). When the game piece is created I set the frame to indicate player color. Im also changing the alpha of base to 1.0 when its being dragged, 0.5 when its dropped.
Using the following code, everything works fine if the game piece color is set to the base in frame 1 (red). If the game piece is created and the timeline moved to a frame other than 1, I throw an error when trying to access base.alpha (this would be the second, third, and fourth instances of base in the game piece timeline). Heres the strange part, this is only a problem when the game piece is first created and added to the display list. Once created, even after the error has been thrown, I can access the alpha of bases 2, 3, and 4 in the drag start/stop listeners. Heres a link to the work in progress, and the relevant sections of code (shortened for brevity, t1 is the top left piece on the pallet, others just repeat the same code):[URL]
I created a movieclip and linked it to a class called CustomButton. Inside the movie clip is a text field with name btnText. I then created a few buttons with this code:
Code: var newBtn:CustomButton = new CustomButton(); // set properties of new button newBtn.x = INIT_X;
[code]....
So far, so good. Everything works ok and the code sets the text of the new movieclip. Now, I wanted to actually write the CustomButton class and add some properties and eventually do other stuff with it and so I wrote this:
Code: package { import flash.display.MovieClip;
[code]....
On trying my script again, it gives me this error:
Code:1119: Access of possibly undefined property text through a reference with static type String
I have a movie clip menu on a main timeline and inside that movie clip I have created four buttons dynamically. How to access those nested buttons/movieClips (add event listeners etc) from main timeline? Here I am adding menu to the display list on main timeline:
I have a scroll pane with textboxes and buttons that are dynamically created in a function. The textboxes are a user list that can get very long.
I am having problems where once I get out of this frame I want everything to be removed. I have tried removing the scroll pane but all the dynamically created objects remain. Is there some command when you enter a new frame to clear all objects or something along that line?
iam in a situation to convert the dynamically created objects( just movieclips which contains boxes,texts etc) in flash using AS3 to .DWG format. i tried converting the flash objects in to SVG format , then tried to open it in Auto Cad , but the texts are not editable in auto Cad;
So I have an object, generated on each click of the mouse. It's set up as a series of points with properties, with values for position randomly calculated, and set around where the user clicks the mouse. Lines are drawn from where the mouse is clicked out to each of these points, so it kind of looks like a star, but only lines, rather than a solid shape (like those old 50's atom clocks?). So once clicked there's an enter frame event listener on the object so that each of the points 'wobble' (using a randomly generated number) up and down around the original point.
For some reason, I can either set it so that on each new click of the mouse and newly generated object, the last one stops "wobbling" and only the new one does, or each new object moves to where the new object is, and maybe is still wobbling(?), but is underneath the new object. This way has the event.target as a new object in the wobble function, so I think it may be just a case of where the centre point is - i.e. saving the mouse x and y for each object individually, or perhaps I have too much of the setup function code repeated in my "wobble"function?
i have 2 layers, called typer layer and plain layer... on the plain layer i have drawn out a shape... like a circle for instance.... if plain layer is on top of typer layer everything works fine. if plain layer is below typer layer the typer does not type.... it doesnt even show up. at present the dynamically created text field into which the typing text will be put into has a depth equivalent to that of a guide inside the component (just a plain mc used for determining sizes etc nothing special) +1 i added 1 to its current depth because if i dont i only seem to get EITHER the circle OR the typer.... whereas if i add 1, i get EITHER the typer AND the circle OR just the circle..but this doesnt make sense does it? i mean if the typer layer is on top then it has a higher depth (ie. closer to zero as depths are currently in the negatives still ) so if i add 1 it shouldnt conflict with anything and i should get it typing and displaying the circle surely?and if it is below then the circle has a higher depth so in this respect if the typer wouldnt work when it is on the bottom i could understand this as the depths would be conflicting and as such the dynamically created text field couldnt be created in the first place because the depth level is already occupied....
Code: if (! initialized) { for (var c = 1; c < 1000; c++)
[Code].....
The error given is "1120: Access of undefined property particle4." However, everything traces correctly, but the individual particles cannot be accessed outside of the loop. Eventually I want to add the next particle at the mouse position on every click, but obviously I can't do that without being able to access the individual particles. I also read about having to use getChildByName() to access names set in AS3, but I haven't been able to get that to work either.
im building a full as anything text-typing-component... easily modified and adapted etc...one problem however... i came across a depth issue in testing.... its a little peculiar so you will have to bear with me... i have 2 layers, called typer layer and plain layer... on the plain layer i have drawn out a shape... like a circle for instance.... if plain layer is on top of typer layer everything works fine. if plain layer is below typer layer the typer does not type.... it doesnt even show up....
I'm dynamically creating movieclips with dynamically created movieclips inside them and am having trouble with targeting them.Below is a simplified example of what I'm trying to achieve, in the real file there are a lot more movieclips and I'm creating and naming them with a for loop.
This one is just one Sprite created inside another sprite. I can target the top level sprite named "testname". However when i try target the nested MC it throws an error.The bottom couple of traces are just test MCs I've made to make sure i got the syntax right, on targeting nested movieclips.
PHP Code:
var holder:Sprite = new test1();holder.name = "testname";this.addChild(holder);var holder2:Sprite = new test2();holder2.name = "testname2";holder.addChild(holder2);trace(getChildByName("testname").x); //this one traces finetrace(getChildByName("testname").getChildByName("testname2").x);//this throws up an errortrace(testclip1.x);trace(testclip1.testclip2.x);
Essentially, I've got a MC container that's created dynamically based off an XML file (basically for every <title></title> I've got, it makes a new "card"). Now within the context of each <title></title> grouping I've got <imgs></imgs> in which I specify the path to images that are related.All of that works perfectly, save for the external jpg files actually appearing on the stage. The MC I add them to does, but the external image doesn't.My problem is- I can't add the external images until they're completely loaded (or so it appears). The thumbnail BG I use is blank. So I know for a fact that the thumbnail BG isn't occluding the loaded thumbnails.
I have drawn colored rods which I have placed in the library and have put one of each on the stage with instance names likeblueRod_mc, etc.I place them around with time-line code like blueRod_mc.x = 300.0;I have now created an Actionscript class called Problem.I build a new object from Problem which I have called Riddle.But when I put blueRod_mc.x = 300.0 in a method (of Problem),I get the message that blueRod is not accessible.So I triedstage.blueRod_mc.x = 300.0;That did not work either.
The following code adds 10 instances of circleMC to the stage. Inside circleMC is a dyn text field that increases in number from 1 - 10 so I have numbered circles on the stage.Each circle needs to open an infoBox which will contain variables unique to that box. I can't figure out how to address each infoBox. How would I say something like on circle1 set infoBox1.visible=true?
code: var jurNum:uint = 0; addBtn.addEventListener(MouseEvent.CLICK, onAdd); function onAdd(evt:MouseEvent):void {[code]........
I created a canvas in a function, and in his function I have a CLICK eventlistener. On the click I want to manipulate what's inside the canvas. Will referencing the canvas using the Dictionary class work?
I am able to dynamically create an object on the stage with a function, but I am at a loss for how to access and manipulate the properties of that object from my Main Class.
in my Main Class I have:
ActionScript Code: NLP_addChild.addObject(stage) // NLP_addChild is the other class addObject() is the function
in NLP_addChild Class appears the following:
ActionScript Code: public static function addObject(stage:Stage) { var myCircle:MovieClip = new circle()
[code]....
myCircle displays correctly on the stage, myCircle is correctly assigned an x of 300. But myCircle x property cannot be assigned from my main class.
I am creating a text scroller and am having problems with clearInterval - the text starts scrolling, but it won't stop after I try to clear it upon a button click.
1. I declare a var (uint) equal to a setInterval() call within a function (if the text exceeds the width of the textField)
2. I have a button that "turns off" the mp3 player (swf) and resets all the text fields.
3. I can't seem to access the setInterval ID var from within the click handler.
I have declared the var (uint) at the root level, then set it to setInterval() within the function. Then I tried to access it from the click handler. I thought this would work since it's global at that point, but it doesn't.
Here's a link to the page so you can see how it doesn't work [URL] (you have to click on the last link with the long client name)
Here's the code that's involved with this function (of course this is only the relevant code, but I would post the fla when done for anyone who wants to use it):
Code: Select all//::: SCROLL DISPLAY TEXT function scrollDisplays():void { (trackTextField.textWidth > trackTextField.width) ?
I have a script that randomly pops out circles all over the stage. However, I want them to disappear once I roll my mouse over them (and only the ones I roll over, not all the instances).So if I have code like this in a function:[code]And then I have a mouse_over function in the same class, how do I tell it to removeChild? Since the stars are instances of the object, they are giving instance names like instance67, which makes them hard to remove.
basically what im trying to do is create a jigsaw game, simple eh! i have nothing on the stage at compile time, only four items in the library. these are four different puzzle pieces with export names of "piece01" "piece02" "piece03" and "piece04". my AS goes like this:
ActionScript Code: var puzzlePieces:Array = ["piece01","piece02","piece03","piece04"]; var len:int = puzzlePieces.length; var pieceList:Array = [];
[Code]....
how do i or what name do i give the addEventListener to? (if that makes sense) to be able to drag them.