1

基本上我有x 个圆圈表示为 MovieClips。它们都被分配了相同的基色(例如红色)。它们都应该具有从 0 到 1 的亮度属性(0 表示完全白色,1 表示完全红色)。

我想要以下属性来在舞台上表示这些圆圈:

  1. 当圆圈不重叠时,它们的表示方式如上所述。
  2. 当圆圈重叠时,重叠区域应具有与原始圆圈相同的基色,但该区域的亮度应为定义重叠的所有圆圈的亮度之和。
  3. 亮度在 1 处饱和。因此,亮度为 0.8 的 2 个圆圈的重叠是 1(最大值)而不是 1.6。

我想知道是否可以在圆圈上使用某种 BitmapFilter 来实现这些属性?还是我找错地方了?

我对 Actionscript 比较陌生,所以欢迎任何指针!

4

1 回答 1

2

您好,欢迎来到 SO 和 AS3!

我将分别考虑每一点:

1) 很简单,您可能已经知道“addChild()”会将MovieClip 对象添加到显示列表中,这意味着Flash 将在每一帧都渲染它们。

2) 最简单的方法是通过“混合模式”,这是 Adob​​e 处理重叠显示对象的方法。

http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/display/DisplayObject.html#blendMode

尝试将每个圆圈的 .blendMode 属性设置为 BlendMode.ADD:

var circle:MovieClip = new MovieClip();
circle.blendMode = BlendMode.ADD;

3) 如果 BlendMode.ADD 没有给您想要的结果,请尝试创建一个自定义着色器来完成这项工作。

http://help.adobe.com/en_US/as3/dev/WSB19E965E-CCD2-4174-8077-8E5D0141A4A8.html

恕我直言,Blendmode 是实现所需效果的最简单方法,如果您想要精确自定义,则使用 blendShader。如果您还有其他问题,请发表评论!

一些教程和示例:

http://www.learningactionscript3.com/2007/11/03/more-properties-blendmodes-filters/

http://active.tutsplus.com/tutorials/games/introducing-blend-modes-in-flash/

干杯,

Ĵ

于 2011-07-19T21:57:43.177 回答