Reprazentin’ Autopsykologen™, det helautomatiserade Rorschachtestet. Än så länge krävs lite 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):

package
{

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());
       
        var i:int = 0;
        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));
    };
}

}
Jul 02, 2010 10:59 by lhli.
gjort