[ActionScript] AS3代码实现曝光过度效果

时间:2023-03-09 00:11:34
[ActionScript] AS3代码实现曝光过度效果
 package
{
import flash.display.Loader;
import flash.display.SimpleButton;
import flash.display.Sprite;
import flash.events.Event;
import flash.events.MouseEvent;
import flash.geom.ColorTransform;
import flash.net.URLRequest; /**
* ...
* @author FrostYen
*/
public class ColorTransformExample extends Sprite
{
private var _ldr:Loader = new Loader();
private var _sp:Sprite = new Sprite();
private var _btn:Sprite = new Sprite();
private var _colorTransform:ColorTransform = new ColorTransform(1, 1, 1, 1, 255, 255, 255, 0);
private var _frame:int=15;//相当于影片剪辑动画的帧数
public function ColorTransformExample() { _ldr.load(new URLRequest("image/farewell-to-fall.jpg"));
_sp.transform.colorTransform = _colorTransform; _btn.graphics.beginFill(0x666666);
_btn.graphics.drawRect(0, 0, 100, 50);
_btn.graphics.endFill();
_btn.buttonMode = true;
_btn.x = 700;
_btn.y = 100; this.addChild(_btn);
this.addChild(_sp);
_sp.addChild(_ldr);
stage.frameRate = 36;//帧频 _ldr.contentLoaderInfo.addEventListener(Event.COMPLETE, onImageLoaded);
_btn.addEventListener(MouseEvent.CLICK, onClick);
} private function onClick(e:MouseEvent):void
{
addEventListener(Event.ENTER_FRAME, onEnter);
} private function onEnter(e:Event):void
{
if (_colorTransform.redOffset > 0) {
_colorTransform.redOffset -= 255/_frame;
_colorTransform.greenOffset -= 255/_frame;
_colorTransform.blueOffset -= 255/_frame;
_sp.transform.colorTransform = _colorTransform;
}else {
_colorTransform = new ColorTransform(1, 1, 1, 1, 255, 255, 255, 0);
removeEventListener(Event.ENTER_FRAME, onEnter);
}
} private function onImageLoaded(e:Event):void
{ }
} }