※現在、「wonderfl build flash online」求人コンテンツ制作に関してのアンケートを実施中です!みなさまのお力添えを頂いて、続々とアンケート結果が集まっていますが、まだまだ募集しております。ご協力のほど、どうぞよろしくお願いいたします!
wonderfl運営事務局
→アンケートページ(※ログインしてからお答えいただけるようになっています。)
stunning to do this in code i'll look into the algorithm later
Galaxy (Pixels) ミクさんが銀河をかき混ぜるアルバイトを始めたようです。
- // forked from makc3d's Galaxy (Pixels)
- // forked from makc3d's Galaxy
- // forked from はちゅね
- //
- // 静かな場所でネギを振るだけの簡単なお仕事です。初心者歓迎!
- // 週2日~可
- // 時給650円 日払い制 有給有り
- package
- {
- import flash.filters.GlowFilter;
- import org.papervision3d.cameras.CameraType;
- import org.papervision3d.core.geom.Pixels;
- import org.papervision3d.core.geom.renderables.Pixel3D;
- import org.papervision3d.objects.DisplayObject3D;
- import org.papervision3d.view.layer.BitmapEffectLayer;
- import org.papervision3d.view.layer.ViewportLayer;
- import org.papervision3d.view.BasicView;
- [SWF (width=465, height=465, backgroundColor=0x0, frameRate=20)]
- public class Galaxy extends BasicView
- {
- private var pixels:Pixels;
- public var miku:Hatyune;
- private var v:Number;
- private var neckr:Number;
- public function Galaxy()
- {
- super(0,0,true,false,CameraType.TARGET);
- camera.z = 150;
- var layer:BitmapEffectLayer =
- new BitmapEffectLayer (viewport, 465, 465, true, 0, "clear_pre", false, true);
- viewport.containerSprite.addLayer (layer);
- pixels = new Pixels (layer);
- scene.addChild (pixels);
- var stars:Array = [];
- // we can use far more pixels than particles ;)
- generate (stars); generate (stars); generate (stars);
- generate (stars); generate (stars); generate (stars);
- for each (var obj:Object in stars) {
- var p:Pixel3D = new Pixel3D(obj.c + 0x1000000 * obj.a, obj.x, obj.y, obj.z);
- pixels.addPixel3D (p);
- }
- startRendering();
- addEventListener("enterFrame", onEnterFrame);
- filters = [ new GlowFilter (0x007fff, 0.5, 30, 30, 10) ];
- miku = new Hatyune();
- miku.start();
- addChild(miku.body);
- neckr = 0.0;
- v = 0.05;
- Wonderfl.capture_delay( 10 );
- }
- private function onEnterFrame(e:*):void {
- pixels.roll (v);
- miku.arm_r.rotate(Math.sin(neckr)+0.5);
- miku.hair_l.rotate(Math.sin(neckr)/5);
- miku.hair_r.rotate(-Math.sin(neckr)/5);
- if(neckr < Math.PI){
- v += v;
- neckr = v;
- }else{
- v -= 0.06;
- neckr = v;
- }
- }
- private function generate (stars:Array):void {
- // I wrote this code back in late '90s in TurboPascal
- // By now, I have no idea how it works, and what those magic numbers are :)
- var I:Number, J:Number, K:Number,
- s:Number, L:Number, d:Number, R:Number,
- dX:Number, dY:Number, dZ:Number,
- c2:Number;
- var Rm:Number = 20, A:Number = 0.3;
- var clr:Array = [0x0080FF, 0x8080E4, 0xB0B0FF];
- for (I = 0; I < 101; I++)
- {
- A = A + 0.03;
- R = A * Rm;
- for (J = 0; J < 5 - Math.floor(I / 20); J++)
- {
- for (K = 0; K < 5; K++)
- {
- L = clr[(R > 3 * Rm * Math.random()) ? 0 : 1];
- c2 = (R > 2 * Rm * Math.random()) ? 1 : 2;
- if (A < 0.6) L = clr[2];
- s = Math.max (2, Rm - R / 3);
- dX = R * Math.cos(A + K * 2 * Math.PI / 5) +
- 0.2 * ((100 - I) * Math.random() + I / 2);
- dY = R * Math.sin(A + K * 2 * Math.PI / 5) +
- 0.2 * ((100 - I) * Math.random() + I / 2);
- dZ = s * (Math.random() - Math.random());
- stars.push ({ x: dX, y: dY, z: dZ, c: L, a: (255 - 120 * c2) });
- }
- }
- }
- }
- }
- }
- // ------はちゅねを動かすだけなら、こっから下は読まなくてOK!-------
- import flash.display.Loader;
- import flash.display.Sprite;
- import flash.net.URLRequest;
- import flash.errors.IOError;
- import org.libspark.thread.Thread;
- import org.libspark.thread.EnterFrameThreadExecutor;
- import org.libspark.thread.utils.ParallelExecutor;
- import org.libspark.thread.threads.display.LoaderThread;
- class Hatyune extends Thread
- {
- public var arm_r:Parts;
- public var head0:Parts;
- public var head1:Parts;
- public var body:Parts;
- public var hair_l:Parts;
- public var hair_r:Parts;
- public var negi:Parts;
- private var hair_r_lt:LoaderThread;
- private var negi_lt:LoaderThread;
- private var hand_r_lt:LoaderThread;
- private var body_lt:LoaderThread;
- private var face_lt:LoaderThread;
- private var hair_l_lt:LoaderThread;
- public function Hatyune()
- {
- if(!Thread.isReady)
- Thread.initialize(new EnterFrameThreadExecutor());
- super();
- body = new Parts(0,0,200,140);
- head0 = new Parts(106,0,212,112);
- hair_r = new Parts(0,6,77,13);
- arm_r = new Parts(0,91,197,119);
- negi = new Parts(0,0,118,15);
- head1 = new Parts(106,0,212,112);
- hair_l = new Parts(132,6,141,16);
- }
- override protected function run():void
- {
- var ParaExe:ParallelExecutor = new ParallelExecutor();
- hair_l_lt = new LoaderThread(new URLRequest("http://image.blog.livedoor.jp/k_yon/imgs/1/4/14e2dce1.png"));
- negi_lt = new LoaderThread(new URLRequest("http://image.blog.livedoor.jp/k_yon/imgs/4/c/4cd1ba9c.png"));
- hand_r_lt = new LoaderThread(new URLRequest("http://image.blog.livedoor.jp/k_yon/imgs/b/c/bc0ba0f1.png"));
- body_lt = new LoaderThread(new URLRequest("http://image.blog.livedoor.jp/k_yon/imgs/6/5/659cbeb2.png"));
- face_lt = new LoaderThread(new URLRequest("http://image.blog.livedoor.jp/k_yon/imgs/c/c/cc3baf4f.png"));
- hair_r_lt = new LoaderThread(new URLRequest("http://image.blog.livedoor.jp/k_yon/imgs/0/9/09def37a.png"));
- ParaExe.addThread(hair_r_lt);
- ParaExe.addThread(negi_lt);
- ParaExe.addThread(hand_r_lt);
- ParaExe.addThread(body_lt);
- ParaExe.addThread(face_lt);
- ParaExe.addThread(hair_l_lt);
- ParaExe.start();
- ParaExe.join();
- next(imgLoaded);
- error(IOError, errorHandler);
- error(SecurityError, errorHandler);
- }
- private function imgLoaded():void
- {
- var _hair_r:Loader = hair_r_lt.loader;
- _hair_r.width = 82;
- _hair_r.height = 257;
- hair_r.addChild(_hair_r);
- head0.addChild(hair_r);
- body.addChild(head0);
- var _negi:Loader = negi_lt.loader;
- _negi.width = 124;
- _negi.height = 44;
- negi.addChild(_negi);
- arm_r.addChild(negi);
- var _hand_r:Loader = hand_r_lt.loader;
- _hand_r.width = 96;
- _hand_r.height = 43;
- _hand_r.x = 113;
- _hand_r.y = 5;
- arm_r.addChild(_hand_r);
- body.addChild(arm_r);
- var _body:Loader = body_lt.loader;
- _body.width = 116;
- _body.height = 172;
- _body.x = 150;
- _body.y = 93;
- body.addChild(_body);
- var _face:Loader = face_lt.loader;
- _face.width = 114;
- _face.height = 111;
- _face.x = 47;
- _face.y = 0;
- head1.addChild(_face);
- var _hair_l:Loader = hair_l_lt.loader;
- _hair_l.width = 85;
- _hair_l.height = 247;
- hair_l.addChild(_hair_l);
- head1.addChild(hair_l);
- body.addChild(head1);
- }
- private function errorHandler(e:IOError, t:Thread):void
- {
- next(null);
- }
- protected override function finalize():void
- {
- body.height = 114;
- body.width = 140;
- body.x = 260;
- body.y = 260;
- }
- }
- // --------------------------------------------
- class Parts extends Sprite
- {
- public var originX:Number;
- public var originY:Number;
- public var baseX:Number;
- public var baseY:Number;
- private var GShape:flash.display.Shape;
- public function Parts( bx:Number, by:Number, gx:Number, gy:Number )
- {
- x = baseX = bx;
- y = baseY = by;
- originX = gx;
- originY = gy;
- }
- public function rotate( rad:Number ):void
- {
- var tmpX:Number = baseX - originX;
- var tmpY:Number = baseY - originY;
- x = tmpX * Math.cos(rad) - tmpY * Math.sin(rad) + originX;
- y = tmpY * Math.cos(rad) + tmpX * Math.sin(rad) + originY;
- rotation = rad / Math.PI * 180;
- }
- public function showRotatePoint():void
- {
- GShape = new flash.display.Shape();
- GShape.graphics.beginFill(0xff0000);
- GShape.graphics.drawCircle(0,0,5);
- GShape.graphics.endFill();
- GShape.x = originX;
- GShape.y = originY;
- addChild(GShape);
- }
- public function hideRotatePoint():void
- {
- removeChild(GShape);
- }
- }
Galaxy (Pixels) Galaxy (Sandy 3D)
- // forked from makc3d's Galaxy (Pixels)
- package
- {
- import flash.events.Event;
- import flash.filters.GlowFilter;
- import sandy.core.*;
- import sandy.core.data.*;
- import sandy.core.scenegraph.*;
- import sandy.primitive.*;
- import sandy.materials.*;
- import sandy.view.*;
- [SWF (width=465, height=465, backgroundColor=0x0, frameRate=20)]
- public class Galaxy extends BasicView
- {
- private var sf:StarField;
- public function Galaxy()
- {
- super (); init (465, 465);
- camera.z = -220;
- sf = new StarField ();
- rootNode.addChild (sf);
- var stars:Array = [];
- generate (stars); generate (stars); generate (stars);
- generate (stars); generate (stars); generate (stars);
- // trying to give central stars more visibility
- // by placing them after other stars (works ??)
- stars.reverse ();
- for each (var obj:Object in stars) {
- sf.stars.push (new Vertex (obj.x, obj.y, obj.z));
- sf.starColors.push (obj.c + 0x1000000 * obj.a);
- }
- render ();
- filters = [ new GlowFilter (0x007fff, 0.5, 30, 30, 10) ];
- }
- override public function simpleRender(e:Event = null):void {
- sf.pan += 2; sf.roll += 1; super.simpleRender (e);
- }
- private function generate (stars:Array):void {
- // I wrote this code back in late '90s in TurboPascal
- // By now, I have no idea how it works, and what those magic numbers are :)
- var I:Number, J:Number, K:Number,
- s:Number, L:Number, d:Number, R:Number,
- dX:Number, dY:Number, dZ:Number,
- c2:Number;
- var Rm:Number = 20, A:Number = 0.3;
- var clr:Array = [0x0080FF, 0x8080E4, 0xB0B0FF];
- for (I = 0; I < 101; I++)
- {
- A = A + 0.03;
- R = A * Rm;
- for (J = 0; J < 5 - Math.floor(I / 20); J++)
- {
- for (K = 0; K < 5; K++)
- {
- L = clr[(R > 3 * Rm * Math.random()) ? 0 : 1];
- c2 = (R > 2 * Rm * Math.random()) ? 1 : 2;
- if (A < 0.6) L = clr[2];
- s = Math.max (2, Rm - R / 3);
- dX = R * Math.cos(A + K * 2 * Math.PI / 5) +
- 0.2 * ((100 - I) * Math.random() + I / 2);
- dY = R * Math.sin(A + K * 2 * Math.PI / 5) +
- 0.2 * ((100 - I) * Math.random() + I / 2);
- dZ = s * (Math.random() - Math.random());
- stars.push ({ x: dX, y: dY, z: dZ, c: L, a: (255 - 120 * c2) });
- }
- }
- }
- }
- }
- }
notice: 

