Actionscript 3 将同一子图形添加到多个对象
我有一个向量形状:Actionscript 3 将同一子图形添加到多个对象,actionscript-3,flash,shape,Actionscript 3,Flash,Shape,我有一个向量形状: my_shape.graphics.lineStyle(1, 0x00FF00, 1); my_shape.graphics.moveTo(30, 38); my_shape.graphics.lineTo(7, 38); my_shape.graphics.curveTo(-1, 38, -1, 36); my_shape.graphics.lineTo(-1, 3); my_s
my_shape.graphics.lineStyle(1, 0x00FF00, 1);
my_shape.graphics.moveTo(30, 38);
my_shape.graphics.lineTo(7, 38);
my_shape.graphics.curveTo(-1, 38, -1, 36);
my_shape.graphics.lineTo(-1, 3);
my_shape.graphics.curveTo(-1, -1, 3, -1);
my_shape.graphics.lineTo(35, -1);
my_shape.graphics.curveTo(39, -1, 39, 3);
my_shape.graphics.lineTo(39, 30);
if(ability3.Locked==true&&Ability.suma>=5){
能力3.锁定=错误;
能力3.添加孩子(我的形状);
能力4.锁定=错误;
能力4.添加孩子(我的形状);
能力5.锁定=错误;
能力5.添加孩子(我的形状B);
}
if(ability6.Locked==true&&Ability.suma>=10){
能力6.锁定=错误;
能力6.添加孩子(我的形状B);
能力7.锁定=错误;
能力7.添加孩子(我的形状);
能力8.锁定=错误;
能力8.添加孩子(我的形状);
能力9.锁定=错误;
能力9.添加孩子(我的形状);
}
谢谢。一个显示对象一次只能在一个显示列表上。这意味着如果我执行以下操作:
container1.addChild(我的形状);
container2.addChild(我的形状)代码>
my_shape
将在container2
通常,您会为这个特定的形状创建一个类,并根据需要实例化它,但从您的代码判断,我不确定您是否在使用OOP(如果我错了,请纠正我,我会更新我的答案)
话虽如此,您始终可以编写一个函数,使用您选择的颜色创建所需的形状:
function createShape(color:uint):Shape
{
var shape:Shape = new Shape();
shape.graphics.lineStyle(1, color, 1);
shape.graphics.moveTo(30, 38);
shape.graphics.lineTo(7, 38);
shape.graphics.curveTo(-1, 38, -1, 36);
shape.graphics.lineTo(-1, 3);
shape.graphics.curveTo(-1, -1, 3, -1);
shape.graphics.lineTo(35, -1);
shape.graphics.curveTo(39, -1, 39, 3);
shape.graphics.lineTo(39, 30);
return shape;
}
现在,您可以在需要创建形状时调用该函数:
if(ability3.Locked == true && Ability.suma >= 5){
ability3.Locked = false;
ability3.addChild(createShape(someColor));
ability4.Locked = false;
ability4.addChild(createShape(someOtherColor));
ability5.Locked = false;
ability5.addChild(createShape(anotherColor));
}
其中,someColor
、someOtherColor
和另一种颜色
分别表示不同的uint
(颜色)。以下是将图形从一个对象复制到另一个对象并更改其颜色的示例:
var newShape:Shape = new Shape();
newShape.graphics.copyFrom(my_shape.graphics);
var colorTrans:ColorTransform = new ColorTransform();
colorTrans.color = 0xFFFFFF;
newShape.transform.colorTransform = colorTrans;
graphics类有一个copyFrom
方法。您可以使用colorTransform
对象轻松更改颜色。我将发布一个代码示例。这非常有效。谢谢我想为其他东西创建相同的脚本,在巫婆的情况下,我需要这些形状的名称,以便我可以单独使用它们。有没有一种方法可以让形状看起来像这样:“addChild(createShape(形状的名称,颜色));”?看起来您已经得到了答案,但是通过上面的示例,您可以简单地将createShape
的结果分配给一个变量:var-shape:shape=createShape(color)代码>