flash on 2010-10-20
♥0 |
Line 96 |
Modified 2010-10-20 14:57:34 |
MIT License
archived:2017-03-20 14:55:12
ActionScript3 source code
/**
* Copyright yasnis ( http://wonderfl.net/user/yasnis )
* MIT License ( http://www.opensource.org/licenses/mit-license.php )
* Downloaded from: http://wonderfl.net/c/5IjQ
*/
package {
import flash.events.Event;
import flash.events.MouseEvent;
import flash.display.Graphics;
import flash.display.Sprite;
public class FlashTest extends Sprite {
private var forcelist:Vector.<ForcePoint> = new Vector.<ForcePoint>();
private var personlist:Vector.<Person> = new Vector.<Person>();
public function FlashTest() {
// write as3 code here..
initForce();
initStage();
stage.addEventListener(MouseEvent.CLICK,stageClickHandler);
addEventListener(Event.ENTER_FRAME,enterframeHandler);
}
private function initForce():void {
}
private function initStage():void {
var g:Graphics = graphics;
g.lineStyle(2,0);
g.drawRect(0,0,stage.stageWidth,stage.stageHeight);
}
private function createNewPerson():Person{
var p:Person = new Person();
p.x = (stage.stageWidth>>1)+(Math.random()*2-1)*30;
p.y = (stage.stageHeight>>1)+(Math.random()*2-1)*30;
addChild(p);
personlist.push(p);
p.addEventListener(MouseEvent.CLICK,personClickHandler);
return p;
}
private function removePerson(p:Person):void {
removeChild(p);
personlist.splice(personlist.indexOf(p),1);
}
private function enterframeHandler(e:Event):void{
var a:Person;
var b:Person;
var dist:Number;
for(var i:int = 0;i<personlist.length;i++){
a = personlist[i];
for(var j:int = i+1;j<personlist.length;j++){
b = personlist[j];
dist = a.getDistance(b);
if(dist<a.space+b.space){
}
}
}
}
private function stageClickHandler(e:MouseEvent):void{
createNewPerson();
}
private function personClickHandler(e:MouseEvent):void{
removePerson(e.target as Person);
e.stopPropagation();
}
}
}
import flash.display.Graphics;
import flash.display.Sprite;
class Person extends Sprite {
public var space:Number = 60;
function Person () {
var g:Graphics = graphics;
g.lineStyle(1,0);
g.beginFill(0xffffff,1);
g.drawCircle(0,0,40);
g.beginFill(0,1);
g.drawCircle(0,0,20);
g.endFill();
buttonMode = true;
}
public function getDistance(p:Person):Number{
return Math.sqrt((x-p.x)*(x-p.x)+(y-p.y)*(y-p.y));
}
}
class ForcePoint extends Sprite {
private var _force:Number = 10;
function ForcePoint(){
force = _force;
}
private function updateView():void{
var g:Graphics = graphics;
g.clear();
g.lineStyle(1,0xff0000);
g.beginFill(0xff3333,1);
g.drawCircle(0,0,force);
g.endFill();
}
public function get force():Number {
return _force;
}
public function set force(f:Number):void{
_force = f;
updateView();
}
}