위에 것은 이미지입니다. 생존신고, 생존신고.
여하튼, 오늘은 주로 MIDI 파일을 플래시에 읽게 하는 작업을 했습니다.
MIDI의 주 장점은 엄청난 저용량이죠.
일단 코드를 공개하죠.
접기
//참고로 SWC는 http://code.google.com/p/as3midilib/ 에서 구함.
import com.newgonzo.midi.MIDIDecoder;
import com.newgonzo.midi.file.*;
import flash.net.FileReference;
import flash.net.URLRequest;
import flash.utils.ByteArray;
import flash.net.URLLoader;
var midiref:FileReference=new FileReference();
var midireq:URLRequest=new URLRequest();
var midildr:URLLoader=new URLLoader();
midildr.dataFormat=URLLoaderDataFormat.BINARY;
midiref.browse([new FileFilter("Midi File","*.mid")]);
midiref.addEventListener('select',midiload);
///
var mididata:ByteArray;
var mididecoder:MIDIDecoder=new MIDIDecoder();
var file:MIDIFile;
var miditrack:MIDITrack;
var midievent:MIDITrackEvent;
function midiload(e):void{
midiref.removeEventListener('select',midiload);
midireq.url=midiref.name;
midildr.load(midireq);
midildr.addEventListener('complete',midiread);
}
var debug:uint;
function midiread(e):void{
midildr.removeEventListener('complete',midiread);
debug=getTimer();
mididata=midildr.data;
file=mididecoder.decodeFile(mididata);
midiplay();
}
////
import com.newgonzo.midi.io.*;
import com.newgonzo.midi.messages.*;
import com.newgonzo.midi.events.*;
import com.newgonzo.midi.MIDIClock;
import flash.events.Event;
var midicnt:IMIDIConnection=new MIDIConnection();
var midiclock:MIDIClock=new MIDIClock(midicnt);
var midiplayer:MIDIFilePlayer;
function midiplay():void{
midiclock.addEventListener(ClockEvent.BEAT, midiBeat);
midiclock.addEventListener(ClockEvent.POSITION, midiPosition);
midiclock.addEventListener(ClockEvent.START, midiStartStop);
midiclock.addEventListener(ClockEvent.STOP, midiStartStop);
midicnt.connect("127.0.0.1", 10000);
midiplayer=new MIDIFilePlayer();
trace(getTimer()-debug);
}
function midiBeat(e){
trace("BEAT")
}
function midiPosition(e){
trace("POSITION")
}
function midiStartStop(e){
trace("STARTSTOP")
}
/*
stage.addEventListener(Event.ENTER_FRAME,everyframe);
function everyframe(e):void{
}
*/
b1.addEventListener('click',midistart);
function midistart(e){
}
접기 결과는 참담한 실패.
디코드한 곡을 어떻게 플레이할지 몰랐기 때문이 주 원인이죠.
하지만 MP3 사용은 정말 최후의 수단입니다. 이때까지 저용량을 계속 지켜왔는데, 갑자기 그 전략을 버리면 게임에 컨텐츠를 많이 넣을 수가 없거든요.
일단, 건물이나 마저 만들고 생각해봐야겠습니다.