ActionScript 3.0 :: Access Nested Movieclips?
Mar 12, 2011How do you access a nested movieclip? how do you access stuff in mc2_mc or mc2_mc itself from within mc1_mc or maintimeline?
View 2 RepliesHow do you access a nested movieclip? how do you access stuff in mc2_mc or mc2_mc itself from within mc1_mc or maintimeline?
View 2 RepliesSay we have a set of similar MovieClips in the library that all use the same base class, such as Car(). Each of these clips in the library contain nested clips, such as windows. Now, different cars can have a different number of windows (an SUV is larger than a smart car), and thus a different number of nested MovieClips. How would one create a list of all the nested MovieClips in a parent clip dynamically? In AS2, for...in was sufficient for this, like so:
Code:
for(var i in this) {
trace(i); //If called at the beginning of a constructor, this would output only the nested
[code].....
As you can see on the image, ive created a 1-frame-timeline which has a movieclip called Main_mc (instancename is myMain_mc). Main_mc has 3 movieclips, one is called Intro_mc. These 3 movieclips are not present on the whole timeline. F.e. Intro_mc is just present at frame 2-19. All of these movieclips has instance-names, f.e. myIntro_mc.
Intro_mc is again a movieclip which has more movieclips,which are present on certain frames, f.e. one movieclip is just present at frame 12-20. All movieclips has instance-names. (I code into a seprated actionscript-file.
Problem is that i cant refer to moviceclips which are nested in the movieclip "myMain_mc" which is on the main timeline. I can just refer to movieclips which are on the main timeline (like myMain_mc), i cant go deeper.
I have an application created in Flash Builder 4 that loads SWFs of flash files and I want to access movie clips within these flash files. I can access top level movie clips using:
var assetName:String = "example_mc";
this._graphics[assetName].addChild(this._customText);
However when I want to access nested movie clips I am unsuccessful, I have tried:
var assetName:String = "example_mc";
var assetName2:String = "example2_mc";
this._graphics[assetName][assetName2].addChild(this._customText);
and I have tried:
MovieClip(DisplayObjectContainer(this._graphics.getChildByName(assetName)).getChildByName(assetName2)).addChild(this._customText);
In addition I tried variants of the square brackets and "getChildByName" but still no success.All moviclips are instantiated in frame 1 of the Flash files?
Edit :I forgot to tweak my error handling so an error would be shown, plus all my tests where not showing text, late afternoon on a Mon is not my brightest hour! ;) I worked it out in the end, the solution was either (as above):
MovieClip(DisplayObjectContainer(this._graphics.getChildByName(assetName)).getChildByName(assetName2)).addChild(this._customText);
Or:
MovieClip(DisplayObjectContainer(this._graphics.getChildByName(assetName))[assetName2]).addChild(this._customText);
Looking for a way to stop all movieclips both are the stage and that are children of the ones on the stage.
I toyed with looping thru stage's children so I can first target clips on the stage. But I am getting error.
for (var i:int = 0; i < this.numChildren; i++) if (this.getChildAt(i) is MovieClip)
{
this.getChildAt(i).stop
}}
I want to test mc animations without having to hit F12 to see if they work correctly. For instance, if I have an animation movieclip and then I make another movieclip and drop that aforementioned movieclip within, and animate [via the timeline or library preview] I'm unable to see on-the-fly what my animation looks like... it only shows the top most nest, unless I F12 it.
So if I have a character blinking eyes (one movieclip) and then I create another movie clip of the face, and put that aforementioned movieclip within, the preview animation within the library does not show how it'll be viewed when F12'n it.,,,, it'd be great to see your animations on the fly.
I'm building an event calendar as part of a website .The calendar is divided into two sections, "calendar" on the right with the actual calendar displayed, and "calendarContent" on the left, where information about the evnts is supposed to show up. The different frames in "calendarContent" are all labeled. Within "calendar" I have different movieclips for each month, and inside each month I put the buttons that open the event descriptions in "calendarContent."
Now, for some reason it's not working. The function I'm trying is the following:
MovieClip(root).pages.calendarContent.gotoAndStop("artsundays");where "pages" is the name of the parent movieclip that "calendar" and "calendarContent" are both inside, and "artsundays" is the label for the frame in "calendarContent" I want to go to. The function is placed within one of the month movieclips. I get the following error:TypeError: Error #1010: A term is undefined and has no properties.I've also tried usng MovieClip(parent) instead of MovieClip(root).pages (since "pages" is the parent), as well as a few other variations, but the problem remained.
I made a series of nested movieclips, and to stop all motion i wrote this code:
[code]....
This code works fine, but can somebody explain how to write this in a more compact way?
I am having the following issue with this navigation I am building. I am trying to build a 3 tear drop down navigation, where each buttons sub menu is placed inside that button. My buttons are actually just movieclips, so I have nested movieclips structured something like this:
Button_1
-> Button_1_1
-> Button_1_2[code]....
Each one of the buttons has their own class with it's event listenerens inside it. What happens now, is that when I click for example Button_1_2_1, I get it's event, but also, the event for Button_1_2 and Button_1. Initially, I fixed this, by attaching the events to a hitArea inside that movieclip, but now I am running into other issues and was wondering if there was a way to turn this off, so if movieclip for Button_1_2_1 is clicked, I only get the event for that one, not it's parents?
I really get stuck with problem, that nested movieclips always scaled when parent movieclip is scaled. Is it possible to disable somehow this?
View 4 RepliesIn a application I have a menu MC that slides out nicely from the side as the mouse is over a hotspot. It pops out and stays out as long as the mouse is over the menu.The problem is that in this menu I have child MCs that I want to click on to
do stuff... However when the mouse pointer slides into one of the icons the menu interprets that as a MOUSE_OUT event and slides away.I got it to work with the icons as Bitmap objects but you can't add Mouse events to bitmaps...I could do that by checking if I click inside a bitmap object but that seems ineffective.
I'm making a game in which a character walks along a motion guide to the point on the guide nearest the users click. Easy enough.This motion guide is contained within a MovieClip named Sc1.Now, within the motion guide MovieClip the character is a combination of various MovieClips contained in a single MovieClip, which is placed at the beginning of the guide and tweened to the end of the line. This tween and the MovieClip's component's timelines are controlled based on the point of a users click. Furthermore to add a level of 'realism' the character turns to face front, back or sides, based on the gradient of the slope at which it is travelling, giving the illusion of walking towards or away from the screen.All this works fine. The character instance (SWJim) will walk from left to right, turn and stop at the correct point. The character itself behaves too, moving arms and legs as it should.
However, in order to get the character to walk back from right to left, i have used a boolean to flag the timeline as in 'reverse' mode and the prevFrame() function. This raises an interesting problem with the character in which it will move as planned, but won't turn to face the appropriate direction and the character MovieClip won't play (i.e. arms, legs etc. will remain in their default positions). In order to turn, the character has a series of 5 frames in which it faces different directions. A gotoAndStop(); is used to change the direction of the character.I did a bit of searching and it seems that prevFrame() may have been causing the animations to stop because it was in my onLoop() function, called by the ENTER_FRAME event listener. In order to combat this I used a timer instead to call the onLoop() function, but that produced pretty similar results.[code]
I'm having problems getting my interface to work. I've set up a simple animation inside a MovieClip, and at one point it diverges into two different paths (like a Choose Your Own Adventure). Trouble is, I need people to be able to click on different nested MCs, and none of them work because I think Flash takes every click as being on the parent clip. The nested clips are on the top layer of the parent clip.
How can I get Flash to recognise these clicks and react accordingly? It should be so simple, but it isn't!
I've tried putting the buttons outside and on top of the parent clip so they override it, but it stuffs up the rest of the animation, because they're visible on the stage the whole way through and I've got everything on one frame so I can't make it transparent until needed. (Even if I could, they take up most of the screen, so you'd constantly be clicking on them accidentally.)
I'm having a really hard time trying to get my nested movieClips to align. I have 1 major movie clip called 'game' and inside of it, is a background MC called 'bg' and a box mc named 'box'. I want to get a newChild from the library named 'circle' to attach inside the bg clip but align with the box clip.
set up : game.box - I want my newCircle to align to this MC coordinates. game.bg.newCircle - a newChild will be added to this bg MC and I want it to align with the box MC
Code:
import flash.display.*;
import flash.geom.Point;
var newCircle:MovieClip = new circleClip();
[Code]...
Let's say i have a 3 movieclips which are nested one in other like this:A-> B-> CAnd i would like to find out C movie clip (which is in B mc and B mc is in A mc) coordinates relative to global stage, how can i accomplish that?
View 3 RepliesI have an mc, with a nested mc inside, which has a nested mc inside that.When I rollOver the container mc, It wont allow me to perform a onRelease with the 2nd nested mc .. WHY is this?my code will explain it visually better :::
Code:
all_mc.blue_mc.green_mc.onRelease = function()
{
trace("ok");[code]....
that nested movieclips always scaled when parent movieclip is scaled.
View 2 RepliesI have a movie clip (assigned to a class) with several keyframes. Each keyframe consists of another movieclip, which contains an animation and all use the same name. Lastly, several of the animations contain a third movieclip, which is also assigned to a class and also use the same name. I need the first movieclip to speak to the third, unfortunately, it simultaneously tells me that the clips in the second layer (the ones at the keyframes) exist and do not exist. Namely: second layer "does not exist" in that the primary movieclip has only one child: a null. If I add other movieclips to the primary's frames, they also report back as nulls depending on what frame I'm on. I've tested this in several parts of the code, though I suppose it's possible that I managed to pick five equally bad spots. It's just so bizarre I still don't know what to think about it. However, the second layer of named clips are there, but I can only prove it by deliberately breaking the code in hopes of deliberately getting a reference error (by attempting to make the clip private, which isn't allowed given my setup).
View 0 RepliesWe have found that if you skip over frames that include nested movieclips with embedded timeline sounds, those sounds loop endlessly.For example, if you gotoAndStop(20) from frame 2, but frames 5-10 have a CLIP A that embeds CLIP B, which has a timeline sound, you hear that sound over and over again (even though the playback head never touched the frames with that clip).Does anyone have a convenient workaround (other than the obvious -- playing sounds dynamically, etc). For animation-sync reasons we need to use timeline sounds in this particular case.
View 1 RepliesI have an animation of a spinning globe made from 2 maps placed back-to-back and a circular mask over them. The animation loops endlessly to simulate a spinning globe. This animation was made into a movieclip (globeSpin) which is nested inside another movieclip ontainer_mc). I want to stop the spinning effect when a user mouses over and start it up again when they mouse out. Code is below:
Code:
container_mc.addEventListener(MouseEvent.MOUSE_OVER, stopSpin);
container_mc.addEventListener(MouseEvent.MOUSE_OUT, startSpin);
[code]....
I've created a movieclip (called Level), and nested inside it are several different movieclips. When my game starts, a movieclip is created called hero.mc, which can move around. I want this movieclip to be able to perform hit testing with the movieclips inside the Level movieclip, however when I use the code:
Code:
if(hero.mc.hitTestObject(mcTree)){
trace ("Hit!");
}
I just get the error 1120: Access of undefined property mcTree.
I have a movieclip "squareA" -- inside of squareA, on frame 2 is a movieclip called "squareB". I tried the following code:
Actionscript Code:
squareA.x = 10squareA.y = 10squareA.gotoAndStop(2)squareA.squareB.x = 10squareA.squareB.y = 10
But I get the following error:
TypeError: Error #1009: Cannot access a property or method of a null object reference.
at problem_fla::MainTimeline/problem_fla::frame1()
If I put SquareB in frame 1 of SquareA -- it works.
I have a master MC that's added to the stage via addChild(p2_mc). Inside that p2_mc, I have others MC'S (added to the stage manually, not via addChild). One of them is instanced fond_mc. I want to position that fond_mc in the middle of the stage using that line of code WHEN the stage is resized. Obviously, the following line is into the resize function:
fond_mc.x = stage.stageWidth/2;
I works but returning faulty results because it uses left corner of the mc instead of registration point, which is top and center. I tried all math formula I could think of to no results. Keeps positioning the fond_mc wrongly. I know this is related to registration OR stage measurement. Is there a way to reset stage.stageWidth values INSIDE the resize function?
I have a movieclip that contains other movieclips, however the nested movieclips don't seem to detect mouse events.Via searching, I found that only the parent can detect these events, but is there a way to pass the mouse click from the parent movie clip to the children? I want to have a small movieclip. When you rollover it, it scales up, and then you should be able to click other various things on it. When you rollout, it scales back down.If this is not practical, what's the best way to keep a movieclip "attached" to another and scale, without childing them?
View 3 RepliesI have a bunch of movie clips in my main timeline with at least 2 nested clips inside them, MyMc.nested1.nested2 etc. I have given the top most movie clips that sit on the main timeline instance names. In a document class I created a private variable typed as an array and placed all those MC names in that array. I then looped through the length of the array and assigned 2 event listeners to each instance. Example:
for (var i:uint = 0 ; i < _activities.length ; i++){ _activities[i].buttonMode = true; _activities[i].addEventListener(MouseEvent.MOUSE_DOWN, pickUp); _activities[i].addEventListener(MouseEvent.MOUSE_UP, dropIt);}
in the event pickup() is were my trouble seems to come in.In the pickup function I have the following:
event.target.startDrag()
This seems to work, but only on the lowest nested Movie clip......nested2I can use event.target.parent.parent.startDrag() and that seems to work.... Except when I place another movieclip in the second layer of the of the MyMC , if that is accidently clicked, it will now drag the Stage.I attempted to use the event.target.mouseChildren = false but that only seems to work on the lowest nested object... nested2 as that seems to be the one I am clickingIs there something I am missing to say, click only the top level mc then ignore all nested mc?
I'm loading content swfs into an Air App. The swfs are loaded into the non-app sandbox, and any communication is via the parent/child sandbox bridge. The swfs have timeline code. This code executes fine. The swfs also have mcs on the timeline - any code inside these mcs, or any child mcs of these mcs, is ignored. Simple traces do not execute below the top level timeline of the loaded swfs. I have tried naming the child mcs. I have tried exporting them in the library. Neither makes any difference. When I run the swf standalone, I see my diagnostic traces. When I load the swf, I only see the traces for the top level timeline.
View 1 RepliesI have a movieclip added to the stage through a function.
ActionScript Code:
function myFunctionOne():void{
var myClipA:clipA = new clipA();
myClipA.name = "myClipA";
addChild(myClipA);
}
To access this item on the stage I have to use:
ActionScript Code:
getChildByName("myClipA");
I have some other movieclips INSIDE this clip that have also been dynamically added. If I want to reference one of those clips I have to reference them by name using getChildByName.
[Code].....
But is there a better way to reference movieclips if they are created inside a function, or is there a way to create them so they are always globally accessible?
I am having trouble where this error is showing up: TypeError: Error #1009: Cannot access a property or method of a null object reference. at EssayMain() I have some trace statements in place
[Code]....
I have been working with AS2 for a long time, but are a total newbie when it comes to AS3.On my stage I have placed an empty MC with instance name "holder".In my library I got a MC linked by the name "sektor".
"sektor" has several movieclips and buttons with instance name, e.g. "corner1", "corner2", "corner3"....
I have nested "sektor" inside "holder" by writing this code:
Code:
var newClip:sektor = new sektor();
newClip.name = "sektor1";
holder.addChild(newClip);
What I want to achieve is to control those movieclips inside "sektor" by turning dem on/off.I have tried to do this with this code:
Code:
holder.sektor1.corner1.visible = false;
but I keep on getting this error:
"TypeError: Error #1010: A term is undefined and has no properties."
I have figured out that by tracing holder, I know it�s excisting (Result: [object MovieClip]) but if I try to trace holder.sektor1, I got the result "undefined". So it seems like "sektor1" is not excisting. Why?
I am creating a picture gallery and I got stuck when I tried to listen to a MOUSE_OVER event on a parent movieclip. They are nested like this... scene1/imageBar/imageBarInside. Im trying to call a addEventListener-mouse_over from imageBarInside to imageBar. But my attemps are worthless.Tried the target to path "tool" but it didnt work.
View 5 Replies