在Flash CS4 AS3.0中,如何通过单击更改形状填充颜色?

时间:2011-06-15 00:21:23

标签: flash actionscript-3 fill cs4

我正在为年幼的孩子建立一个活动,他们点击调色板中的颜色(鼠标光标将是一个画笔),然后点击我将分层创建图片的各种形状。

取决于他们选择的颜色,他们应该能够用这种颜色填充形状。通过改变主意改变颜色等等。

如果更容易使用早期的AS版本,我没有问题。

3 个答案:

答案 0 :(得分:2)

您可以使用flash.filters.ColorMatrixFilter - 链接文档中有一些示例。

通过为_Color属性指定十六进制颜色值,使用Tweener's ColorShortcuts也很容易。此方法还可以通过选择为所需的time属性指定非零值来轻松淡入颜色。

Tweener.addTween(myShape, {time: 0.0, _Color: 0xFF0000});

请记住,任何位图过滤器(如阴影)或形状的任何子项(如果它是精灵)也会改变颜色。虽然使用容器分离形状的每个元素同样容易。


[编辑] ,而不是像我前面提到的那样使用Tweener,或者使用相当复杂的ColorMatrixFilter,您可以使用ColorTransform对象轻松更改显示对象的颜色。这也是AS3中最常用的方法。这是一个例子:

import flash.geom.ColorTransform;

var myShape:Shape = new Shape();
myShape.graphics.beginFill(0xFF0000, 1.0);
myShape.graphics.drawRect(0, 0, 100, 100);
myShape.graphics.endFill();

addChild(myShape);

var myColorTransform:ColorTransform = new ColorTransform;
myColorTransform.color = 0x0000FF;
myShape.transform.colorTransform = myColorTransform;

上面的代码绘制一个红色矩形,将其添加到舞台上,然后使用ColorTransform对象将其颜色更改为蓝色。

答案 1 :(得分:0)

我必须警告你,让这个工作方式与Paint工作的方式相同,实际上非常困难。

我会考虑将整个画布设为Bitmap

资源:

  1. Bitmap
  2. BitmapData(这个会有关键方法)
  3. 绘制形状时,请使用fillRect()方法。对于像油漆桶这样的工具(如油漆),请查看floodFill()方法。

    我不确定怎么可能创建一个油漆桶工具,但是我的想法正在考虑使用getPixel()来检查周围每个像素的颜色。单击,然后使用setPixel()更改每个的颜色。你将不得不创建一个方法,返回一个具有特定颜色的所有像素的数组,而不是被另一种颜色阻挡(即所以你不要使用油漆桶并改变所有<的颜色/ strong>画布上的像素。)

    这些东西也可能存在库。

    希望这能让你走上正轨。

答案 2 :(得分:0)

或者只是使用过滤器。见DisplayObject.filters