我在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. ???
}
答案 0 :(得分:1)
首先,在flash中你必须像图像一样设置名称。
您可以像这样访问以下内容。
不使用currentTarget
,因为存在潜在风险。如果孩子反对重叠,您的期望可能会有所不同。有关更多信息,请谷歌。
您需要了解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);
}
答案 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中,在其符号属性中将自定义类作为基类。