플래시와 서브버전

회사에서도 그렇고 집에서도 그렇고…

작업물을 관리하다보면 엉켜서 헷갈릴때가 한두번이 아니었다.

main.fla 파일을 만들고 그다음은 main01.fla, main_20090324.fla, main.fla.backup 등등… 수정사항을 몇번 거치다보면 몇개의 파일이 생성되고 그것마저도 여기저기 폴더에 쳐박아두기 일쑤였고.

그러다보니 찾기도 힘들고 예전 작업물이 필요할 때는 최신판 파일을 가지고 다시 예전 작업물대로 되돌리는 삽질을 계속해야했다.

버전관리시스템이 있다면 좋을텐데…라는 생각에 오늘 웹서핑을 했다.

cvs와 svn에 대해 찾아봤는데 이외에도 몇가지 소스관리시스템을 찾아봤는데… 역시나 Subversion을 익히는게 제일 나을것 같다.

게다가 오늘 본 조금은 충격적인 문서 내용

정말 난 우물안개구리였다. AS2.0 조금 쓸줄 안다고 한마디로 깝치고 다녔던 것 같다. 이제 겨우 AS3.0에 접근했음에도 난 그게 너무 대단한 것인줄 알았다. 사실 별거 아니었는데…

클래스, FDT, SVN 셋중 제대로 할줄 아는게 아무것도 없다.

너무 늦은걸까…하는 생각이 든다.

클래스는 지금 열심히 공부하고 있으니 뭔가 답이 보이겠지… SVN은 학원에서 배울 방법도 없고 책을 사서 봐야할 것 같다.

두달 이후에는 뭔가 나에게 달라진 점이 있었으면 좋겠다.

조금 더 발전적인 내가 되기 위해…

swf 파일의 파라미터로 변수를 전달 할 때의 문제점에 대한 리포트

<문제점>

HTML에서 플래시를 화면에 넣기 위해 쓰이는 일련의 태그들 <embed>라던가 <object>에서 SWF 파일명 뒤에 파라미터를 붙이는 방식으로 플래시에 변수를 넘기고 이것을 이용해 처리를 할 때의 문제점.

<embed…. (생략)…  FILE_NAME.swf?변수명=변수값>의 구조에서 이 변수값 부분을 프로그램에서 처리해주거나 어떠한 계산에 따라 써줄 때 플래시로 제대로 변수가 들어가지 않는 문제점이 있었다.

클라이언트(=웹브라우저)의 요청에 따라 HTML이 전달되어 화면에 써지게 되는데 이 순간에 SWF를 표시해주라는 것 역시 써지게 된다. 하지만 변수값은 프로그래밍 되어서 처리되기 때문에 속도가 더 느렸다.

프로그래밍되어서 전달되는 변수가 비어있기 때문에 플래시로 이런 변수를 전달 받으려하면 ‘undefined’ 값으로 들어오게 된다.

특히 메뉴 네비게이션에서 활성화에 관한 변수를 받을 때 이런 식의 파라미터를 이용한 변수 받기가 많았기 때문에 많이 겪게 되는 문제였고 swf 파일 안에 처리속도가 느리게 되는 요소(예를 들면, 대형 이미지로 작동하는 모션 같은)가 있는 경우에는 더욱 더 이 문제가 많이 생겼었다.

<해결방법>

swf의 1프레임에서 parameter 값을 확인하도록 하는 절차를 밟게 해서 이 문제를 해결 할 수 있었다.

ActionScript 1.0/2.0에서는 단순히 ‘_root.변수명’ 값이 ‘undefined’가 아닐 때를 onEnterFrame이나 watch를 통해서 if문으로 검사하고 변수가 ‘undefined’가 아닐 때 2프레임으로 넘어가서 처리를 시작하는 방법으로 해결이 가능. 물론, 이 때 실제 변수를 가지고 처리하는 부분은 2프레임부터 시작하도록 만들어야함.

ActionScript 3.0에서는 LoaderInfo 클래스를 이용해서 역시 파라미터 값을 확인하고 Event.ENTER_FRAME을 이용하거나 이벤트리스너를 연결해서 watch를 하는 방법을 이용하면 된다.

자바스크립트로 변수를 전달하는 경우에는 대부분 이상 없었으나(아마 자바스크립트의 처리속도가 HTML을 쓰는 속도만큼 꽤 빠르기 때문이 아닐까…) 지금 일하다가 흔히 마주치는 JSP 파일의 경우에는 간혹 이러한 문제 때문에 변수가 제대로 받아지지 않고 그로 인해 무한루프에 빠지게 되는 현상들이 있었다.

플래시에서 입력값을 숫자로만 받는 방법~

특정한 입력박스에서 제한된 글자만 입력 받을 수 있게하는 방법

출처 :: 네이버 지식인

[code]
stop();
form_name.restrict = “^0-9”; //숫자만 입력불가
form_age.restrict = “0-9”; //숫자만 입력가능
form_sex.restrict = “ㄱ-힣”; //한글만 입력가능
form_phone.restrict = “0-9”; //숫자만 입력가능
form_phone.maxChars = “9”; //최대 입력 문자수
bt.onRelease = function(){
onEnterFrame = function() {
if(form_email.text.indexOf(“@”)<0 || form_email.text.indexOf(“.”)<0) {
trace(“이메일 형식이 맞지 않습니다”);
}else{ //”@”, “.”이 없을때
write=new LoadVars();
write.name = user_name;
write.age = user_age;
write.sex = user_sex;
write.email = user_email;
write.phone = user_phone;
write.sendAndLoad(“test.html”,write,”POST”);
}
this.onEnterFrame = null;
}
}
[/code]

죠리퐁세기 – ActionScript 버전

과연 죠리퐁 한봉지 안에는 몇개의 죠리퐁이 들어있을까…?

2003년도에 KLDP에 시작된 죠리퐁세기에 관한 글타래.

글타래 보러 가자~~~

‘그렇게 폐인이면 죠리퐁이나 세어봐라’식으로 시작된 이 글타래는 KLDP분들의 각종 프로그래밍 언어로 만들어졌다. 이중 내가 생각한 가장 획기적인 방법은 레고 마인드스톰을 연결해서 센서를 이용해 세자는 것 같다.

여튼 오랜만에 글을 읽어보니 재미있기도 해서 나도 살짝 만들어봤다.

다음은 내가 생각한 죠리퐁세기의 Flash ActionScript 버전이다. 실제로 가능할지는 모르겠다;; 다른 프로그래밍 언어에 비해서 스크립트 언어라 죠리퐁의 개수를 세는 센서를 연동하거나 하는건 무리일것 같다. 에… 아마 Java나 C, PHP 등을 연동한다면 가능할지도 모르겠다.

[code]

//

// JollyPong count scripts

// Made with Macromedia FlashMX 2004

// Copyright(c) 2005. Dong-bum, Kim (http://www.dongbum.com)

//

// 버튼을 클릭하면 빈 무비클립을 만들어 조리퐁을 로드하여 total_jolly에 넣는다. 타임라인의 한프레임당 죠리퐁 한개씩.

// 죠리퐁을 로드

// 조리퐁이 모두 로드 되지 않았다면 에러메시지 출력

// 조리퐁이 모두 로드 되었다면 jolly가 total_jolly의 모든 프레임과 같아질 때까지 하나씩 증가시키며 카운트

// jolly와 total_jolly가 같다면 카운트가 끝난 것이므로 output 출력

on (release) {

this.createEmptyMovieClip(“total_jolly”, this.getNextHighestDepth());

loadVariables(“조리퐁”, total_jolly);

if (total_jolly.done == undefined) {

trace(“아직 죠리퐁이 모두 로딩되지 않았습니다.”);

} else {

var jolly:Number = 0;

for (var i = 1; i == total_jolly._totalframes; i++) {

jolly += i;

}

trace(“조리퐁의 갯수는 “+jolly+” 입니다.”);

}

}

[/code]

음…… 문제는 두개가 붙어있는 죠리퐁을 계산할수 없다는 것. (두개 이상이 붙은 죠리퐁은 개수를 나누는 코드가 추가되어야할 것 같다.

간단하게 뭐 이런식이면 되지 않을까… 싶은데 여튼 더 연구해봐야겠다. 🙂

FLASH 예찬론

사용자 삽입 이미지내가 지금 모 포털사이트에서 하고 있는 각종 교육강좌들의 동영상 강좌 업데이트를 진행하다보면 참 많은 동영상 재생 방식을 볼수 있다.

90%(사실상 거의대부분)는 Windows Media를 이용한 방식이다. 나머지 10% 정도는 Macromedia Flash,나머지 10%는 기타 다른 방식이다. 여기 ‘기타’에 포함되는 특이한 플레이어들도 사실상 내부구조는 Windows Media에기반하고 있고 거기에 Java script나 ASP, PHP 같은 기술을 응용하여 부가적인 기능들을 제공하는 것이 대부분이다.그렇다면 이 10%의 FLASH 강좌들을 작업하면서 느낀건…?

그렇다… 플래시의 발전가능성이 정말 무궁무진하다는걸 깨닫게된다.

내가 처음 FLASH라는 제품을 마주쳤던건 아마 그것이 3인가 4버전일 때였던걸로 기억한다. 그당시만해도 GIF를 대체할 수있는 좀더 부드러운 모션툴 정도로 인식되었다. 그게 버전이 올라가면 올라갈수록 너무나 막강한 기능을 가져온것 같다. 가장비약적인 발전이 있던건 5 -> MX(6) 버전으로 넘어갈때였던 것 같다.

내가 왜 이리 플래시를 칭찬하느냐… Windows Media보다 훨씬 막강하기 때문이다. 윈도우미디어를 이용하는 경우 상당한제약이 따르게 된다. 일단 상위버전의 코덱으로 인코딩된 동영상의 경우 하위버전 미디어플레이어에서는 재생이 안되는 경우도 있다.물론 그 반대도 있고. Windows Media 10 버전 플레이어에서는 이러한 문제가 거의 해결된 것 같지만 그 이하 버전미디어플레이어에서는 이런 현상이 부지기수이다. 그로 인해 실무자인 나도 애먹고 있다;;; 플래시로 제작된 동영상 강좌의 경우클레임이 없었다. 단 한건도…

또하나… Windows Media는 운영체제의 특성을 탄다. 그야말로 윈도우 운영체제에서만 정상작동을 보장한다. 맥용도 있지만 버전이 좀 낮지. 그에 반해 Flash는 일반사용자들이 마주칠수 있는 대부분의 운영체제(윈도우/맥/리눅스/솔라리스 등등)를 포용한다. 웹표준이 날로 중요해져가고 다양한 운영체제가 늘어가는 이 마당에 단일운영체제만 지원하는 윈도우미디어플레이어는 문제가 많다고 본다.

또하나… 윈도우 미디어 기술은 윈도우 시스템과 연동되기에 레지스트리나 코덱 등등 윈도우가 망가져가면 같이 망가져간다. 최후의경우에는 동영상이 재생이 안되는 경우도 있다. 그에 반해 플래시는 운영체제와 공유하거나 하는 시스템은 없는듯하다. 내가 작업하는동안 플래시는 100% 정상작동을 보장해줬다.

아주 예전의 플래시에서는 동영상을 시퀀스(각각의 그림파일)로 나누어서 그걸 1초당 몇장식 돌려가는 방식으로 재생할 수 있었다.그 다음 버전 플래시에서는 플래시 제작단계에서 동영상파일을 통째로 Import하는 기능이 생겼다. 최근의 플래시는 이보다 더발전하여 FLV라는 자체적인 비디오방식을쓰고 있다. 물론 스트리밍도 된다. 윈도우미디어플레이어는 스트리밍을 하게하려면 전용 스트리밍서버프로그램을 사용해야한다.(그로인해스트리밍서버는 MS의 윈도우서버로 되어야만한다.) 플래시의 FLV 비디오 파일은 스트리밍 서버 없이 웹서버상의 파일만으로도스트리밍을 지원한다. 미디어파일의 스트리밍이 가능하게 하려면 얼마나 많은 돈과 관련 기술이 들어가야하는지 아는 사람이라면 이게얼마나 큰 메리트가 있는지 모를 것이다.

여기에 보안성도 들수 있다. 동영상강좌는 돈이다. 결재를 하지 않고 불법적인 방법으로 동영상을 훔쳐보려는 사람을 막기 위해얼마나 많은 기술이 있는지 보통사람은 모를 것이다. 작업자인 나는 대부분의 기술들(사실은 복잡한 자바스크립트와 파일주소의암호화가 그 핵심이다.)을 봐왔지만 그게 우리입장에서는 충분한 보안을 제공한다 생각하더라도 어떻게 파일이 외부로 새어나갈지는모르는 일이다. 그에 반해 플래시는 거의 완벽한 보안성이 있다. 플래시로 된 파일안에서 어떤 파일을 Import할때 그 파일의주소를 외부에서 알수 있는 방법은 하나도 없다. 절대 알수 없다. swf 파일을 분석하는 프로그램을 쓴다해도 내부 FLV 파일의주소는 알아낼 수 없다. 기가막힌 보안성을 제공하는 것이다.

또하나의 장점으로는 파일을 수정하기에 편리하다는 점이 있겠다. 물론 웹페이지를 만들때에는 플래시보다는 HTML이나 DHTML, PHP, ASP 같은 스크립트가 더 수정보완이 쉬울수도 있다. 하지만 동영상이 된다면 문제가 달라진다. 플래시라면 자유롭게자막을 넣고 각종 Transition 효과를 넣을 수 있다. 이것은 전문적인 동영상 편집 기술을 배운 사람이 아니더라도 플래시에대한 기초지식만 있으면 할수 있는 것이다. 윈도우미디어파일들은 쉽게 자막을 넣거나 Transition 효과를 넣을 수 없다.한번 수정하면 다시 인코딩해야하고 그것을 용도에 맞게 다시 뽑아내야한다. 이에 걸리는 시간은 엄청나다.

또하나, 전세계 컴퓨터 중 가장 많이 설치된 플러그인 1위가 플래시라는걸 당신은 알고 있는가? 윈도우미디어플레이어보다도 더 많은 컴퓨터들에 플래시가 설치되어 있다는 사실.

외국 디자이너들은 Flash를 가리켜 ‘신이 20세기에 내린 가장 큰 선물’이라 칭했다. 우리나라는 윈도우의 극강세로 인해 그에 끼워져 팔려나가는 윈도우미디어가 동영상 시스템의 대부분을 차지하고 있지만 앞으로는 모든 동영상/모션은 플래시가 잡아나가게 될것이다.