Have a Happy New Year!

by kawamura
あけましておめでとうございます。
マイクの音を拾って、フルフル震えます。
ヤマ文明のおかげで、IntelliJ IDEA買ってみました。
Mac環境下では気持ちよくスコスコ開発出来ました。
♥0 | Line 236 | Modified 2013-01-01 03:04:01 | MIT License
play

ActionScript3 source code

/**
 * Copyright kawamura ( http://wonderfl.net/user/kawamura )
 * MIT License ( http://www.opensource.org/licenses/mit-license.php )
 * Downloaded from: http://wonderfl.net/c/8nlE
 */

package {

import flash.display.Sprite;
import flash.text.TextField;
[SWF(frameRate="30",width="465",height="465")]
public class NewYear extends Sprite {
    public function NewYear() {
        var textField:TextField = new TextField();
        textField.text = "Hello, World";
        addChild(textField);

        var viewManager:ViewManager = new ViewManager();
        addChild(viewManager);
    }
}
}
/**
 * Created with IntelliJ IDEA.
 * User: shink
 * Date: 12/12/31
 * Time: 8:44
 * To change this template use File | Settings | File Templates.
 */
import flash.display.Graphics;
import flash.display.Sprite;
import flash.events.Event;
import flash.events.MouseEvent;
class ViewManager extends Sprite{
    private var paintManger:PaintManager;

    public function ViewManager() {
        if(stage)init();
        else addEventListener(Event.ADDED_TO_STAGE,init);
    }

    private function init(event:Event = null):void {
        removeEventListener(Event.ADDED_TO_STAGE,init);
        //
        layout()
    }

    private function layout():void {
        var g:Graphics;
        var button:Sprite;


        var micManager:MicrophoneManager = MicrophoneManager.getInstace();
        micManager.addEventListener(CustomEvent.MICROPHONE_ACTIVITY,micActivityListener)

        paintManger = PaintManager.getInstace();
        addChild(paintManger);

        /*
         button = new Sprite();
         addChild(button);
         g = button.graphics;
         g.beginFill(0x000000,0.5);
         g.drawRect(0,0,40,40);
         button.x = 120;
         button.y = 20;
         button.buttonMode = true;
         button.mouseChildren = false;
         button.addEventListener(MouseEvent.CLICK,pathListener);
         */
    }

    private function pathListener(event:MouseEvent):void {
        paintManger.tracePath();
    }

    private function micActivityListener(event:CustomEvent):void {
        var activity:Number = event.activityLevel;
        paintManger.activityLevel = activity;
    }
}
/**
 * Created with IntelliJ IDEA.
 * User: shink
 * Date: 12/12/31
 * Time: 8:55
 * To change this template use File | Settings | File Templates.
 */

import flash.display.Graphics;
import flash.display.Sprite;
import flash.events.Event;
import flash.events.MouseEvent;

class PaintManager extends Sprite {
    private static var instance:PaintManager;
    private const RADIUS:Number =120;
    private var g:Graphics;
    private var preX:Number;
    private var preY:Number;
    private var drawContainer:Sprite;
    private var canpusContainer:Sprite;
    private var isMouseDown:Boolean = false;
    private var pointList:Array;
    private var lineList:Array =[[[48,142],[48,142],[48,142],[47,143],[52,143],[61,144],[65,144],[72,144],[77,144],[79,144],[83,144],[86,144],[88,144],[90,144],[91,144],[94,143],[97,142],[97,142],[97,142],[97,142],[97,142]],[[72,125],[70,125],[69,130],[65,138],[64,147],[63,156],[62,163],[62,171],[62,177],[62,179],[62,181],[62,181],[62,183],[62,186],[62,188],[62,190],[62,190],[62,191],[62,191],[62,191],[62,191]],[[87,155],[87,155],[87,156],[80,162],[74,169],[68,176],[64,180],[56,186],[49,190],[45,193],[43,194],[43,194],[43,194],[43,194],[42,193],[40,188],[40,185],[42,181],[44,179],[48,177],[53,173],[56,172],[65,172],[73,171],[78,171],[82,173],[84,173],[84,173],[84,176],[85,183],[85,187],[85,191],[84,194],[81,196],[81,197],[81,197],[81,197],[81,197]],[[112,140],[112,140],[112,146],[109,157],[109,166],[109,173],[109,181],[109,184],[109,184],[109,184],[109,184],[109,184]],[[122,149],[122,149],[122,149],[123,149],[135,149],[148,151],[150,151],[150,151],[150,151],[150,151],[150,151]],[[139,135],[139,136],[139,145],[139,156],[139,170],[138,182],[138,190],[137,193],[137,193],[137,193],[137,193],[137,193],[137,193],[137,193]],[[174,142],[174,142],[174,142],[174,142],[175,142],[181,142],[186,143],[189,143],[191,143],[193,143],[194,143],[195,143],[195,143],[195,143]],[[166,157],[166,157],[166,157],[169,157],[181,158],[194,159],[202,159],[207,160],[207,160],[207,160],[207,160],[207,160],[207,160]],[[191,130],[191,130],[191,130],[190,134],[189,144],[188,152],[187,160],[185,170],[184,177],[184,183],[183,188],[181,193],[177,200],[177,200],[176,200],[172,199],[168,194],[167,191],[167,187],[167,184],[167,180],[169,180],[171,178],[178,178],[187,181],[194,184],[200,187],[205,189],[209,190],[209,190],[209,190],[209,190],[209,190]],[[233,142],[233,143],[233,148],[230,159],[230,169],[230,176],[230,183],[230,187],[231,189],[233,190],[234,191],[237,191],[239,191],[241,191],[242,191],[245,191],[247,191],[248,191],[249,191],[250,191],[251,191],[251,191],[251,191],[251,191],[251,190],[251,190]],[[270,149],[270,149],[270,149],[271,149],[285,151],[304,152],[314,152],[314,152],[317,153],[319,153],[319,153],[319,153],[319,155],[314,160],[311,167],[308,173],[305,177],[305,182],[305,185],[305,188],[306,190],[311,194],[315,196],[320,196],[327,199],[328,200],[328,200],[328,200],[328,200],[328,200]],[[37,229],[37,229],[42,229],[51,229],[60,229],[65,229],[68,229],[70,229],[71,229],[71,229],[71,229],[71,229],[71,229],[71,229]],[[59,215],[59,215],[59,215],[59,217],[59,228],[59,236],[58,249],[57,262],[56,272],[56,272],[56,272],[55,274],[55,274],[51,273],[50,272],[50,272],[50,272],[49,270],[47,263],[47,257],[47,256],[47,255],[50,252],[58,249],[64,249],[67,249],[73,249],[75,250],[77,252],[79,257],[79,260],[79,265],[78,268],[76,271],[76,271],[76,271],[76,271],[76,271],[76,271],[76,271],[76,271],[76,271]],[[86,242],[86,242],[86,242],[86,247],[89,258],[92,268],[93,270],[93,270],[93,270],[93,270],[93,270],[93,270]],[[116,223],[116,223],[116,223],[116,226],[119,233],[119,239],[122,246],[122,247],[123,250],[123,251],[123,254],[123,257],[123,257],[123,257],[123,257],[123,260],[124,265],[124,265],[124,265],[124,268],[124,271],[124,273],[124,273],[124,273],[124,273],[124,273],[124,273],[124,273]],[[153,224],[153,224],[152,227],[148,230],[142,241],[138,247],[135,251],[132,257],[129,260],[126,261],[123,264],[122,264],[120,265],[115,267],[112,267],[110,267],[110,267],[110,267],[109,267],[107,267],[106,267],[104,266],[102,264],[102,263],[102,260],[103,256],[105,252],[107,250],[109,248],[113,246],[122,246],[130,243],[136,242],[146,242],[151,242],[152,244],[152,246],[154,251],[154,255],[154,258],[154,262],[151,269],[149,270],[148,271],[148,271],[148,271],[148,271],[148,271],[149,271]],[[176,232],[176,232],[176,232],[176,232],[178,232],[197,232],[200,232],[202,232],[202,232],[204,232],[205,232],[207,233],[207,233],[207,233],[207,233],[207,233],[206,237],[198,245],[195,251],[193,252],[193,256],[193,262],[195,265],[196,267],[197,268],[202,271],[205,272],[205,272],[205,272],[205,272],[205,272],[205,272],[205,272]],[[211,245],[211,245],[211,246],[211,249],[211,251],[211,252],[211,252],[211,252],[211,252],[211,252],[211,252],[211,252]],[[220,244],[220,244],[220,245],[220,248],[220,250],[220,251],[220,252],[220,252],[220,252],[220,252]],[[236,229],[236,229],[236,229],[236,234],[238,240],[240,246],[241,248],[241,248],[241,248],[241,248],[242,248]],[[260,235],[260,235],[260,235],[258,237],[250,245],[245,251],[243,254],[241,257],[241,263],[240,266],[241,268],[242,272],[246,277],[249,279],[255,284],[261,285],[268,285],[269,286],[270,286],[270,286],[270,286],[270,286],[270,286],[270,286]],[[291,226],[291,226],[291,226],[291,226],[296,229],[303,229],[304,231],[304,231],[304,231],[304,231],[304,231],[304,231]],[[283,245],[283,245],[287,245],[292,246],[295,246],[296,248],[299,250],[301,253],[305,258],[305,260],[306,266],[306,272],[306,277],[305,277],[304,280],[301,284],[301,286],[301,286],[301,286],[301,286],[301,286]],[[96,300],[96,300],[96,300],[96,300],[98,300],[109,301],[119,303],[123,306],[129,306],[132,306],[134,306],[134,306],[134,306],[134,306],[134,307],[134,307],[134,308],[134,308],[132,310],[131,311]],[[118,331],[118,331],[118,332],[120,337],[126,343],[133,349],[135,349],[136,349],[140,349],[142,349],[142,349],[142,349],[142,349],[142,349],[142,349],[142,349],[142,349]],[[146,301],[146,301],[146,307],[146,313],[147,315],[147,315],[147,315],[147,315],[147,315]],[[151,305],[151,305],[152,307],[153,312],[154,317],[154,318],[154,318],[154,318],[154,318],[155,318]],[[174,312],[174,312],[174,312],[174,312],[174,312],[180,312],[190,312],[198,312],[202,312],[204,312],[204,312],[204,312],[204,312],[204,312],[204,312]],[[187,301],[187,301],[187,302],[187,306],[189,311],[191,318],[192,324],[193,328],[193,328],[193,329],[193,329],[193,329],[193,329]],[[181,336],[181,337],[183,341],[186,344],[188,346],[191,349],[193,349],[193,349],[194,349],[196,350],[198,350],[200,350],[201,350],[202,350],[202,350],[202,350],[202,350],[202,350],[203,349]],[[207,299],[207,299],[207,302],[209,306],[209,306],[209,306],[209,306],[209,306],[209,306]],[[213,300],[213,300],[213,301],[213,304],[213,307],[215,307],[215,309],[215,309],[215,309],[215,309]],[[240,312],[240,312],[240,313],[240,316],[240,320],[240,326],[243,333],[243,336],[243,341],[243,341],[243,341],[243,341],[243,341],[243,341],[243,341],[243,341],[243,341],[244,342],[247,337],[249,337],[250,335],[251,333],[253,331],[253,330],[253,330],[253,330],[253,330],[253,330]],[[269,314],[269,314],[269,315],[269,316],[269,321],[270,326],[270,331],[270,336],[270,339],[270,344],[270,347],[270,349],[270,349],[270,349],[270,349],[270,349],[270,349],[270,349],[270,349]],[[291,310],[291,310],[291,310],[291,310],[291,310],[292,310],[296,310],[301,310],[302,310],[303,310],[305,310],[305,310],[305,310],[305,310],[305,310],[305,310],[305,310]],[[285,329],[285,328],[286,328],[287,327],[290,326],[293,325],[299,324],[302,324],[302,324],[302,324],[302,324],[302,324],[302,324],[304,324],[309,324],[312,324],[312,324],[315,324],[318,324],[318,324],[318,324],[318,324],[318,324],[318,324]],[[301,303],[301,303],[301,305],[301,311],[301,317],[301,322],[301,328],[301,333],[301,339],[301,342],[301,348],[300,350],[300,351],[300,351],[300,352],[297,352],[295,352],[292,351],[291,350],[290,347],[288,344],[288,344],[288,344],[288,342],[289,341],[291,339],[293,338],[302,338],[305,338],[309,338],[310,338],[311,338],[312,339],[315,340],[318,341],[320,341],[320,341],[320,341],[320,341],[322,342]],[[334,316],[334,316],[336,316],[343,316],[349,316],[357,316],[362,316],[367,316],[369,316],[369,316],[369,316],[369,316],[369,316]],[[357,306],[357,306],[357,306],[357,307],[357,309],[357,311],[357,315],[357,318],[356,322],[356,326],[355,329],[353,333],[352,336],[352,336],[349,336],[347,336],[345,336],[340,336],[337,335],[337,335],[337,334],[337,333],[337,332],[337,331],[339,329],[341,328],[344,328],[347,328],[353,328],[355,328],[355,328],[355,329],[355,334],[355,337],[355,340],[353,343],[348,348],[344,353],[343,355],[343,355],[343,355],[343,355],[343,355]],[[373,360],[373,360],[373,360],[372,360],[371,361],[369,364],[369,367],[369,367],[369,367],[372,368],[372,368],[374,368],[375,368],[376,368],[376,368],[379,367],[379,364],[379,362],[379,361],[379,360],[379,360],[379,360],[379,360],[377,358],[374,356],[373,356],[373,356]],[[114,71],[114,71],[117,71],[125,71],[132,73],[137,75],[139,77],[139,79],[139,79],[139,83],[134,88],[128,91],[125,93],[124,94],[123,95],[121,95],[119,96],[119,96],[119,96],[119,96],[118,96],[118,96],[118,96],[118,96],[117,98],[117,99],[115,100],[115,100],[115,100],[115,100],[126,100],[141,100],[145,100],[149,100],[152,100],[152,100],[152,100],[152,100],[152,100],[152,100],[152,100],[152,100]],[[168,76],[168,76],[168,76],[168,76],[167,76],[164,81],[162,85],[162,85],[162,90],[162,93],[162,95],[164,96],[169,98],[172,99],[172,99],[175,97],[178,94],[179,92],[180,89],[180,85],[180,84],[180,80],[179,77],[179,77],[177,76],[176,75],[173,75],[172,75],[172,75],[171,75],[171,75],[171,75],[171,75],[171,75],[171,75],[171,75],[171,75],[170,75],[170,75],[170,75],[170,75],[170,75],[170,75],[170,75],[170,75],[170,75]],[[205,66],[205,66],[205,68],[205,73],[205,81],[204,91],[204,99],[204,101],[204,101],[204,101],[204,101],[204,101],[204,101],[204,101],[204,101]],[[225,66],[225,66],[225,66],[225,66],[227,66],[241,66],[254,69],[258,72],[258,72],[259,73],[258,75],[253,78],[247,81],[240,82],[238,82],[238,82],[238,82],[238,82],[238,82],[238,82],[238,82],[239,82],[244,85],[247,86],[248,88],[248,91],[248,92],[248,93],[248,93],[247,95],[243,96],[237,96],[232,96],[227,96],[220,94],[219,94],[219,94],[219,94],[219,94],[219,94],[219,94],[219,94],[218,94]]];
    private var _activityLevel:Number = 0;

    public function PaintManager(block:Singleton) {
        if (stage)init();
        else addEventListener(Event.ADDED_TO_STAGE, init);
    }

    public static function getInstace():PaintManager {
        if (instance == null) {
            instance = new PaintManager(new Singleton());
        }
        return instance;
    }
    public function set activityLevel(value:Number):void {
        if (_activityLevel < 20 * (value / 100)) {
            _activityLevel = 20 * (value / 100);
        }
    }
    public function tracePath():void
    {

        var i:uint;
        var j:uint;
        var n:uint;
        var m:uint;
        //
        var string:String;
        var list:Array;
        //
        string = "[";
        m = lineList.length;
        for(j=0;j<m;j++)
        {
            list = lineList[j];
            n = list.length;
            if(j == 0)
            {
                string += "[";
            }
            else
            {
                string += ",[";
            }

            string += "[" + list[0][0] +  "," +  list[0][1]  +"]";
            for(i=1;i<n;i++)
            {
                string += ",[" + list[i][0] +  "," +  list[i][1]  +"]";
            }
            string += "]";
        }
        string += "];";
        trace(string);
    }
    private function init(event:Event = null):void {
        removeEventListener(Event.ADDED_TO_STAGE, init);
        //
        layout();
    }

    private function layout():void {
        var g:Graphics;
        //lineList = [];
        pointList = [];
        g = this.graphics;
        g.beginFill(0xff0000,0);
        g.drawRect(0,0,stage.stageWidth,stage.stageHeight);
        drawContainer = new Sprite();
        addChild(drawContainer);
        canpusContainer = new Sprite();
        addChild(canpusContainer);
        addEventListener(Event.ENTER_FRAME, enterFrameListener);
        addEventListener(MouseEvent.MOUSE_DOWN, mouseDownListener)
    }

    private function mouseDownListener(event:MouseEvent):void {

        preX = stage.mouseX;
        preY = stage.mouseY;
        pointList = [];
        pointList.push([preX, preY]);
        isMouseDown = true;

        stage.addEventListener(MouseEvent.MOUSE_UP, mouseUpListener);
    }

    private function enterFrameListener(event:Event):void {
        var i:uint;
        var j:uint;
        var n:uint;
        var m:uint;
        var controlX:Number;
        var controlY:Number;
        var pointX:Number;
        var pointY:Number;
        var list:Array;
        var value:Number = 6;
        if (isMouseDown == true) {
            g = drawContainer.graphics;
            g.lineStyle(2, 0x0)
            g.moveTo(preX, preY);
            g.lineTo(stage.mouseX, stage.mouseY);
            preX = stage.mouseX;
            preY = stage.mouseY;
            pointList.push([preX, preY]);
        }
        if (lineList.length > 0) {
            _activityLevel += -0.03 * _activityLevel;
            m = lineList.length;
            g = canpusContainer.graphics;
            g.clear();
            g.lineStyle(2, 0xFF0000);
            for (j = 0; j < m; j++) {
                list = [];
                n = lineList[j].length;
                for (i = 0; i < n; i++) {
                    pointX = lineList[j][i][0] + _activityLevel * 0.5 - _activityLevel * Math.random();
                    pointY = lineList[j][i][1] + _activityLevel * 0.5 - _activityLevel * Math.random();

                    list.push([pointX, pointY])
                }
                pointX = list[0][0];
                pointY = list[0][1];
                g.moveTo(pointX, pointY);
                n = list.length;
                for (i = 1; i < n - 1; i++) {
                    controlX = list[i][0];
                    controlY = list[i][1];
                    pointX = 0.5 * (list[i][0] + list[i + 1][0]);
                    pointY = 0.5 * (list[i][1] + list[i + 1][1]);

                    g.curveTo(controlX, controlY, pointX, pointY);

                }
                g.endFill();
            }
        }

    }

    private function mouseUpListener(event:MouseEvent):void {
        lineList.push(pointList);
        isMouseDown = false;
        g = drawContainer.graphics;
        g.clear();
        stage.removeEventListener(MouseEvent.MOUSE_UP, mouseUpListener);
    }
}
class Singleton {

}
/**
 * Created with IntelliJ IDEA.
 * User: shink
 * Date: 12/12/29
 * Time: 19:18
 * To change this template use File | Settings | File Templates.
 */
import flash.display.Sprite;
import flash.events.Event;
import flash.media.Microphone;
import flash.media.SoundTransform;
import flash.text.TextField;

class MicrophoneManager extends Sprite{
    public static var instance:MicrophoneManager
    private var mic:Microphone;
    public function MicrophoneManager(block:Singleton) {
        init();
    }

    private function init():void {
        mic = Microphone.getMicrophone();
        mic.setLoopBack();
        var st:SoundTransform = new SoundTransform(0);
        mic.soundTransform = st;
        mic.setUseEchoSuppression(true);
        addEventListener(Event.ENTER_FRAME,enterFrameListener);
    }

    private function enterFrameListener(event:Event):void {
        var customEvent:CustomEvent = new CustomEvent(CustomEvent.MICROPHONE_ACTIVITY);
        customEvent.activityLevel = mic.activityLevel;
        dispatchEvent(customEvent);
    }

    public static function getInstace():MicrophoneManager {
        if (instance == null) {
            instance = new MicrophoneManager(new Singleton());
        }
        return instance;
    }
}
/**
 * Created with IntelliJ IDEA.
 * User: shink
 * Date: 12/12/29
 * Time: 21:02
 * To change this template use File | Settings | File Templates.
 */

import flash.events.Event;

class CustomEvent extends Event {
    public var activityLevel:Number;
    public static const MICROPHONE_ACTIVITY:String = "microphone_activity";
    public function CustomEvent(type:String, bubbles:Boolean = false, cancelable:Boolean = false) {
        super(type, bubbles, cancelable);

    }

    public override function clone():Event {
        return new CustomEvent(type, bubbles, cancelable);
    }

    public override function toString():String {
        return formatToString("CustomEvent", "type", "bubbles", "cancelable", "eventPhase");
    }

}