1

我在 Flash Professional 中创建了一个带有多个矩形的 .fla。每个矩形都有不同的颜色,是一个单独的影片剪辑。然后我有一个包含所有矩形的影片剪辑 ( RectContainer),并且我添加了“AS Linkage”,因此我可以在 Flash 构建器中创建这个容器类的实例(在我导出为 .swc 之后)。

我的问题是这个。如果我想为每个矩形添加一个变量,我如何从 Flash builder 中读取这个值。

例如,我想将字符串变量添加到带有单词 "red" 的红色矩形、带有 "blue" 的蓝色矩形等。

然后我想将侦听器添加到矩形,所以当它们被点击时,我可以获得被点击的矩形的颜色字符串。

for (var i:int = 0; i < rectContainer.numChildren; i++) {
    rectContainer.getChildAt(i).addEventListener(MouseEvent.MOUSE_DOWN, fl_Click);
}

function fl_click(event:MouseEvent):void
{
    event.currentTarget. ???
}
4

2 回答 2

1

首先,在 Flash 中,您必须像图像一样设置名称。

在此处输入图像描述

您可以像这样访问以下内容。

不使用 acurrentTarget因为有潜在风险。如果子对象重叠,您的期望可能会有所不同。欲了解更多信息谷歌它。

正是您需要知道 和 之间的target区别currentTarget。这是非常重要的概念。

在此处输入图像描述


public function Constructor()
{
   var container:RectContainer = new RectContainer();
   this.addEvent(container);
   var i:int = 0;
   while(i<container.numChildren)
   {
        container.addEventListener(MouseEvent.CLICK, onClick);
        i++;
   }
}

private function onClick(e:MouseEvent):void
{
    var mc:MovieClip = e.target as MovieClip;

    if(mc.name == "myCircle1")
    {

    }
    else if(mc.name == "myCircle2")
    {

    }
    else if(mc.name == "myCircle3")
    {

    }

    trace(mc.name);
}
于 2012-08-17T00:21:13.473 回答
0

您应该为矩形创建一个自定义类以继承(或在自定义类中绘制矩形并完全放弃 .fla)。然后,您可以提供一个公共属性来保存您想要的值,创建任何常用函数,例如对颜色标签执行某些操作的单击处理程序。

public class MyRectangle extends Sprite {
    public var label:String;

    public function MyRectangle(){
        this.addEventListener(MouseEvent.CLICK, clickHandler,false,0,true);
    }

    private function clickHandler(e:MouseEvent):void {
        trace(label);
    }
}

对于您的矩形,如果在 Flash IDE 中,在其符号属性中将您的自定义类作为基类。

于 2012-08-16T23:42:50.627 回答