将变量添加到flash中的movieClip以在Flash构建器中使用

时间:2012-08-16 23:03:11

标签: actionscript-3 flash actionscript flash-builder

我在Flash专业版中创建了一个带有几个矩形的.fla。每个矩形都是不同的颜色,是一个单独的影片剪辑。然后我有一个包含其中所有矩形的影片剪辑(RectContainer),并且我添加了“AS Linkage”,因此我可以在Flash构建器中创建此容器类的实例(在我导出为a .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. ???
}

2 个答案:

答案 0 :(得分:1)

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

enter image description here

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

不使用currentTarget,因为存在潜在风险。如果孩子反对重叠,您的期望可能会有所不同。有关更多信息,请谷歌。

您需要了解targetcurrentTarget之间的区别。这是非常重要的概念。

enter image description here


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);
}

答案 1 :(得分: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中,在其符号属性中将自定义类作为基类。