BlurFilter Animation (with Math.sin modulation)
♥0 |
Line 37 |
Modified 2010-03-05 05:07:52 |
MIT License
archived:2017-03-20 15:22:56
ActionScript3 source code
/**
* Copyright 883108 ( http://wonderfl.net/user/883108 )
* MIT License ( http://www.opensource.org/licenses/mit-license.php )
* Downloaded from: http://wonderfl.net/c/xQxK
*/
package {
import flash.display.*;
import flash.net.*;
import flash.system.*;
import flash.events.*;
import flash.geom.*;
import flash.text.*;
import flash.filters.*;
public class FilterAnimationDocument extends Sprite {
private var _sprite:Sprite;
private var _angle:Number = 0;
private var _speed:Number = 10;
public function FilterAnimationDocument() {
init();
}
private function init():void {
var tex:TextField = new TextField ;
addChild(tex);
tex.width = 450;
tex.x = tex.y = 10;
tex.multiline = true;
tex.text =
'フィルタをフレーム毎に適用してアニメーションさせます。\n' +
'for文を使わず、サイン値を利用して変調させた値を元に\nフィルタを連続的に適用しています。';
// フィルタを適用するスプライトを作成します。
var size:Number = 200;
addChild(_sprite = new Sprite);
_sprite.graphics.beginFill(0xd90028);
_sprite.graphics.drawRect(stage.stageWidth / 2 - size / 2, stage.stageHeight / 2 - size / 2, size, size);
// ENTER_FRAMEにハンドルを割り当てます。
_sprite.addEventListener(Event.ENTER_FRAME, enterFrameHandler);
}
private function enterFrameHandler($event:Event):void{
// 角度を速度分加算してサイン値を求めます。
// サイン値は周期的に-1から1までの間で変調を繰り返すので、
// サイン値に1を足した数を2で割り、周期を0から1に変換した値、
// サイン値を使用してフィルタを適用します。
_angle += _speed;
var ratio:Number = (Math.sin(_angle * Math.PI / 180) + 1 )/ 2;
_sprite.filters = [new BlurFilter(ratio * 20, ratio * 20, 3)];
}
}
}