我正在为年幼的孩子构建一个活动,他们单击调色板中的颜色(鼠标光标将是画笔)然后单击我将分层以创建图片的各种形状。
根据他们选择的颜色,他们应该能够用该颜色填充形状。改变主意中途改变颜色等。
如果它更容易,我使用早期的 AS 版本没有问题。
我正在为年幼的孩子构建一个活动,他们单击调色板中的颜色(鼠标光标将是画笔)然后单击我将分层以创建图片的各种形状。
根据他们选择的颜色,他们应该能够用该颜色填充形状。改变主意中途改变颜色等。
如果它更容易,我使用早期的 AS 版本没有问题。
您可以使用flash.filters.ColorMatrixFilter - 链接文档中有示例。
使用Tweener 的 ColorShortcuts通过为_Color
属性分配一个十六进制颜色值也很容易做到这一点。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 对象将其颜色更改为蓝色。
我必须警告你,让它以与 Paint 工作相同的方式工作实际上非常困难。
我会考虑让你的整个画布变成Bitmap
.
资源:
Bitmap
BitmapData
(这个会有关键方法)绘制形状等时,请使用该fillRect()
方法。对于像油漆桶这样的工具(比如在油漆中),看看floodFill()
方法。
我不太确定如何创建一个油漆桶工具,但我的想法是沿着循环的思路思考,该循环用于getPixel()
检查您单击的周围每个像素的颜色,然后用于setPixel()
更改每个颜色。您必须创建一个方法,该方法返回具有某种颜色且未被另一种颜色阻挡的所有像素的数组(即,您不使用油漆桶并更改所有像素的颜色帆布)。
这类东西也可能有图书馆。
希望这能让你走上正轨。
或者只是使用过滤器。看DisplayObject.filters