StardustとFrocessingのお勉強[2]
forked from StardustとFrocessingのお勉強[1] (diff: 50)
StardustとFrocessingのお勉強 いまいちStardustのパラメーターがよくわからない。 完全間違った使い方。
ActionScript3 source code
/**
* Copyright ffffine ( http://wonderfl.net/user/ffffine )
* MIT License ( http://www.opensource.org/licenses/mit-license.php )
* Downloaded from: http://wonderfl.net/c/npej
*/
// forked from ffffine's StardustとFrocessingのお勉強[1]
package
{
import flash.display.*;
import flash.events.*;
import idv.cjcat.stardust.common.clocks.*;
import idv.cjcat.stardust.twoD.renderers.*;
[SWF(backgroundColor = "#000000", frameRate = "30", width = "465", height = "465")]
/**
* StardustとFrocessingのお勉強
* いまいちStardustのパラメーターがよくわからない。
* 完全間違った使い方。
*/
public class StardustTest2 extends Sprite
{
private var _emmitter:MyEmitter;
public function StardustTest2():void
{
if (stage) init();
else addEventListener(Event.ADDED_TO_STAGE, init);
}
private function init(e:Event = null):void
{
removeEventListener(Event.ADDED_TO_STAGE, init);
graphics.clear();
graphics.beginFill(0x000000);
graphics.drawRect(0,0,465,465);
graphics.endFill();
var clock:SteadyClock = new SteadyClock(24);
_emmitter = new MyEmitter(clock);
var renderer:DisplayObjectRenderer = new DisplayObjectRenderer(this);
renderer.addEmitter(_emmitter);
addEventListener(Event.ENTER_FRAME, xEnterFrame);
}
private function xEnterFrame(e:Event):void
{
_emmitter.step();
}
}
}
import flash.display.*;
import frocessing.color.*;
import frocessing.display.*;
import idv.cjcat.stardust.common.actions.*;
import idv.cjcat.stardust.common.clocks.*;
import idv.cjcat.stardust.common.initializers.*;
import idv.cjcat.stardust.common.math.*;
import idv.cjcat.stardust.twoD.actions.*;
import idv.cjcat.stardust.twoD.actions.waypoints.Waypoint;
import idv.cjcat.stardust.twoD.emitters.*;
import idv.cjcat.stardust.twoD.initializers.*;
import idv.cjcat.stardust.twoD.zones.*;
//Emitter
class MyEmitter extends Emitter2D {
public var emitZone:Zone;
public var bmd1:BitmapData;
public function MyEmitter(clock:Clock) {
super(clock);
//initalizer
addInitializer(new DisplayObjectClass(Seed));
addInitializer(new Life(new UniformRandom(20,0)));
var bmd:BitmapData = new mapToDots(
[
[0,0,1,0,0,0,0,0,1,0,0],
[1,0,0,1,0,0,0,1,0,0,1],
[1,0,1,1,1,1,1,1,1,0,1],
[1,1,1,0,1,1,1,0,1,1,1],
[1,1,1,1,1,1,1,1,1,1,1],
[0,1,1,1,1,1,1,1,1,1,0],
[0,0,1,0,0,0,0,0,1,0,0],
[0,1,0,0,0,0,0,0,0,1,0]
]).createBitmapData();
emitZone = new BitmapZone(bmd, (465 - 440) / 2, (465 - 320) / 2, 40 , 40);
//addInitializer(new Velocity(new LazySectorZone(0,0.4)));
addInitializer(new Position(emitZone));
addInitializer(new Scale(new UniformRandom(3.6,0)));
//Action
addAction(new Age());
addAction(new DeathLife());
//addAction(new Accelerate(0.3));
addAction(new Move());
}
}
//particleする対象
class Seed extends F5MovieClip2D {
public static var num:Number = 180;
private var koma:Boolean;
private var colorHSV:ColorHSV;
private var bmp:BitmapData;
private var bmp1:BitmapData;
private var bmp2:BitmapData;
public function Seed() {
}
public function setup():void {
num += 2;
colorHSV = new ColorHSV(num, 0.95, 1);
//ドット絵作成
bmp1 = new mapToDots(
[
[0,0,1,0,0,0,0,0,1,0,0],
[1,0,0,1,0,0,0,1,0,0,1],
[1,0,1,1,1,1,1,1,1,0,1],
[1,1,1,0,1,1,1,0,1,1,1],
[1,1,1,1,1,1,1,1,1,1,1],
[0,1,1,1,1,1,1,1,1,1,0],
[0,0,1,0,0,0,0,0,1,0,0],
[0,1,0,0,0,0,0,0,0,1,0],
]
).createBitmapData();
bmp2 = new mapToDots(
[
[0,0,1,0,0,0,0,0,1,0,0],
[0,0,0,1,0,0,0,1,0,0,0],
[0,0,1,1,1,1,1,1,1,0,0],
[0,1,1,0,1,1,1,0,1,1,0],
[1,1,1,1,1,1,1,1,1,1,1],
[1,0,1,1,1,1,1,1,1,0,1],
[1,0,1,0,0,0,0,0,1,0,1],
[0,0,0,1,1,0,1,1,0,0,0],
]
).createBitmapData();
bmp = bmp1;
//blendMode = "add";
noStroke();
imageSmoothing(false);
tint(colorHSV.value);
image(bmp, 0, 0);
loop();
}
//public function draw():void {
//if (frameCount % 5 == 0) {
//if(koma){
//bmp = bmp1;
//koma = false;
//} else {
//bmp = bmp2;
//koma = true;
//}
//}
//tint(colorHSV.value);
//image(bmp, 0, 0);
//}
}
//Mapデータぶっこんでドット絵データ作るクラス
//[
//[0,0,0,0,0,0,0,0,0,0,0],
//[0,0,1,0,0,0,0,0,1,0,0],
//[1,0,0,1,0,0,0,1,0,0,1],
//[1,0,1,1,1,1,1,1,1,0,1],
//[1,1,1,0,1,1,1,0,1,1,1],
//[1,1,1,1,1,1,1,1,1,1,1],
//[0,1,1,1,1,1,1,1,1,1,0],
//[0,0,1,0,0,0,0,0,1,0,0],
//[0,1,0,0,0,0,0,0,0,1,0],
//[0,0,0,0,0,0,0,0,0,0,0],
//[0,0,0,0,0,0,0,0,0,0,0]
//]
//こんなの読み込んでドット絵にする。
class mapToDots {
public var map:Array = [];
public function mapToDots(Map:Array = null) {
if (map != null) { map = Map;}
}
public function createBitmapData():BitmapData
{
var width:uint = map[0].length;
var height:uint = map.length;
var bitmapdata:BitmapData = new BitmapData( width, height, true, 0x00FFFFFF);
for (var i:int = 0; i < width; i++)
{
for (var j:int = 0; j < height; j++)
{
if(map[j][i] == 1){
bitmapdata.setPixel32(i, j, 0xFFFFFFFF);
}
}
}
return bitmapdata ;
}
}