将相同的子形状添加到多个对象

时间:2014-09-15 19:44:09

标签: 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_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);
  1. 由于我无法找到如何更改现有形状的颜色,我只使用颜色差异创建其中3种颜色,是否可以更改现有形状的颜色?

  2. 是否可以在其他类中使用相同的形状?或者我必须再次创建它?

  3. if(ability3.Locked == true && Ability.suma >= 5){ ability3.Locked = false; ability3.addChild(my_shape); ability4.Locked = false; ability4.addChild(my_shapea); ability5.Locked = false; ability5.addChild(my_shapeb); } if(ability6.Locked == true && Ability.suma >= 10){ ability6.Locked = false; ability6.addChild(my_shapeb); ability7.Locked = false; ability7.addChild(my_shapea); ability8.Locked = false; ability8.addChild(my_shape); ability9.Locked = false; ability9.addChild(my_shape); }

  4. 当第一个代码(能力3到5)运行所有3个孩子显示但是当涉及到运行其他如果命令能力6到9得到他们的孩子但3到5得到他们被移除..我可以使用多次相同形状

    我希望你明白我的意思xD 感谢。

2 个答案:

答案 0 :(得分:1)

显示对象一次只能位于单个显示列表中。这意味着如果我执行以下操作:

container1.addChild(my_shape); container2.addChild(my_shape);

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

其中someColorsomeOtherColoranotherColor各自代表不同的uint(颜色)。

答案 1 :(得分:1)

以下是将图形从一个对象复制到另一个对象并更改其颜色的示例:

var newShape:Shape = new Shape();
newShape.graphics.copyFrom(my_shape.graphics);

var colorTrans:ColorTransform = new ColorTransform();
colorTrans.color = 0xFFFFFF;
newShape.transform.colorTransform = colorTrans;