/**
* 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");
}
}