Autopsykologen™
2/7 2010gjort ☯︎ ☺︎ as3 flash rorschach
Reprazentin’ Autopsykologen™, det helautomatiserade Rorschachtestet. Än så länge krävs grundläggande förkunskaper i psykologi för att kunna ställa en tillfredsställande självdiagnos, dessa kan du snabbt förvärva här: Wikipedia: Rorschach test.
Länk: lhli.net/stuff/rorschach/ (Klicka för ny blobb)
I en kommande version kommer även diagnosen att vara helautomatiserad, och pseudovetenskapligt förankrad. En remake på en gammal idé.
Så här stavas det (cc):
{
import flash.display.Sprite;
import flash.events.Event;
import flash.geom.Point;
import flash.events.MouseEvent;
import flash.text.TextField;
import caurina.transitions.Tweener;
public class Rorschach extends Sprite
{
private var _sprites:Array = [];
private var _dist:Number;
private var _bg:Sprite = new Sprite();
public function Rorschach()
{
super();
setup();
}
private function setup():void
{
addChild(_bg);
_bg.graphics.beginFill(0xffffff);
_bg.graphics.drawRect(0,0,stage.stageWidth,stage.stageHeight);
_sprites.push(new Sprite());
_sprites.push(new Sprite());
for (i = 0; i < _sprites.length; i++) addChild(_sprites[i]);
for (i = 0; i < _sprites.length; i++) _sprites[i].y = stage.stageHeight/2;
_sprites[0].x = stage.stageWidth/2;
_sprites[1].x = stage.stageWidth/2;
_sprites[0].scaleX = -1;
alpha = 0;
stage.addEventListener(MouseEvent.CLICK, fadeOut);
//stage.addEventListener(Event.ENTER_FRAME, render);
render();
};
private function fadeOut(event:Event = null):void
{
Tweener.addTween(this, {alpha:0, time:.25, onComplete:render});
};
private function render(event:Event = null):void
{
Tweener.addTween(this, {alpha:1, time:.25});
//_dist = Math.random()*100;
_dist = 10;
// create temporary drawing in this
graphics.beginFill(0);
var p:Point = new Point(0, 0);
var op:Point = p;
graphics.moveTo(p.x, p.y);
for (i = 0; i < 10000; i++)
{
p.x += dist();
p.y += dist();
graphics.lineTo(p.x, p.y);
}
// close
for (i = 0; i < 100; i++)
{
op.x -= (p.x/50) + dist();
op.y -= (p.y/50) + dist();
graphics.lineTo(op.x, op.y);
}
graphics.endFill();
var i:int = 0;
for (i = 0; i < _sprites.length; i++) _sprites[i].graphics.clear();
for (i = 0; i < _sprites.length; i++) _sprites[i].graphics.copyFrom(graphics);
graphics.clear();
};
private function dist():Number
{
return (Math.random()*(Math.random()*_dist))-(Math.random()*(_dist/2));
};
}
}