Fun w/ Starling
Demonstrating Stage3D & Starling as the new standard for writing anything really.
Particles (2x2)
♥0 |
Line 130 |
Modified 2012-12-05 02:38:41 |
MIT License
archived:2017-03-30 08:27:35
ActionScript3 source code
/**
* Copyright hemingway ( http://wonderfl.net/user/hemingway )
* MIT License ( http://www.opensource.org/licenses/mit-license.php )
* Downloaded from: http://wonderfl.net/c/kf93
*/
package
{
import flash.display.*;
import flash.system.*;
import flash.events.*;
import flash.utils.*;
import flash.text.*;
import flash.geom.*;
import starling.core.*;
[SWF(frameRate = 60, width = 465, height = 465)]
public class Main extends flash.display.Sprite
{
private var $starling :Starling;
private var debugText :TextField = new TextField();
public function Main()
{
addEventListener(Event.ADDED_TO_STAGE, addedToStage);
stage.scaleMode = StageScaleMode.NO_SCALE;
}
public function _init() :void
{
$starling = new Starling(Port, stage);
$starling.enableErrorChecking = false;
$starling.showStats = true;
$starling.start();
graphics.clear ();
graphics.lineStyle (1, 0, 0.75);
graphics.drawRect (0, 0, 464, 464);
}
public function addedToStage($e:Event) :void
{
removeEventListener(Event.ADDED_TO_STAGE, addedToStage);
_init();
}
}
}
import flash.display.AVM1Movie;
import flash.events.MouseEvent;
import flash.geom.Point;
import starling.core.*;
import starling.display.*;
import starling.events.*;
import starling.utils.*;
class Port extends starling.display.Sprite
{
internal var pArray :Array = [];
public function Port()
{
addEventListener(Event.ADDED_TO_STAGE, addedToStage);
}
public function _init() :void
{
}
public function addedToStage($e:Event) :void
{
removeEventListener(Event.ADDED_TO_STAGE, addedToStage);
/*children*/
for (var i:int = 0; i < 5000; i++)
{pArray[i] = new Particle((Math.random() * 465), (Math.random() * 465)); addChild(pArray[i]); }
stage.addEventListener(TouchEvent.TOUCH, onInteraction);
_init();
}
public function onInteraction($e:TouchEvent) :void
{
var $touch:Touch = $e.getTouch(stage);
switch ($touch.phase)
{
case (TouchPhase.BEGAN):
for (var i:int = 0; i < 5000; i++)
{pArray[i].x = pArray[i].x - (1 / ($touch.globalX - pArray[i].x)); pArray[i].y = pArray[i].y - (1 / ($touch.globalY - pArray[i].y));}
break;
case (TouchPhase.MOVED):
for (var j:int = 0; j < 5000; j++)
{pArray[j].x = pArray[j].x - (1 / ($touch.globalX - pArray[j].x)); pArray[j].y = pArray[j].y - (1 / ($touch.globalY - pArray[j].y));}
break;
case (TouchPhase.ENDED):
break;
}
}
}
class Particle extends starling.display.Sprite
{
internal var _x :Number;
internal var _y :Number;
internal var _w :Number;
internal var _h :Number;
internal var _a :Number;
internal var _c :Number;
internal var pQuad :Quad = new Quad(2, 2, 0);
public function Particle($x:Number = 232.5, $y:Number = 232.5)
{
addEventListener(Event.ADDED_TO_STAGE, addedToStage);
_x = $x;
_y = $y;
_w = 2;
_h = 2;
_a = 0.75;
_c = 0;
}
public function _init() :void
{
pQuad.x = _x;
pQuad.y = _y;
pQuad.width = _w;
pQuad.height = _h;
pQuad.alpha = _a;
pQuad.color = _c;
}
public function addedToStage($e:Event) :void
{
removeEventListener(Event.ADDED_TO_STAGE, addedToStage);
/*children*/
addChild(pQuad);
_init();
}
public override function get x() :Number
{ return _x }
public override function get y() :Number
{ return _y }
public override function set x($value:Number) :void
{ _x = $value; _init(); }
public override function set y($value:Number) :void
{ _y = $value; _init(); }
public override function set width($value:Number) :void
{ _w = $value; _init(); }
public override function set height($value:Number) :void
{ _h = $value; _init(); }
public override function set alpha($value:Number) :void
{ _a = $value; _init(); }
public function set color($value:Number) :void
{ _c = $value; _init(); }
}