flash as3.0关于setRGB的小问题

2025-01-08 01:52:36
推荐回答(1个)
回答1:

首先,可以很负责的告诉你,你的代码是AS2的。
其次可以到帮助中查找ColorTransform 类:
可使用 ColorTransform 类调整显示对象的颜色值。 可以将颜色调整或颜色转换应用于所有四种通道:红色、绿色、蓝色和 Alpha 透明度。
当 ColorTransform 对象应用于显示对象时,将按如下方法为每个颜色通道计算新值:
新红色值 = (旧红色值 * redMultiplier) + redOffset
新绿色值 = (旧绿色值 * greenMultiplier) + greenOffset
新蓝色值 = (旧蓝色值 * blueMultiplier) + blueOffset
新 Alpha 值 = (旧 Alpha 值 * alphaMultiplier) + alphaOffset
如果计算后任何一个颜色通道值大于 255,则该值将被设置为 255。 如果该值小于 0,它将被设置为 0。
可以通过下列方式使用 ColorTransform 对象:
在 BitmapData 类的 colorTransform() 方法的 colorTransform 参数中
作为 Transform 对象(此对象可以用作显示对象的 transform 属性)的 colorTransform 属性

下面的示例使用
TransformExample 类在以渐变图案填充的正方形中创建简单的 sprite。 每次用户单击正方形时,应用程序都将转换正方形 sprite 的颜色,同时添加到红色通道并加亮蓝色通道。 这是由以下步骤完成的:
构造函数创建一个新的 sprite 对象 target。
CustomButton() 构造函数调用 draw() 方法,该方法在 sprite 中绘制一个渐变正方形。
CustomButton() 构造函数为 sprite 添加 click 事件侦听器,该侦听器由 clickHandler() 方法处理。
在 clickHandler() 方法中,两个属性被设置为当前颜色转换的 redOffset 和 blueOffset 属性。 将每项的值调整 25。 然后修改正方形 sprite 的 transform.colorTransform 属性,以使用新的偏移量值。 每次用户单击正方形时,对 clickHandler() 方法的调用都将修改正方形的颜色,方法是增大其红色值并减小其蓝色值。
package {
import flash.display.Sprite;
import flash.display.GradientType;
import flash.geom.ColorTransform;
import flash.events.MouseEvent;

public class ColorTransformExample extends Sprite {
public function ColorTransformExample() {
var target:Sprite = new Sprite();
draw(target);
addChild(target);
target.useHandCursor = true;
target.buttonMode = true;
target.addEventListener(MouseEvent.CLICK, clickHandler)
}
public function draw(sprite:Sprite):void {
var red:uint = 0xFF0000;
var green:uint = 0x00FF00;
var blue:uint = 0x0000FF;
var size:Number = 100;
sprite.graphics.beginGradientFill(GradientType.LINEAR, [red, blue, green], [1, 0.5, 1], [0, 200, 255]);
sprite.graphics.drawRect(0, 0, 100, 100);
}
public function clickHandler(event:MouseEvent):void {
var rOffset:Number = transform.colorTransform.redOffset + 25;
var bOffset:Number = transform.colorTransform.redOffset - 25;
this.transform.colorTransform = new ColorTransform(1, 1, 1, 1, rOffset, 0, bOffset, 0);
}
}
}