Autopsykologen™

2/7 2010
gjort ☯︎ ☺︎ 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):

package
{
<code lang="actionscript3">

import flash.display.Sprite;
import flash.events.Event;
import flash.geom.Point;
import flash.events.MouseEvent;
import flash.text.TextField;
import caurina.transitions.Tweener;

<code lang="actionscript3">

public class Rorschach extends Sprite
{
private var _sprites:Array = [];
private var _dist:Number;
private var _bg:Sprite = new Sprite();
public function Rorschach()
{
super();
setup();
}

<code lang="actionscript3">

private function setup():void
{
addChild(_bg);
_bg.graphics.beginFill(0xffffff);
_bg.graphics.drawRect(0,0,stage.stageWidth,stage.stageHeight);

<code lang="actionscript3">

_sprites.push(new Sprite());
_sprites.push(new Sprite());

 
        var i:int = 0;
for (i = 0; i &lt; _sprites.length; i++) addChild(_sprites[i]);
        for (i = 0; i &lt; _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 &lt; 10000; i++)
        {
            p.x += dist();
            p.y += dist();

            graphics.lineTo(p.x, p.y);
        }
        // close
        for (i = 0; i &lt; 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 &lt; _sprites.length; i++) _sprites[i].graphics.clear();
        for (i = 0; i &lt; _sprites.length; i++) _sprites[i].graphics.copyFrom(graphics);

        graphics.clear();
    };

    private function dist():Number
    {
        return (Math.random()*(Math.random()*_dist))-(Math.random()*(_dist/2));
    };
}

}