Just found this thread while trying to work this out myself.

I have tried the same technique as discused here, and my button was flickering too, until I discovered that it's because of the event bubbling and regarding child objects as buttons themselves. What you need to do is set

btn_mc.mouseChildren = false;

...and the flickering is solved. When I turned that on I didn't need to use addChild, which I never quite understood the rationale anyways since my movie clip button is already on the timeline. Here's what I have:

btn_mc.addEventListener(MouseEvent.CLICK,clickHandler);
btn_mc.buttonMode = true;
btn_mc.mouseChildren = false;
function clickHandler(evtObj:MouseEvent):void
{
        trace("button clicked!");
}

On my button timeline I have _up, _over, _down frames, plus a few custom states, and each state frame has a movie clip with several child movie clips in turn.

You might also encounter flickering if your over and up states are of different sizes, in which case you should define an alpha 0 movie clip containing the "hit" shape of the button on the bottom layer spanning all frames, and in the code include

btn_mc.hitArea = hit_mc;


Worked for me.
_______________________________________________________________

Joseph Balderson, Flash Platform Developer | http://joeflash.ca
Writing partner, Community MX | http://www.communitymx.com
Abobe Certified Developer & Trainer


Jim Berkey wrote:
Fuomo,
One more question, if you have the inclination . . .
I put the statement on each frame of the button mc, and it works as expected, 
but as I mouse over the shape, there is a flicker between the up state to the 
over state - I thought it might be that part of the graphic was transparent and 
losing focus, but that is not the case?

http://jimbo.us/lab/FinalAssets3.fla
http://jimbo.us/lab/FinalAssets3.swf


jimbo

*********** REPLY SEPARATOR  ***********

On 6/28/2007 at 9:48 PM Fumio Nonaka wrote:

When the statement you put is processed the play head in the btn_play instance is in the first frame, in which the over_mc instance does not exist. This is what the error tells you. Therefore InteractiveObject.mouseEnabled for over_mc cannot be set.

        trace(btn_play.over_mc);  // Output: null

The statement should be placed in the second frame of the btn_play, or inside the over_mc itself.
_____
Jim Berkey wrote:
Can you explain using' InteractiveObject.mouseEnabled' to allow a mc
inside a mc acting as a button a little more? I have a mc called
button_play, with the three frames (_up, _over, and _down), in the over
frame, instead of a graphic, I placed a mc, gave it instance name over_mc,
and on the main timeline, put:
btn_play.over_mc.mouseEnabled = false;

I got this error:
TypeError: Error #1009: Cannot access a property or method of a null
object reference.
        at FinalAssets2_fla::MainTimeline/FinalAssets2_fla::frame1()
Good luck,
--
Fumio Nonaka
mailto:[EMAIL PROTECTED]
http://www.FumioNonaka.com/
My books<http://www.FumioNonaka.com/Books/index.html>
Flash community<http://F-site.org/>
_______________________________________________
Flashcoders@chattyfig.figleaf.com
To change your subscription options or search the archive:
http://chattyfig.figleaf.com/mailman/listinfo/flashcoders

Brought to you by Fig Leaf Software
Premier Authorized Adobe Consulting and Training
http://www.figleaf.com
http://training.figleaf.com



_______________________________________________
Flashcoders@chattyfig.figleaf.com
To change your subscription options or search the archive:
http://chattyfig.figleaf.com/mailman/listinfo/flashcoders

Brought to you by Fig Leaf Software
Premier Authorized Adobe Consulting and Training
http://www.figleaf.com
http://training.figleaf.com

_______________________________________________
Flashcoders mailing list
Flashcoders@chattyfig.figleaf.com
http://chattyfig.figleaf.com/mailman/listinfo/flashcoders

Reply via email to