StardustとFrocessingのお勉強[2]

by ffffine forked from StardustとFrocessingのお勉強[1] (diff: 50)
StardustとFrocessingのお勉強
いまいちStardustのパラメーターがよくわからない。 完全間違った使い方。
♥0 | Line 138 | Modified 2010-11-06 20:19:04 | MIT License
play

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 ;
	}
}

Forked