クリックしたときにパーンと発光するようなエフェクトを、TweensyGroupとFilterでやってみました。
以下の記事を参考にさせていただきました。
kanariia.net BLOG – [tweensy]いろいろ試してみる:TweensyGroupで特殊プロパティをトゥイーン
feb19.jp blog – ランタイムビットマップキャッシュ(.cacheAsBitmap)
以下ソース。
package { import com.flashdynamix.motion.*; import fl.motion.easing.*; import flash.display.Sprite; import flash.events.MouseEvent; import flash.filters.GlowFilter; public class Main extends Sprite { private var _rect :Sprite; private var _circle :Sprite; public function Main() { // 背景 graphics.beginFill(0x000000, 1.00); graphics.drawRect(0, 0, stage.stageWidth, stage.stageHeight); graphics.endFill(); // 矩形 _rect = new Sprite(); _rect.graphics.beginFill(0xff6600, 1.00); _rect.graphics.drawRect( -50, -50, 100, 100); _rect.graphics.endFill(); _rect.x = stage.stageWidth / 3 * 1; _rect.y = stage.stageHeight / 2; _rect.addEventListener(MouseEvent.CLICK, _rectClickHandler); _rect.buttonMode = true; addChild(_rect); // 円 _circle = new Sprite(); _circle.graphics.beginFill(0x0099ff, 1.00); _circle.graphics.drawCircle(0, 0, 60); _circle.graphics.endFill(); _circle.x = stage.stageWidth / 3 * 2; _circle.y = stage.stageHeight / 2; _circle.addEventListener(MouseEvent.CLICK, _circleClickHandler); _circle.buttonMode = true; addChild(_circle); } /** * 矩形クリック * @param e */ private function _rectClickHandler(e:MouseEvent):void { // グローフィルター生成 var blurFilter:GlowFilter = new GlowFilter(0xff6600, 0.80, 64, 64, 2, 2); // TweensyGroup生成 var tg:TweensyGroup = new TweensyGroup(); // フィルタートゥイーン tg.filterTo(_rect, blurFilter, { blurX:0, blurY:0, alpha:0.00 }, 0.60, Sine.easeIn, 0.20); // トゥイーン完了時の処理 tg.onComplete = function():void { _rect.filters = null; }; } /** * 円クリック * @param e */ private function _circleClickHandler(e:MouseEvent):void { // グローフィルター生成 var blurFilter:GlowFilter = new GlowFilter(0x0099ff, 0, 0, 0, 2, 2); // TweensyGroup生成 var tg:TweensyGroup = new TweensyGroup(); // フィルタートゥイーン tg.filterTo(_circle, blurFilter, { blurX:64, blurY:64, alpha:0.80 }, 0.02, Cubic.easeOut); tg.filterTo(_circle, blurFilter, { blurX:0, blurY:0, alpha:0.00 }, 0.60, Sine.easeIn, 0.20); // トゥイーン完了時の処理 tg.onComplete = function():void { _circle.filters = null; }; } } }
「矩形クリック」の方法でだいたい想定していた発光となったのですが、なぜか2度目のクリックからはフィルターが発動しなくなります。原因がわからなかいのですが、とりあえず「円クリック」の方法ならうまくいくようです。