In case Flash no longer exists; a copy of this site is included in the Flashpoint archive's "ultimate" collection.

Dead Code Preservation :: Archived AS3 works from wonderfl.net

-- --- ・-・ ・・・ ・

Get Adobe Flash player
by yasnis 24 Jun 2009
    Embed
/**
 * Copyright yasnis ( http://wonderfl.net/user/yasnis )
 * MIT License ( http://www.opensource.org/licenses/mit-license.php )
 * Downloaded from: http://wonderfl.net/c/knfB
 */

package {
[SWF(backgroundColor=0x000000, frameRate=60)]
public class FlashTest extends Sprite {
private var background:String = "Press any KEY! -- --- ・-・ ・・・ ・  -・-・ --- -・・ ・  ・--・ ・-・ ・ ・・・ ・・・  ・ -・ -・--  -・- ・ -・--  -- --- ・-・ ・・・ ・  -・-・ --- -・・ ・  ・--・ ・-・ ・ ・・・ ・・・  ・ -・ -・--  -・- ・ -・--  -- --- ・-・ ・・・ ・  -・-・ --- -・・ ・  ・--・ ・-・ ・ ・・・ ・・・  ・ -・ -・--  -・- ・ -・--  -- --- ・-・ ・・・ ・  -・-・ --- -・・ ・  ・--・ ・-・ ・ ・・・ ・・・  ・ -・ -・--  -・- ・ -・--  -- --- ・-・ ・・・ ・  -・-・ --- -・・ ・  ・--・ ・-・ ・ ・・・ ・・・  ・ -・ -・--  -・- ・ -・--  -- --- ・-・ ・・・ ・  -・-・ --- -・・ ・  ・--・ ・-・ ・ ・・・ ・・・  ・ -・ -・--  -・- ・ -・--  -- --- ・-・ ・・・ ・  -・-・ --- -・・ ・  ・--・ ・-・ ・ ・・・ ・・・  ・ -・ -・--  -・- ・ -・--  -- --- ・-・ ・・・ ・  -・-・ --- -・・ ・  ・--・ ・-・ ・ ・・・ ・・・  ・ -・ -・--  -・- ・ -・--  -- --- ・-・ ・・・ ・  -・-・ --- -・・ ・  ・--・ ・-・ ・ ・・・ ・・・  ・ -・ -・--  -・- ・ -・--  -- --- ・-・ ・・・ ・  -・-・ --- -・・ ・  ・--・ ・-・ ・ ・・・ ・・・  ・ -・ -・--  -・- ・ -・--  -- --- ・-・ ・・・ ・  -・-・ --- -・・ ・  ・--・ ・-・ ・ ・・・ ・・・  ・ -・ -・--  -・- ・ -・--  -- --- ・-・ ・・・ ・  -・-・ --- -・・ ・  ・--・ ・-・ ・ ・・・ ・・・  ・ -・ -・--  -・- ・ -・--  -- --- ・-・ ・・・ ・  -・-・ --- -・・ ・  ・--・ ・-・ ・ ・・・ ・・・  ・ -・ -・--  -・- ・ -・--  -- --- ・-・ ・・・ ・  -・-・ --- -・・ ・  ・--・ ・-・ ・ ・・・ ・・・  ・ -・ -・--  -・- ・ -・--  -- --- ・-・ ・・・ ・  -・-・ --- -・・ ・  ・--・ ・-・ ・ ・・・ ・・・  ・ -・ -・--  -・- ・ -・--  -- --- ・-・ ・・・ ・  -・-・ --- -・・ ・  ・--・ ・-・ ・ ・・・ ・・・  ・ -・ -・--  -・- ・ -・--  -- --- ・-・ ・・・ ・  -・-・ --- -・・ ・  ・--・ ・-・ ・ ・・・ ・・・  ・ -・ -・--  -・- ・ -・--  -- --- ・-・ ・・・ ・  -・-・ --- -・・ ・  ・--・ ・-・ ・ ・・・ ・・・  ・ -・ -・--  -・- ・ -・--  -- --- ・-・ ・・・ ・  -・-・ --- -・・ ・  ・--・ ・-・ ・ ・・・ ・・・  ・ -・ -・--  -・- ・ -・--  -- --- ・-・ ・・・ ・  -・-・ --- -・・ ・  ・--・ ・-・ ・ ・・・ ・・・  ・ -・ -・--  -・- ・ -・--  -- --- ・-・ ・・・ ・  -・-・ --- -・・ ・  ・--・ ・-・ ・ ・・・ ・・・  ・ -・ -・--  -・- ・ -・--  -- --- ・-・ ・・・ ・  -・-・ --- -・・ ・  ・--・ ・-・ ・ ・・・ ・・・  ・ -・ -・--  -・- ・ -・--  -- --- ・-・ ・・・ ・  -・-・ --- -・・ ・  ・--・ ・-・ ・ ・・・ ・・・  ・ -・ -・--  -・- ・ -・--  -- --- ・-・ ・・・ ・  -・-・ --- -・・ ・  ・--・ ・-・ ・ ・・・ ・・・  ・ -・ -・--  -・- ・ -・--  -- --- ・-・ ・・・ ・  -・-・ --- -・・ ・  ・--・ ・-・ ・ ・・・ ・・・  ・ -・ -・--  -・- ・ -・--  -- --- ・-・ ・・・ ・  -・-・ --- -・・ ・  ・--・ ・-・ ・ ・・・ ・・・  ・ -・ -・--  -・- ・ -・--  -- --- ・-・ ・・・ ・  -・-・ --- -・・ ・  ・--・ ・-・ ・ ・・・ ・・・  ・ -・ -・--  -・- ・ -・--  -- --- ・-・ ・・・ ・  -・-・ --- -・・ ・  ・--・ ・-・ ・ ・・・ ・・・  ・ -・ -・--  -・- ・ -・--  -- --- ・-・ ・・・ ・  -・-・ --- -・・ ・  ・--・ ・-・ ・ ・・・ ・・・  ・ -・ -・--  -・- ・ -・--  -- --- ・-・ ・・・ ・  -・-・ --- -・・ ・  ・--・ ・-・ ・ ・・・ ・・・  ・ -・ -・--  -・- ・ -・--  -- --- ・-・ ・・・ ・  -・-・ --- -・・ ・  ・--・ ・-・ ・ ・・・ ・・・  ・ -・ -・--  -・- ・ -・--  -- --- ・-・ ・・・ ・  -・-・ --- -・・ ・  ・--・ ・-・ ・ ・・・ ・・・  ・ -・ -・--  -・- ・ -・--  ";


















































		private var count:int = 0;
		private var morse:Morse = new Morse();
		private var description_txt:TextField = new TextField();
		public function FlashTest() {
			addEventListener(Event.ADDED_TO_STAGE, initialize);
		}
		
		private function initialize(e:Event):void {
			removeEventListener(Event.ADDED_TO_STAGE, initialize);
			SWFProfiler.init(this);
			initializeText();
			addChild(morse);
			addChild(description_txt);
			stage.addEventListener(KeyboardEvent.KEY_DOWN, KeyDownHandler);
		}
		private function KeyDownHandler(e:KeyboardEvent):void {
			morse.send(e.keyCode, String.fromCharCode(e.charCode));
		}
		private function initializeText():void {
			var tf:TextFormat = new TextFormat();
			tf.color = 0xffffff;
			tf.align = TextFormatAlign.JUSTIFY;
			description_txt.defaultTextFormat = tf;
			description_txt.width = stage.stageWidth;
			description_txt.autoSize = TextFieldAutoSize.LEFT;
			description_txt.wordWrap = true;
			description_txt.selectable = false;
			description_txt.text = background;
			var bmpd:BitmapData = new BitmapData(stage.stageWidth, stage.stageHeight, false, 0xff000000);
			var bmp:Bitmap = new Bitmap(bmpd);
			bmpd.draw(description_txt);
			addChild(bmp);
		}
	}
	import flash.events.Event;
	import flash.events.KeyboardEvent;
	import flash.display.Sprite;
	import flash.text.TextField;
	import flash.text.TextFieldAutoSize;
	import flash.text.TextFormat;
	import flash.text.TextFormatAlign;
	import flash.display.Bitmap;
	import flash.display.BitmapData;
	import com.flashdynamix.utils.SWFProfiler;
}
import flash.events.Event;
import flash.events.SampleDataEvent;
import flash.events.TimerEvent;
import flash.display.Sprite;
import flash.media.Sound;
import flash.media.SoundChannel;
import flash.media.SoundTransform;
import flash.text.TextField;
import flash.text.TextFieldAutoSize;
import flash.text.TextFormat;
import flash.text.TextFormatAlign;
import flash.utils.Timer;
class Morse extends Sprite {
	static public const CODE_SHORT:uint = 1;
	static public const CODE_LONG:uint = 3;
	static public const CODE_BREAK:uint = 7;
	static private const TIME_UNIT:uint = 80;
	private var code_gap_timer:Timer = new Timer(TIME_UNIT * 1, 1);
	private var char_gap_timer:Timer = new Timer(TIME_UNIT * 3, 1);
	private var word_gap_timer:Timer = new Timer(TIME_UNIT * 7, 1);
	private var short_timer:Timer = new Timer(TIME_UNIT * 1, 1);
	private var long_timer:Timer = new Timer(TIME_UNIT * 3, 1);
	private var sound:Sound = new Sound();
	private var channel:SoundChannel;
	private var trans:SoundTransform;
	private var playlist:Vector.<Array> = new Vector.<Array>();
	private var charlist:Vector.<String> = new Vector.<String>();
	private var char_txt:TextField = new TextField();
	function Morse () {
		addEventListener(Event.ADDED_TO_STAGE, initializeHandler);
	}
	private function initializeHandler(e:Event):void {
		removeEventListener(Event.ADDED_TO_STAGE, initializeHandler);
		//
		sound.addEventListener(SampleDataEvent.SAMPLE_DATA, onSampleData);
		channel = sound.play();
		trans = channel.soundTransform;
		trans.volume = 0;
		channel.soundTransform = trans;
		addChild(char_txt);
		initializeText();
		initializeTimer();
		x = stage.stageWidth / 2;
		y = stage.stageHeight / 2;
	}
	private function initializeText():void {
		var tf:TextFormat = new TextFormat();
		tf.color = 0xffffff;
		tf.align = TextFormatAlign.CENTER;
		tf.size = 100;
		char_txt.defaultTextFormat = tf;
		char_txt.selectable = false;
		char_txt.scaleX = char_txt.scaleY = 2;
		char_txt.x = -char_txt.width / 2;
		char_txt.y = -char_txt.height / 2;
	}
	private function initializeTimer():void{
		code_gap_timer.addEventListener(TimerEvent.TIMER, timerHandler);
		char_gap_timer.addEventListener(TimerEvent.TIMER, timerHandler);
		word_gap_timer.addEventListener(TimerEvent.TIMER, timerHandler);
		short_timer.addEventListener(TimerEvent.TIMER, timerHandler);
		long_timer.addEventListener(TimerEvent.TIMER, timerHandler);
	}

	private function timerHandler(e:TimerEvent):void {
		trans.volume = 0;
		channel.soundTransform = trans;
		switch (e.target) {
			case code_gap_timer:
			case char_gap_timer:
			case word_gap_timer:
				send();
				break;
			default:
				if (currentCode && currentCode.length < 1) {
					currentCode = null;
					char_gap_timer.start();
				}else {
					code_gap_timer.start();
				}
				break;
		}
	}
	private var currentCode:Array;
	public function send(keycode:uint = 0, char:String = null):void {
		if (keycode) {
			var a:Array = MorseCode.getCode(keycode);
			if (a) {
			playlist.push(a);
			if (char == "") char = (keycode-96) + "";
				charlist.push(char);
				if (currentCode) return;
			}else {
				return;
			}
		}
		if (currentCode && currentCode.length == 0) currentCode = null;
		if (!currentCode) {
			if (playlist.length < 1) return;
			currentCode = playlist.shift();
			char_txt.text = charlist.shift().toUpperCase();
		}
		var code:uint = currentCode.shift();
		var t:Timer;
		switch (code) {
			case CODE_SHORT:
				trans.volume = 1;
				t = short_timer;
				break;
			case CODE_LONG:
				trans.volume = 1;
				t = long_timer;
				break;
			case CODE_BREAK:
				trans.volume = 0;
				t = word_gap_timer;
				break;
		}
		channel.soundTransform = trans;
		t.start();
	}
	private function onSampleData(e:SampleDataEvent):void{
		for ( var c:int=0; c<8192; c++ ) {
			e.data.writeFloat(Math.sin((Number(c+e.position)/Math.PI/2))*0.25);
			e.data.writeFloat(Math.sin((Number(c+e.position)/Math.PI/2))*0.25);
		}
	}
}
class MorseCode {
	static public function getCode(keycode:uint):Array {
		var code:Array;
		if (keycode >= codelist.length) return code;
		if (codelist[keycode].length > 0) code = codelist[keycode].concat();
		return code;
	}
	static private const codelist:/*Array*/Array = [
		[],		//0:
		[],		//1:
		[],		//2:
		[],		//3:
		[],		//4:
		[],		//5:
		[],		//6:
		[],		//7:
		[],		//8:
		[],		//9:
		[],		//10:
		[],		//11:
		[],		//12:
		[],		//13:
		[],		//14:
		[],		//15:
		[],		//16:
		[],		//17:
		[],		//18:
		[],		//19:
		[],		//20:
		[],		//21:
		[],		//22:
		[],		//23:
		[],		//24:
		[],		//25:
		[],		//26:
		[],		//27:
		[],		//28:
		[],		//29:
		[],		//30:
		[],		//31:
		[7],	//32:
		[],		//33:
		[],		//34:
		[],		//35:
		[],		//36:
		[],		//37:
		[],		//38:
		[],		//39:
		[],		//40:
		[],		//41:
		[],		//42:
		[],		//43:
		[],		//44:
		[],		//45:
		[],		//46:
		[],		//47:
		[3,3,3,3,3],		//48:0
		[1,3,3,3,3],		//49:1
		[1,1,3,3,3],		//50:2
		[1,1,1,3,3],		//51:3
		[1,1,1,1,3],		//52:4
		[1,1,1,1,1],		//53:5
		[3,1,1,1,1],		//54:6
		[3,3,1,1,1],		//55:7
		[3,3,3,1,1],		//56:8
		[3,3,3,3,1],		//57:9
		[],		//58:
		[],		//59:
		[],		//60:
		[],		//61:
		[],		//62:
		[],		//63:
		[],		//64:
		[1,3],			//65:a
		[3,1,1,1],		//66:b
		[3,1,3,1],		//67:c
		[3,1,1],			//68:d
		[1],				//69:e
		[1,1,3,1],		//70:f
		[3,3,1],			//71:g
		[1,1,1,1],		//72:h
		[1,1],			//73:i
		[1,3,3,3],		//74:j
		[3,1,3],			//75:k
		[1,3,1,1],		//76:l
		[3,3],			//77:m
		[3,1],			//78:n
		[3,3,3],			//79:o
		[1,3,3,1],		//80:p
		[3,3,1,3],		//81:q
		[1,3,1],			//82:r
		[1,1,1],			//83:s
		[3],				//84:t
		[1,1,3],			//85:u
		[1,1,1,3],		//86:v
		[1,3,3],			//87:w
		[3,1,1,3],		//88:x
		[3,1,3,3],		//89:y
		[3,3,1,1],		//90:z
		[],		//91:
		[],		//92:
		[],		//93:
		[],		//94:
		[],		//95:
		[3,3,3,3,3],		//96:0
		[1,3,3,3,3],		//97:1
		[1,1,3,3,3],		//98:2
		[1,1,1,3,3],		//99:3
		[1,1,1,1,3],		//100:4
		[1,1,1,1,1],		//101:5
		[3,1,1,1,1],		//102:6
		[3,3,1,1,1],		//103:7
		[3,3,3,1,1],		//104:8
		[3,3,3,3,1],		//105:9
	];
}