Reputation: 2147
I have a class that gets a movieClip and then using addChild adds it to be displayed. Problem is that I cannot play or stop it at all. Basically I can't interact with the movieClip.
Here is the code:
public function Avatar(movieClip:DisplayObject) //class constructor
{ ...
avatarSprite = MovieClip(movieClip)
addChild(avatarSprite);
avatarSprite.gotoAndStop(1); //this is not working
trace(avatarSprite.currentFrame) //always returns 1
trace(avatarSprite.isPlaying) // returns false
...
}
When I run the code the movieClip plays in a loop and doesn't stop as I expect it to. I am not sure what's the problem. As you can see I didn't do anything too complicated. Any idea what I am missing here please?
Thanks in advance
EDIT: As miguelSantirso pointed out. The problem is with the nested animations in the movieClip and not the actual code itself. Does anyone know how to stop nested animations from playing?
Upvotes: 1
Views: 2401
Reputation: 14406
This function will stop all nested movieClips (or play them if you pass false to the useStop parameter)
function recursiveStop(parentClip:DisplayObjectContainer, useStop:Boolean = true, gotoFrame:Object = null):void {
var tmpClip:MovieClip = parentClip as MovieClip;
if (tmpClip) {
if (useStop) {
(gotoFrame != null) ? tmpClip.gotoAndStop(gotoFrame) : tmpClip.stop();
}else {
(gotoFrame != null) ? tmpClip.gotoAndPlay(gotoFrame) : tmpClip.play();
}
}
var i:int = parentClip.numChildren;
while(i--){
if(parentClip.getChildAt(i) is DisplayObjectContainer){
recursiveStop(parentClip.getChildAt(i) as DisplayObjectContainer, useStop, gotoFrame);
}
}
}
Upvotes: 2
Reputation: 1253
Check that there are not nested animations inside your movieclip. Pausing a MovieClip does not stop the internal animations.
Upvotes: 1
Reputation: 2677
Instead of casting it to a movieclip, try handling it AS a movieclip.
avatarSprite = movieClip as MovieClip;
(considering the incoming movieclip IS actually a movieclip ofcourse...)
Upvotes: -1