光センサーで写真をみじん切りにする
画像は飼い猫
@author paq89
/**
* Copyright bmb ( http://wonderfl.net/user/bmb )
* MIT License ( http://www.opensource.org/licenses/mit-license.php )
* Downloaded from: http://wonderfl.net/c/n2Ww
*/
// forked from paq's [Stardust] BitmapBurster
package
{
import flash.display.Bitmap;
import flash.display.BitmapData;
import flash.display.Loader;
import flash.display.Sprite;
import flash.events.Event;
import flash.events.MouseEvent;
import flash.filters.BlurFilter;
import flash.net.URLRequest;
import net.wonderfl.utils.SequentialLoader;
import idv.cjcat.stardust.common.clocks.ImpulseClock;
import idv.cjcat.stardust.common.emitters.Emitter;
import idv.cjcat.stardust.common.math.UniformRandom;
import idv.cjcat.stardust.twoD.bursters.BitmapBurster;
import idv.cjcat.stardust.twoD.renderers.DisplayObjectRenderer;
import funnel.*;
/**
* 画像は飼い猫
* @author paq89
*/
[SWF(width = 465, height = 465, backgroundColor = 0xFFFFFF, frameRate = 60)]
public class Main extends Sprite
{
private var _emitter:ExplosionEmitter;
private var _burster:BitmapBurster;
private var _loader:Loader;
private var _container:Sprite;
private var _imgs:Array=[];
private var gio:Gainer;
private var g:int = 0;
public function Main():void
{
if (stage) init();
else addEventListener(Event.ADDED_TO_STAGE, init);
}
private function init(e:Event = null):void
{
gio = new Gainer();
gio.addEventListener(FunnelEvent.READY, trace);
gio.addEventListener(FunnelErrorEvent.REBOOT_ERROR, trace);
gio.addEventListener(FunnelErrorEvent.CONFIGURATION_ERROR, trace);
gio.addEventListener(FunnelErrorEvent.ERROR, trace); removeEventListener(Event.ADDED_TO_STAGE, init);
gio.analogInput(0).filters = [new Scaler(0.2, 0.8, 1, 600, Scaler.LINEAR, true)];
graphics.beginFill(0x000000); graphics.drawRect(0, 0, 465, 465);
_container = new Sprite();
addChild(_container);
SequentialLoader.loadImages(["http://assets.wonderfl.net/images/related_images/7/7f/7f95/7f955aa0784491ba885a72efaa6d684bd968ebf9"], _imgs, loaded);
}
private function loaded():void
{
_loader = _imgs.pop();
var bmpd:BitmapData = new BitmapData(_loader.width, _loader.height);
bmpd.draw(_loader)
_emitter = new ExplosionEmitter(new ImpulseClock());
var renderer:DisplayObjectRenderer = new DisplayObjectRenderer(_container);
renderer.addEmitter(_emitter);
_burster = new BitmapBurster(10,10,232.5-bmpd.rect.width*0.5,232.5-bmpd.rect.height*0.5);
_burster.bitmapData = bmpd;
_burster.burst(_emitter);
_emitter.snapshot.takeSnapshot();
addEventListener(Event.ENTER_FRAME, loop);
stage.addEventListener(MouseEvent.CLICK, restore);
}
private function restore(e:MouseEvent):void
{
_emitter.snapshotRestore.start();
}
private function loop(e:Event):void
{
_emitter.step();
_emitter.explode.x = mouseX;
_emitter.explode.y = mouseY;
_emitter.explode.explode();
}
}
}
import idv.cjcat.stardust.common.clocks.Clock;
import idv.cjcat.stardust.common.easing.Sine;
import idv.cjcat.stardust.common.initializers.CollisionRadius;
import idv.cjcat.stardust.common.math.UniformRandom;
import idv.cjcat.stardust.twoD.actions.Accelerate;
import idv.cjcat.stardust.twoD.actions.Collide;
import idv.cjcat.stardust.twoD.actions.Damping;
import idv.cjcat.stardust.twoD.actions.Deflect;
import idv.cjcat.stardust.twoD.actions.Explode;
import idv.cjcat.stardust.twoD.actions.Move;
import idv.cjcat.stardust.twoD.actions.Oriented;
import idv.cjcat.stardust.twoD.actions.Snapshot;
import idv.cjcat.stardust.twoD.actions.SnapshotRestore;
import idv.cjcat.stardust.twoD.actions.SnapshotRestoreFlag;
import idv.cjcat.stardust.twoD.deflectors.BoundingBox;
import idv.cjcat.stardust.twoD.emitters.Emitter2D;
class ExplosionEmitter extends Emitter2D
{
public var explode:Explode;
public var snapshot:Snapshot;
public var snapshotRestore:SnapshotRestore;
public function ExplosionEmitter(clock:Clock)
{
super(clock);
var deflect:Deflect = new Deflect();
deflect.addDeflector(new BoundingBox(0, 0, 465, 465));
explode = new Explode(0, 0, 3, 40, gio.analogInput(0).value);
snapshot = new Snapshot();
snapshotRestore = new SnapshotRestore(new UniformRandom(30, 10));
snapshotRestore.flags = SnapshotRestoreFlag.POSITION | SnapshotRestoreFlag.ROTATION;
snapshotRestore.curve = Sine.easeOut;
addAction(explode);
addAction(deflect);
addAction(snapshot);
addAction(snapshotRestore);
addAction(new Move());
addAction(new Damping(0.1));
}
}