2012-12-29 93 views
0

我接手了一个项目,我真的是新来的as3!我需要解决一个未解决的问题,希望不必从头开始。是否可以解决这个问题?

我有一个contaner_mc,举办了四个puppet_mc的(puppet_mc1puppet_mc2puppet_mc3puppet_mc4),每个puppet_mc拥有四个按钮(buddy_bnt_1buddy_bnt_2buddy_bnt_3buddy_bnt_4)。

我需要听众知道点击了哪个按钮以及点击了哪个按钮?

Object(this).contaner_mc.puppet_mc?.buddy_bnt_?.addEventListener(MouseEvent.CLICK, fl_Click); 

function fl_Click(event:MouseEvent):void 
{ 
    gotoAndPlay(15); 
} 

任何意见将不胜感激!

回答

1

事件冒泡应魔:

container_mc.addEventListener(MouseEvent.CLICK, click_handler); 

function click_handler(event:MouseEvent):void { 
    if (event.currentTarget == event.target) { 
    return; // the container is the dispatcher 
    } 

    const sprite:Sprite = event.target as Sprite; // just for a typing 
    if (!sprite) { 
    trace("event.target is no sprite, set break point here for debugging."); 
    return; 
    } 

    if (sprite.name == 'buddy_bnt_1' || sprite.name == 'puppet_mc1') { 
    // do something 
    } else if (sprite.name == 'buddy_bnt_2' || sprite.name == 'puppet_mc2') { 
    // do something different 
    } else if (sprite.name == 'buddy_bnt_3' || sprite.name == 'puppet_mc3') { 
    // do something different 
    } else if (sprite.name == 'buddy_bnt_4' || sprite.name == 'puppet_mc4') { 
    // do something different 
    } 
} 
+0

嘿谢谢你的快速回复!但我得到这个错误类型错误:错误#1009:无法访问空对象引用的属性或方法。 \t at chatV3_fla :: MainTimeline/click_handler() – shelfish

+0

看起来转换为精灵已损坏。你使用图像作为按钮吗? –

+0

是的..那是不好的? – shelfish

0
container_mc.addEventListener(MouseEvent.CLICK, clickHandler); 

function clickHandler(event:MouseEvent):void 
{ 
    var clickedObject:DisplayObject = event.target as DisplayObject; 

    trace (clickedObject.name); // name of button clicked 
    trace (clickedObject.parent.name); // name of the parent 
} 

我用的DisplayObject,这样的代码将与精灵,影片剪辑,或任何的DisplayObject工作。所以请确保您进口,如果你还没有:

import flash.display.DisplayObject; 
+0

“clickedObject.name”省长谢谢大家! – shelfish

+0

接受答案。 – prototypical

相关问题