as3 controlling main timeline from external swf


#1

On my main timeline i’m loading in a external swf file. I can’t figure out how the hell to control my main time within the external swf.

For example:

In my external swf I have a button. Once the button it hit I need it to control a movieclip on my main timeline called myMoive_mc.

myMovie_mc is being brought in with addChild(myMovie_mc);

I want it to gotoAndStop(2); on that myMovie_mc once the button is hit. I’m looking up swf controlling and can’t seem to get this correct.

Any suggestions?

Thanks


#2

Inside the external swf, call the function on the myMovie_mc object with reference to “root” object like this:

MovieClip(Object(root).myMovie_mc).gotoAndStop(2);


#3

Hey thanks, but i’m gettting an error
TypeError: Error #1009: Cannot access a property or method of a null object reference.

My favor error lol

Thanks


#4

can you adjust the external swf code?


#5
MSFX said

can you adjust the external swf code?

yup!


#6

then use events?


#7
timmylogue said

Hey thanks, but i’m gettting an error
TypeError: Error #1009: Cannot access a property or method of a null object reference.

My favor error lol

Thanks

Probably added to stage missing.


#8

Thanks everyone for the replies. This is what I came up with and please correct me if I’m wrong.

External swf

myButton_btn.addEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandler);
function mouseDownHandler(event:MouseEvent):void
{
	parent.parent.dispatchEvent(new Event("customEventTypeString", true));
}

Main document

addEventListener("customEventTypeString", customEventHandler);
function customEventHandler(evt:Event):void {
    trace("i am a parent function called in child");
	MovieClip(root).myMovie_mc.gotoAndStop(5);
}

 
var loader:Loader = new Loader();
loader.load(new URLRequest("mySWF.swf"));
addChild(loader);

The trace statement get hits, but I get an 1034 error. Here is the error log:

i am a parent function called in child
TypeError: Error #1034: Type Coercion failed: cannot convert flash.display::Stage@94f5f99 to flash.display.MovieClip.
	at youtubeArea/customEventHandler()
	at flash.events::EventDispatcher/dispatchEventFunction()
	at flash.events::EventDispatcher/dispatchEvent()
	at YouTube_Panel_fla::MainTimeline/mouseDownHandler()

#9

the events look fine, you can’t make the stage (root) into a movieclip hence the error…

where is the mc you’re trying to access…?


#10
MSFX said

the events look fine, you can’t make the stage (root) into a movieclip hence the error…

where is the mc you’re trying to access…?

Hey thanks, didn’t know that.

The movieclip is being brought on stage with addChild(myMovie_mc); in the main timeline.


#11

then…

myMovie_mc.gotoAndStop(5);

should suffice or is this not in your document class?


#12
MSFX said

then…

myMovie_mc.gotoAndStop(5);

should suffice or is this not in your document class?

No this is not the main class. The main class is adding the myMovie to the stage.


#13

^It’s like your 5 topic here I see you submit and you keep mixing AS2 with AS3 coding.

When working with AS3 forget everything you know about AS2 .

What concern me more is you need to handle all this external swf MC when you swap to a new swf, you must dump your entire asset first before you load a new swf it’s not AS2 you know.

The load and unload your external swf in a template is one of the most imported thing in our coding.

You keep patching thing from your bad AS2 habit and you confuse everyone here :stuck_out_tongue:


#14
tsafi said

^It’s like your 5 topic here I see you submit and you keep mixing AS2 with AS3 coding.

When working with AS3 forget everything you know about AS2 .

What concern me more is you need to handle all this external swf MC when you swap to a new swf, you must dump your entire asset first before you load a new swf it’s not AS2 you know.

The load and unload your external swf in a template is one of the most imported thing in our coding.

You keep patching thing from your bad AS2 habit and you confuse everyone here :stuck_out_tongue:

haha what are you talking about?

  1. Where is there AS2 code here?
  2. I’m only loading one external swf. I know how to unload external swf in AS3.
  3. How i’m I confusing everyone?



    You act like my posts are annoying. Most posts on here are about stupid crap
    and not what its suppose to be. :slight_smile:

#15
timmylogue said

You act like my posts are annoying.

We'll let me clear something …. I only reply today to post from member i am fond of ….

Don’t take it to the wrong way :stuck_out_tongue:


#16
tsafi said
timmylogue said

You act like my posts are annoying.

We'll let me clear something …. I only reply today to post from member i am fond of ….

Don’t take it to the wrong way :stuck_out_tongue:

lol gotcha :wink:


#17

tsafi, he’s asking for coding advice and since you can’t code I suggest you stop confusing the poor guy :wink:


#18

you can start from trace (parent,parent.parent,parent.parent…)like this,and then you will know where is your target mc.


#19
yuanhao_viva said

you can start from trace (parent,parent.parent,parent.parent…)like this,and then you will know where is your target mc.

Thanks. I did the trace statement. It found [object Stage], but I’m still getting an error:

TypeError: Error #1034: Type Coercion failed: cannot convert flash.display::Stage@2d128f99 to flash.display.MovieClip.
	at YouTube_Panel_fla::MainTimeline/mouseDownHandler()

Here is my button in my EXTERNAL SWF to access the main timeline.

test_btn.addEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandler);
function mouseDownHandler(event:MouseEvent):void
{
	trace(parent.parent.parent);
	MovieClip(parent.parent.parent).myMovie_mc.gotoAndStop(3);  
	
}

Thanks

Tim


#20

you don’t need to cast it as a movieclip, that’s why you’re getting the error…