Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Actionscript 3 将同一子图形添加到多个对象_Actionscript 3_Flash_Shape - Fatal编程技术网

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);
  • 由于我找不到如何更改现有形状的颜色,我创建了其中3个形状,但颜色不同,是否可以更改现有形状的颜色

  • 有可能在其他类中使用相同的形状吗?还是我必须再创造一次

  • 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.添加孩子(我的形状);
    }

  • 当第一个代码(能力3到5)运行所有3个childs show时,但当运行其他if命令能力6到9时,会删除它们的孩子,但3到5会删除他们的孩子。我可以多次使用相同的形状吗

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

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

    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)