ActionScript 3.0 :: Adding A MovieClip To Stage Removes It From The Root?
Jul 9, 2009
I am new to AS3 and only recently have been able to understand the display list.I am trying to run this code in my file.I made two movie clips in my library. Gave them class name as "One" and "Two"Now, this is the code that I run:
Code:
var one:One = new One();
var two:Two = new Two();
My problem is as follows, I can create as many movie clips from on function as I wish, but as soon as I try and do two different functions - it messes up for some reason :S
Basically with my game, it is required for me to create these movieclips every so often. Because of this I created a re-usable function to do the creating:
ActionScript Code: function create_note1() { note1num++;
[Code].....
As you can see there are four different functions, and there are only 4 different movieclips that are added to the stage.
My problem is like this: I can call a single note (like create_note1();) as many times as I want without any problems, but If I try create_note1(); and create_note2(); It will remove note 1 and keep only note 2 on the screen. The problem really stumps me though, because if I called something like this: create_note1();, create_note2();, create_note4(); I may have notes 1 & 4 going down the screen and note 2 will have disappeared.
How do you align a dynamic movie clip position with another movie clip which is in the root stage? I tried to get the mc in root x,y position, but the starting point of the class that loads the dynamic MC does not seems to be accurate. (Meaning at the root stage, the x,y is 0,0 but at the dynamic class, its somewhere like 100,20 for the browser area (and it actually vary base on the browser size))
**the other classes I used to run the custom classes below, I have it added this MC to stage
var blocker:stageBlocker=new stageBlocker(); this.stage.addChild(blocker);
Below is the dynamic MC. Should I not add it to its own "stage"?
public class stageBlocker extends MovieClip { private var blocker:MovieClip= new MovieClip(); public function stageBlocker():void {
I'm working on a simple Flash game for school. In one level, multiple enemies spawn and the player is supposed to shoot them. I used removeChild() to get rid of the enemy that got shot, but when I click (hit) an enemy, everything on my stage gets removed; it goes completely blank.The function to populate my stage with enemies is the following:
private function Game2():void{ for (var i:uint=0; i<50; i++) { var man:MovieClip = new man_mc();
When you make a simple game that maybe has a few different 'screens' like start, help, and high score, and a few levels, and you don't wish to load from external swf's. What is the best practice for making these games as far as the timeline?To just have ONE frame that add's and removes child movieclips from the stage?
I have a removeChild and null question. I know removeChild removes my object from the stage but stays in memory until I call null on it. My question is, if I set the object to null, do I have to removeChild it at all? For example, I have a movieclip where I addChild lots of objects to it. So If I want to completely remove all traces of said movieclip and all its children, can I just set movieClip = null, or do I have to removeChild all its children and the movieclip itself beforehand.
Code: stage.addEventListener(MouseEvent.CLICK, addBullet); function addBullet(event:MouseEvent):void { var bullet:MovieClip = new bshot();[code]....
bshot is a movieclip in my library with the class name of bshot as well.i do not understand when i click i do not get a bullet being added to the stage?
normally when i want to add a movieclip to the stage I would do this:[code]but I have an array of linkage ID's that I select from randomly at runtime so how do I code it to place it on stage?[code]
//This small class add the same movieclip to the stage with random scale and position // Garden represents a movieClip in the library //attached fla and document class
Why using the same name garden for all instances of Garden is not a problem? Can I track each individual instance of Garden on the screen or recall it for something else?
I'm having some issues trying to add a movieclip to the stage through actionscript. Moving from AS2 to AS3 and it's a little daunting to get this concept.
So I want a dialog box (this is the movieclip) to pop up when I click a button and then go away when I click another button. This is what I came up with...
ActionScript Code: eyebtn.addEventListener(MouseEvent.CLICK,popUp); function popUp(event:MouseEvent):void
I am attempting to push an object into an array based on its instance name on the stage...how do I do this?
On my stage I've simply made a box, turned it into a movie clip named "mcBox" and have given it an instance name of "box_mc" on the stage. Here is my current test code:
Code: var energy:Number = 0.75; var boxArray:Array = new Array; box_mc.addEventListener(MouseEvent.CLICK, onClick);
[Code]....
Since the default amount of energy satisfies the if statement I push the movieClip into the array and then trace it. In my output I receive "[object MovieClip]"...is there anyway to distinguish it by its instance name?
I have a root stage, and a MC that is called from the root stage.Now from that MC, i will called in another MC2, and I wanted to placed the MC in the center of the stage. The reason I could not use normal ADDED_TO_STAGE at MC and define the center is because MC is not place in the exact position of the root stage (as in x, y=0). So if I would target MC2 at MC stage center, it would not be the exact center of the root stage/screen.How can I called the root stage properties rather than adding MC2 into the stage?
I have created a movie clip on the stage and in symbol properties I have checked "Export for ActionScrip" the MC name is "slide" and the class is "slide" base class is flash.display.MovieClip.
When I test the movie I get this error. TypeError: Error #1009: Cannot access a property or method of a null object reference. at main_fla::MainTimeline/frame1()
Here is my code: PHP Code: var slide = getChildByName("slide"); //add instance from library? function slideRollOver(event:MouseEvent):void { // trace("OK"); } slide.addEventListener(MouseEvent.ROLL_OVER, slideRollOver);
Does flash have an equivalent to Flex'sApplication.application.[insert application method or propertyI want to get access from an as3 class file to the mainstage. a call to this.root from the stage to the class will notwork because I need the root object stage to execute an addChild
I'm adding several similar movieclips to the stage with a 'for' loop. However, I'd like to increment the position of each movieclip when added on to the stage. I know exactly where I want each movie clip positioned as well. At the moment I just have a small 'for' loop which setups the movieclip. Like so...
How to add random movie clip to stage from many different movie clips in library? If I wanted to add one movie clip to stage I would do liko so:
Code: stage.addEventListener(MouseEvent.MOUSE_MOVE, onMove); function onMove(e:MouseEvent):void { var mc:MovieClip = new Ball(); mc.x = mouseX; mc.y = mouseY; addChild(mc); }
Code above works perfect but I tried following but with no success, no errors, but nothing happens - no mc's are added to stage. I have 6 movie clips in library and they all are linked, exported for actionscript. On MouseOver I want to add random movie clip from those six movie clips to the stage.
Code: var myArray:Array = [mc1, mc2, mc3, mc4, mc5, mc6]; stage.addEventListener(MouseEvent.MOUSE_OVER, onLoop); function onLoop(e:MouseEvent):void { for (var i:int = 0; i< myArray.length; i++) { var randomMc:Number = Math.floor(Math.random()*i); var mc:MovieClip = new myArray[randomMc]; addChild(mc); mc.x = mouseX; mc.y = mouseY; }}
I'm adding several similar movieclips to the stage with a 'for' loop. However, I'd like to increment the position of each movieclip when added on to the stage. I know exactly where I want each movie clip positioned as well. At the moment I just have a small 'for' loop which setups the movieclip. Like so...
ActionScript Code: for (var i:uint = 0; i<=8; i++) { zone[i] = new Zone(); }
I then have a long list adding and setting each mc position on the stage...
Although I've just had a thought as I was typing that last bit of code. Will I need to setup a for loop for each row...so the y position remains constant and I just increment the x value for each movie clip, and then repeat this for loop for the next row with the new y coordinate?
I'm getting rather disgruntled with Flash's contradictory statements. I just need someone to clarify one thing for me; is it true that if you apply removeMovieClip to a movieClip instance, it also removes all of its duplicate instances? When I try to apply this principle, for some bizarre reason, it only just deletes the original instance and NOT any of its duplicates:
I'm running flash cs4. I have an xml file I've loaded in but cs4 actually takes out the root nodes. So now I've been trying to add them back in when a button is pressed but I can't do it. I looked at creatElement and appendChild functions they seem to be what i need but I can't get them to work.
I have a class called shapeC that only creates a rectangle and then addChild(rectangle);. That class is instantiated on the main timeline. Currently, the only way you can see that rectangle is to add the instantiated class to the stage via addChild(shapeC);. My question is, is there a way that the shapeC class can add the rectangle to the root stage without requireing the instantiated class to be added to the stage?
For some reason, the same code works now, without any problem at all. I don't know what happened, or why, but I no longer have this problem Here's the original post: To put simply, I created a MovieClip, put it with addChild() to stage, and when I tried to call this piece of code:
Okay, I did a search on stage and got a lot of forum threads going in different directions about static and global variables. _root to my understanding no longer means the main timeline, it's the root of...what? and how does this relate to the stage? Is the stage there or does that need and addChild() as well? Like, overall I guess my main question is, "What is the proper way of incorporating stage and root in document class structure?" I built my entire site using the structure, but I learned halfway through that I had to use addChild() to make it a display object. I'm trying to get this down so next time I get it right.
The code below returns the error message "Error 1120: Access of undefined property stage."
function select(event) { if (event.target.name is Stage) { currTool.target = null; } else if (event.target is Sprite) {
[Code]....
I understand the reason for the error is because I'm trying to access the "Stage" when I'm not at my Document Root. The question I have it how do I do this same thing when I'm not at the Document Root?
Questions are easy (Have I lost my mind?) -- and i don't think this (scuse the pun) gets much easier. Ahh but the answer... 400x500 stage, single layer (or with the AS in a 2nd layer) with a jpg (80x250) centered on stage and symbol'd to graphic (or mc). why doesn't the following function traces appear when mousing in and out of the stage?:
So I'm trying to do a simple graph with rollover definitions. I have the graph on one layer in the root along with the definitions. On a hit testing MC I have the following:
var defbox:info = new info(); var mcName = this.name; var xPos = (MovieClip(parent).stage.stageWidth)/2;
Is there a way to tell flash to instantiate a Stage subclass called "TheStage" instead of the default Stage class as root/parent of my document class? public class TheStage extends Stage{ //code }
Then when I do "DisplayObject.stage" I want it to return the instance of TheStage instead of the default Stage insteance. I want to do this so that I can override the addEventListener method of the Stage class. So if I call DisplayObject.stage.addEventListener I can execute my own code routine. Is that possible and how?