Red Dragon & Blue Dragon
My first visualization using a class 'BitmapData'. So it has simple algorism... :-l
If you want to play a song in your hard disk, move this SWF file to your disk please.
/**
* Copyright Jjoriping ( http://wonderfl.net/user/Jjoriping )
* MIT License ( http://www.opensource.org/licenses/mit-license.php )
* Downloaded from: http://wonderfl.net/c/mHEO
*/
package {
import flash.display.Sprite;
import flash.display.Bitmap;
import flash.display.BitmapData;
import flash.events.KeyboardEvent;
import flash.events.MouseEvent
import flash.events.Event
import flash.text.TextField;
import flash.display.MovieClip;
import flash.text.TextFormat;
import flash.filters.GlowFilter;
import flash.media.Sound;
import flash.media.SoundChannel;
import flash.text.TextFieldType;
import flash.display.BlendMode;
import flash.net.URLRequest;
import flash.utils.setInterval;
import flash.geom.Matrix;
import flash.geom.ColorTransform;
public class RDBD extends Sprite {
public function RDBD() {
var 바깥배경:Sprite=new Sprite();
addChild(바깥배경);
function 바깥배경색(색:Number):void{
바깥배경.graphics.beginFill(색);
바깥배경.graphics.drawRect(-2048,-2048,4196,4196);
}
바깥배경색(0);
var 겉배경:Sprite=new Sprite();
겉배경.blendMode=BlendMode.HARDLIGHT;
겉배경.visible=false;
겉배경.graphics.beginFill(0xFFFF00);
겉배경.graphics.drawRect(-2048,-2048,4196,4196);
stage.quality = "low";
var 글:TextField=new TextField();
var 글포맷:TextFormat = new TextFormat("Malgun Gothic",11,0xFFFFFF);
var 글필터:GlowFilter = new GlowFilter(0x3388DD,1,3,3,5);
글.selectable = false;
글.defaultTextFormat = 글포맷;
글.filters = [글필터];
글.autoSize = "left";
글.htmlText = "Jjoriping's Visualization\n<font size='16'><font color='#FF8844'>Red Dragon</font></font> & <font size='16' color='#88EEFF'>Blue Dragon</font></font>";
var 주소입력:TextField=new TextField();
var 주소포맷:TextFormat = new TextFormat("Malgun Gothic",11,0xFFFFFF);
주소입력.defaultTextFormat = 주소포맷;
주소입력.text = "(Input a MP3 file on the Internet and press Enter)";
주소입력.border = true;
주소입력.borderColor = 0xFFFFFF;
주소입력.type = TextFieldType.INPUT;
주소입력.autoSize = "left";
주소입력.y = 40;
var 버튼라벨:TextField=new TextField();
var 버튼포맷:TextFormat = new TextFormat("Malgun Gothic",12,0x337733);
버튼라벨.defaultTextFormat = 버튼포맷;
버튼라벨.htmlText = "<p align='center'>Example Song</p>";
버튼라벨.y = 60;
버튼라벨.x = 2;
버튼라벨.selectable = false;
버튼라벨.autoSize = "left";
var 버튼:MovieClip=new MovieClip();
버튼.graphics.beginFill(0x99FF99,0.8);
버튼.graphics.drawRoundRect(0,60,5+버튼라벨.width,버튼라벨.height,5);
버튼.addEventListener("click",내장노래재생);
stage.addEventListener("keyDown",키누름);
function 키누름(ㄷ:KeyboardEvent):void {
if (ㄷ.keyCode == 13) {
소리.load(new URLRequest(주소입력.text));
소리.addEventListener("complete",소리로드완료);
}
}
var 붉게:Boolean = false;
var 푸르게:Boolean = true;
function 소리로드완료(ㄷ:Event):void {
채널 = 소리.play();
붉게 = 주소입력.text.length % 2 == 0;
if (붉게) {
푸르게 = ㄷ.target.bytesTotal % 2 == 0;
}
stage.removeEventListener("keyDown",키누름);
소리재생활동();
if(내장소리여부){
붉게=true;
}
겉배경.visible=true;
}
function 소리재생활동():void {
setInterval(실시간,10);
버튼.visible = false;
주소입력.border = false;
주소입력.selectable = false;
}
function 내장노래재생(ㄷ:MouseEvent):void {
소리.load(new URLRequest("http://Jjoriping.ufree.kr/download/example.mp3"));
소리.addEventListener("complete",소리로드완료);
주소입력.text="INUxBOKU Secret Service ED - Photograph"
정보 = 0.8;
사인값 = 3;
내장소리여부 = true;
}
var 내장소리여부:Boolean = false;
var 배경:Sprite=new Sprite();
var 그림:Sprite=new Sprite();
var 새원:MovieClip=new MovieClip();
새원.graphics.beginFill(0xFFFFFF,0.5);
새원.graphics.drawCircle(0,0,10);
var 비트맵배열:Array=new Array();
var 비배열:Array=new Array();
for (var b:Number=0; b<10; b++) {
var 비:BitmapData = new BitmapData(1024,8191,false,0);
var 비트맵:Bitmap = new Bitmap(비);
비트맵.y = -7791 - 7391 * b;
비트맵.x = -100;
그림.addChild(비트맵);
비트맵배열.push(비트맵);
비배열.push(비);
}
addChild(그림);
addChild(배경);
addChild(글);
addChild(주소입력);
addChild(버튼);
addChild(겉배경);
버튼.addChild(버튼라벨);
배경.blendMode = BlendMode.ADD;
var 소리:Sound=new Sound();
var 타:Number = 0;
var 피크:Number;
var 채널:SoundChannel;
var 비번:Number = 0;
var 정보:Number = 2;
var 사인값:Number = 2.5;
function 실시간():void {
피크=(채널.leftPeak+채널.rightPeak)/정보;
타 += 0.01;
var 가로위치:Number = 375 + Math.sin(타*사인값) * 275;
var 가로위치2:Number = 375 - Math.sin(타*사인값) * 275;
if (비트맵배열[비번].y > -800) {
비번 += 1;
}
var 세로위치:Number = 170 - 피크 * 170 - 비트맵배열[비번].y;
var 세로위치2:Number = 270 - 피크 * 170 - 비트맵배열[비번].y;
if (푸르게) {
비배열[비번].draw(새원,new Matrix(피크*5,0,0,피크*5,가로위치,세로위치),new ColorTransform(피크-타,피크,피크+타/2));
}
if (붉게) {
비배열[비번].draw(새원,new Matrix(피크*5,0,0,피크*5,가로위치2,세로위치2),new ColorTransform(피크+타/2,피크,피크-타));
}
for (var bS:Number=0; bS<10; bS+=1) {
비트맵배열[bS].y += 피크 * 7 - 2;
}
그림.scaleY += 피크 / 100 - 0.005;
if (그림.scaleY > 1) {
그림.scaleY = 1;
}
if (그림.scaleY < 0.1) {
그림.scaleY = 0.1;
}
그림.x = (1 - 그림.scaleY) * 275;
그림.scaleX = 그림.scaleY;
if (피크>0.7) {
원복제(1,피크*30);
}
겉배경.alpha=피크/10;
}
function 원복제(수:Number,크기:Number):void {
for (var i:Number=0; i<수; i++) {
var 새배:MovieClip=new MovieClip();
새배.y = -100;
새배.x = Math.random() * 550;
새배.graphics.beginFill(0xFFFFFF,0.1);
새배.graphics.drawCircle(0,0,크기);
새배.addEventListener("enterFrame",새배실시간);
배경.addChild(새배);
}
}
function 새배실시간(ㄷ:Event):void {
ㄷ.target.y += 피크 * 8;
ㄷ.target.rotationY += 피크 * 5;
if (ㄷ.target.y > 900) {
ㄷ.target.removeEventListener("enterFrame",새배실시간);
배경.removeChild(배경.getChildByName(ㄷ.target.name));
}
}
}
}
}