我正在为年幼的孩子建立一个活动,他们点击调色板中的颜色(鼠标光标将是一个画笔),然后点击我将分层创建图片的各种形状。
取决于他们选择的颜色,他们应该能够用这种颜色填充形状。通过改变主意改变颜色等等。
如果更容易使用早期的AS版本,我没有问题。
答案 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
。
资源:
Bitmap
BitmapData
(这个会有关键方法)绘制形状时,请使用fillRect()
方法。对于像油漆桶这样的工具(如油漆),请查看floodFill()
方法。
我不确定怎么可能创建一个油漆桶工具,但是我的想法正在考虑使用getPixel()
来检查周围每个像素的颜色。单击,然后使用setPixel()
更改每个的颜色。你将不得不创建一个方法,返回一个具有特定颜色的所有像素的数组,而不是被另一种颜色阻挡(即所以你不要使用油漆桶并改变所有<的颜色/ strong>画布上的像素。)
这些东西也可能存在库。
希望这能让你走上正轨。
答案 2 :(得分:0)
或者只是使用过滤器。见DisplayObject.filters