2

我正在尝试将对象放在将被遮盖的影片剪辑中,以允许用户滚动它们

我目前的解决方案是为每个内部影片剪辑添加事件监听器......

outer_mc.myObject1.addEventListener(MouseEvent.MOUSE_DOWN, swapMovie);
outer_mc.myObject2.addEventListener(MouseEvent.MOUSE_DOWN, swapMovie);
outer_mc.myObject3.addEventListener(MouseEvent.MOUSE_DOWN, swapMovie);
outer_mc.myObject4.addEventListener(MouseEvent.MOUSE_DOWN, swapMovie);
outer_mc.myObject5.addEventListener(MouseEvent.MOUSE_DOWN, swapMovie);
outer_mc.myObject6.addEventListener(MouseEvent.MOUSE_DOWN, swapMovie);
outer_mc.myObject7.addEventListener(MouseEvent.MOUSE_DOWN, swapMovie);
outer_mc.myObject8.addEventListener(MouseEvent.MOUSE_DOWN, swapMovie);
outer_mc.myObject9.addEventListener(MouseEvent.MOUSE_DOWN, swapMovie);
outer_mc.myObject10.addEventListener(MouseEvent.MOUSE_DOWN, swapMovie);
outer_mc.myObject11.addEventListener(MouseEvent.MOUSE_DOWN, swapMovie);
outer_mc.myObject12.addEventListener(MouseEvent.MOUSE_DOWN, swapMovie);

function swapMovie(e:MouseEvent) {
    trace(e.currentTarget.name + " selected");
}

由于可以有一个内部电影剪辑的可变列表,这可能会变得不规则(而且丑陋:)所以我正在尝试为父对象添加一个侦听器这是当前的尝试......

outer_mc.addEventListener(MouseEvent.MOUSE_DOWN, swapMovie);

function swapMovie(e:MouseEvent) {
    trace(e.currentTarget.name + " selected");
}

然而,这只是返回“outer_mc”并使用 target 而不是 currentTarget 返回随机实例编号 Flash 分配 instance128、实例 23 等。

有没有人有一个解决方案可以获取将在 actionscript 3 中工作的子对象的实例名称?我看过,最接近的是使用不返回实际实例名称的目标解决方案。

4

2 回答 2

2

尝试:

for (var i:int = 0; i < outer_mc.numChildren; i++) {
 var child:* = outer_mc.getChildAt(i);
 child.addEventListener(MouseEvent.MOUSE_DOWN, swapMovie);
}

在这种情况下,它将循环遍历outer_mc 的所有子节点,并将鼠标按下事件侦听器添加到每个子节点。

于 2012-10-26T14:51:39.703 回答
1

你可以尝试做这样的事情:

function swapMovie(e:MouseEvent) {
    var current = e.target;
    parent = current.parent;
    while (parent != e.currentTarget)
    {
        current = current.parent;
        parent = current.parent;
    }

    //Current should be your object, now
}

基本上,它会上升一级,直到它找到outer_mc,然后停止,并返回它被点击的孩子。

于 2012-10-26T14:52:30.600 回答