- 积分
- 135291
- 注册时间
- 2014-12-27
- 最后登录
- 2019-11-19
- 在线时间
- 580 小时
- 威望
- 562
- 贡献
- 29
- 金币
- 51817
- 钢镚
- 1422
- 交易凭证
- 1
- 分享
- 0
- 精华
- 33
- 帖子
- 2094
- 主题
- 1742
TA的每日心情 | 擦汗 2018-4-10 15:18 |
---|
签到天数: 447 天 [LV.9]以坛为家II
超级版主
    
- 威望
- 562
- 贡献
- 29
- 金币
- 51817
- 钢镚
- 1422
 
|
- package
- {
- import com.actionsnippet.qbox.QuickBox2D;
- import com.actionsnippet.qbox.QuickObject;
- import flash.display.Bitmap;
- import flash.display.BitmapData;
- import flash.display.BlendMode;
- import flash.display.MovieClip;
- import flash.display.Sprite;
- import flash.events.Event;
- import flash.filters.BlurFilter;
- import flash.geom.Matrix;
- import flash.geom.Point;
- import frocessing.color.ColorHSV;
- import idv.cjcat.stardust.common.clocks.SteadyClock;
- import idv.cjcat.stardust.twoD.actions.waypoints.Waypoint;
- import idv.cjcat.stardust.twoD.renderers.PixelRenderer;
- import idv.cjcat.stardust.twoD.zones.CircleZone;
- import net.hires.debug.Stats;
-
- /**
- * Waypointのテスト
- * @author paq89
- */
- [SWF(width=465, height=465, backgroundColor=0x000000, frameRate=60)]
- public class Main extends Sprite
- {
- static private const ZERO_POINT:Point = new Point();
- static private const BLUR:BlurFilter = new BlurFilter();
- static private const WAYPOINT_COUNT:uint = 7;
- private var _emitter:WaypointsEmitter;
- private var _waypoints:/*Waypoint*/Array;
- private var _circles:/*QuickObject*/Array;
- private var _canvas:BitmapData;
- private var _blurEffect:BitmapData;
- private var _hsv:ColorHSV;
- private var _matrix:Matrix;
- private var _kirakira:BitmapData;
-
- public function Main():void
- {
- if (stage) init();
- else addEventListener(Event.ADDED_TO_STAGE, init);
- }
-
- private function init(e:Event = null):void
- {
- removeEventListener(Event.ADDED_TO_STAGE, init);
-
- // 変数を初期化
- _hsv = new ColorHSV(0, 0.7);
- _waypoints = []
- _circles = [];
-
- // 背景
- graphics.beginFill(0x000000); graphics.drawRect(0, 0, 465, 465);
-
- // パーティクルを表示するビットマップを作成
- _canvas = new BitmapData(465, 465, true, 0x00000000);
- _blurEffect = new BitmapData(465, 465, true, 0x00000000);
- addChild(Bitmap(new Bitmap(_blurEffect)));
- addChild(Bitmap(new Bitmap(_canvas)));
-
- // QuickBox2D
- initQuickBox2D();
-
- // Stardust
- initStardust();
-
- // キラキラエフェクト
- _kirakira = new BitmapData(465 / 4, 465 / 4, false, 0x000000);
- var bmp:Bitmap = new Bitmap(_kirakira, "never", true);
- bmp.scaleX = bmp.scaleY = 4;
- bmp.smoothing = true;
- bmp.blendMode = BlendMode.ADD;
- addChild(bmp);
- _matrix = new Matrix(0.25, 0, 0, 0.25);
-
- // イベントリスナー
- addEventListener(Event.ENTER_FRAME, loop);
- }
-
- /*
- * Stardust
- */
- private function initStardust():void
- {
- // パーティクルシステムの構築
- _emitter = new WaypointsEmitter(new SteadyClock(0.7), _waypoints);
- var renderer:PixelRenderer = new PixelRenderer(_canvas);
- renderer.addEmitter(_emitter);
- }
-
- /*
- * QuickBox2D
- */
- private function initQuickBox2D():void
- {
- var mc:MovieClip = MovieClip(addChildAt(new MovieClip, 1));
- mc.buttonMode = true;
- var qbox:QuickBox2D = new QuickBox2D(mc, { gravityY:0 } );
- qbox.setDefault( { lineColor:0xFFFFFF, fillAlpha:0 } );
- qbox.addBox( { x:-1.5, y:7.75, width:3, height: 15.5, density:0} );
- qbox.addBox( { x:17, y:7.75, width:3, height: 15.5, density:0 } );
- qbox.addBox( { x:7.75, y:-1.5, width:15.5, height: 3, density:0 } );
- qbox.addBox( { x:7.75, y:17, width:15.5, height: 3, density:0 } );
- qbox.start();
- qbox.mouseDrag();
-
- var hsv:ColorHSV = new ColorHSV(0, 0.7, 1);
- for (var i:int = 0; i < WAYPOINT_COUNT; i++)
- {
- hsv.h = i * (360 / WAYPOINT_COUNT);
- var x:int = (Math.random() * 465) >> 0;
- var y:int = (Math.random() * 465) >> 0;
- var circle:QuickObject = qbox.addCircle( { x:x / 30, y:y / 30, radius:10 / 30, restitution:0.5, lineColor:hsv.value } );
- _circles.push(circle);
- _waypoints.push(new Waypoint(circle.x*30, circle.y*30));
- }
- }
-
- /*
- * エンターフレームイベント
- */
- private function loop(e:Event):void
- {
- // Waypointの位置を調整
- for (var i:int = 0; i < WAYPOINT_COUNT; i++)
- {
- _waypoints[i].x = _circles[i].x * 30;
- _waypoints[i].y = _circles[i].y * 30;
- }
-
- CircleZone(_emitter.position.zone).x = _waypoints[0].x;
- CircleZone(_emitter.position.zone).y = _waypoints[0].y;
- CircleZone(_emitter.deathZone.zone).x = _waypoints[WAYPOINT_COUNT-1].x;
- CircleZone(_emitter.deathZone.zone).y = _waypoints[WAYPOINT_COUNT-1].y;
-
- // キラキラエフェクト
- _kirakira.fillRect(_kirakira.rect, 0x00000000);
- _kirakira.draw(_canvas, _matrix);
-
- // 残像エフェクト
- _blurEffect.draw(_canvas);
- _blurEffect.applyFilter(_blurEffect, _canvas.rect, ZERO_POINT, BLUR);
- _canvas.fillRect(_canvas.rect, 0x00000000);
-
- // パーティクルの色相を変更
- _hsv.h++;
- _emitter.color.color = _hsv.value32;
-
- // エミッターを更新
- _emitter.step();
- }
-
- }
-
- }
- import idv.cjcat.stardust.common.clocks.Clock;
- import idv.cjcat.stardust.common.initializers.Color;
- import idv.cjcat.stardust.common.initializers.Mass;
- import idv.cjcat.stardust.common.math.UniformRandom;
- import idv.cjcat.stardust.twoD.actions.DeathZone;
- import idv.cjcat.stardust.twoD.actions.FollowWaypoints;
- import idv.cjcat.stardust.twoD.actions.Move;
- import idv.cjcat.stardust.twoD.actions.SpeedLimit;
- import idv.cjcat.stardust.twoD.emitters.Emitter2D;
- import idv.cjcat.stardust.twoD.initializers.Position;
- import idv.cjcat.stardust.twoD.zones.CircleZone;
- class WaypointsEmitter extends Emitter2D
- {
- public var color:Color;
- public var deathZone:DeathZone;
- public var position:Position;
-
- public function WaypointsEmitter(clock:Clock, waypoints:Array)
- {
- super(clock);
-
- color = new Color();
- position = new Position(new CircleZone(0, 0, 20));
- deathZone = new DeathZone(new CircleZone(0, 0, 20));
-
- addInitializer(color);
- addInitializer(position);
- addInitializer(new Mass(new UniformRandom(4, 1)));
-
- addAction(deathZone);
- addAction(new FollowWaypoints(waypoints, false, false));
- addAction(new Move());
- addAction(new SpeedLimit(3));
- }
- }
复制代码
本文来自:http://wonderfl.net/c/6Z8A
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
|