PHP 프로그래밍

본문 바로가기
사이트 내 전체검색


Web Programming >> PHP Programming
[목차]
제23장 Ming 라이브러리 사용하기

    1. Ming의 구조 및 설치

 

사이트를 만들 때 가장 신경 쓸 부분은 뭐니뭐니 해도 컨텐츠라는 것은 다시 강조할 필요가 업을 것입니다. 아무리 사이트의 디자인이 휘황찬란하더라도 컨텐츠가 부족한 사이트라면 다시 그 웹사이트를 찾지는 않을 것이기 때문입니다. 그렇지만 ' 기왕이면 다홍치마'라는 말에 휘둘려서인지 사람들은 최댛나 자신의 웹 사이트를 멋지게 만들어야 한다는 강박관념에 시달립니다. 자신이 만들어놓은 웹 사이트의 방문자가 적은 이유는 ' 아마도 디자인이 부실해서'라고 오해하는 경우가 일반적이죠. 하지만 컨텐츠가 풍부하고 쉽게 찾을 수 있는 사이트가 더 많이 북마크된다는 것 잊지 말기 바랍니다. 그러나, 풍부한 컨텐츠에 좋은 디자인이 가미된 사이트라면 좀 더 많은 사람들이 방문하겠죠. '좋은 디자인'과 '멋있는 디자인'이 같은 말이 될 수는 없겠지만, 어쨌든 멋있어 보이는 홈페이지를 위해 많은 사람들이 매크로미디어의 속웨이브 플래시(줄여서 플래시, 확장자는 .swf)를 사용하곤 합니다. 바로 여러분은 이번호에서 플래시 파일은 PHP에서 동적으로 만들 수 있는 클래스 라이브러리인 ming에 대해 배울 것입니다.

 

보통 저작도구로 만든 플래시 무비 파일은 일정한 애니메이션을 보여줄 수 있을 뿐입니다. '레이의 빙긋 웃는 모습'을 보고 싶은 사람에게 '전 아스카가 내숭떠는 모습만 만들었어요'라고 한다면 실망할 것이 분명하겠죠. '레이의 웃는 모습', '레이의 내숭 떠는 모습','아스카가 웃는 모습', '아스카가 내숭떠는 모습'등의 여러 플래시를 일일이 만드는 것이 아니라, 상화에 따라 자유롭게 조합한 플래시 무비를 PHP에서 처리해 보여줄 수 있다면 정말 근사할 것 같지 않나요. 

 

  PHP에서 플래시 파일을 만들 수 있는 라이브러리에는 libswf와 ming이 있습니다. libswf는 4.0RC2이상의 버전에서, ming은 4.0.5부터 정식으로 사용할 수 있습니다. 어느 족을 사용하든 상관없겠지만 저는 다음과 같은 이유로 ming을 아용하기 결정했습니다.

◆ ming은 오픈 소스 라이선스인 LGPL을 따릅니다.
◆ ming은 플래시 파일의 구조를 좀더 잘 추상화한 클래스 라이브러리입니다.
◆ ming은 PHP뿐만 아니라 C, C++, 파이썬, 루비 등의 언어로 프로그래밍할 수 있습니다.
   (여러분이보는 시점에서 자바에 대한 지원이 포함될지도 모르겠습니다.)
◆ ming은 libswf에 비해 더 많은 플랫폼을 지원합니다.
◆ libswf와 ming은 기존의 swf 파일을 불러오는 기능은 없습니다. 하지만, ming은 swf파일을 분석
   는 listswf와 ming의 API에 맞는 소스 코드로 변환시키는 swftophp라는 유틸리티를 제공해
   기존의 swf파일의 패턴을 분석할 수 있게 해 줍니다.
◆ 그 외에도 플래시 파일과 관련된 여러 유틸리티를 제공합니다.

<화면 1> ming의 공식홈페이지
( http://www.opaque.net/ming )

 

  글을 진행하기 전에 미리 양해를 구할 것이 있습니다.
ming에 관련된 클래스와 메쏘드가 워낙 많아 일일이 설명하지는 못하고, 각 클래스의 관계와 중요한 메쏘드에 대해서만 다뤘습니다. 따라서, 상세한 API는 공식 ming 홈페이지에 있는 매뉴얼을 참고하기 바랍니다. 그럼 ming을 설치하는 방법부터 배워볼까요.
 

 

  간단하게 리눅스에서 rpm으로 설치하는 방법만 설명하겠습니다. (소스를 직접 컴파일해 사용하고 싶은 독자는 홈페이지의 설치 문서를 참조하기 바랍니다. 우선 다음 URL로 접속해 rpm파일을 다운 받은 다음 rpm -Uvh(다운받은 파일) 명령을 통해 설치하기 바랍니다. (물론 설치하기 전에 기존의 PHP는 지우기 바랍니다.

http://rpms.arvin.dk/ming/ming-0.1.1.2.i586.rpm
http://rpms.arvin.dk/php/install-ready/i686/ 에 있는
php-4.0.5-2.arvin.i686.rpm
php-devel-4.0.5-2.arvin.i686.rpm
php-ming-4.0.5-2.arvin.i686.rpm

  설치가 끝나면 아파치를 실행시키는 것으로 일단 ming의 동작은 보장되지만, 그외 ming에서 지원하는 유틸리티는 아직 rpm패키징이 안된 상태이므로 컴파일이 필요합니다.

http://www.opaque.net/ming/ming-0.1.1.tgz

앞의 Ming 공식 사이트에서 소스 파일을 다운로드한 다음 압축을 풀면 ming-0.1.1 디렉토리 밑에 util이라는 디렉토리가 생깁니다. 이 util 디렉토리로 옮겨 다음과 같은 명령어를 차례로 실행한 다음 생성되는 실행 파일을 원하는 디렉토리로 옮겨 사용하면 도비니다. (그냥 make를 입력하면 실행 파일이 무슨일을 하는지 친절하게 가르쳐줄 것입니다. )

 

tar xvfz ming-0.1.1.tgz
cd ming-0.1.1/util
make bindump; make hexdump; make listswf; make listfdb; \
make listmp3; make listjpeg; make makefdb; make swftophp

 

 

플래시 무비를 찍기 위한 스튜디오를 개설했으면 이제 '플래시 애니메이터'가 되기 위한 개념파악을 해야겠죠. 실제 애니메이션에서 필름의 물리적인 최소 단위를 프레임(Frame)이라고 합니다. 플레시 무비(SWFMoive) 역시 프레임의 정지된 영상이 담겨져 있는 것과 비슷하게 프레임을 일정한 간격으로 교체해 보여줌으로써 동영상을 보는 효과를 줍니다. 이런 프레임 속에 여러 장면을 담을 수 있는데 이것을 'Displayable Type'이라고 부르며 세이프(SWFShpe), 버튼(SWFButton), 텍스트(SWFText), 스프라이트(SWFSprite), 모드(Morph)등이 있고, SWFMovie의 객체는 이 Displayble 클래스를 SWFDisplay Item 이라는 핸들러 클래스를 사용해 관리합니다. <<그림1>참조>
   SWFMovie 클래스의 객체는 플래시 파일을 만들기 위해 반드시 생성해야 합니다. <리스트 1>처럼 객체를 생성한 후 플래시 무비의 크기, 배경색, 초당 프레임수를 설정해 출력하는 순서를 따르면 됩니다.
   <리스트1>을 실행하면 소스 파일의 이름처럼 아무 것도 나타나지 않는 빈 필름을 감상할 수 있습니다. 물론 실제 애니메이션처럼 필름을 낭비한 것은 아니기 때문에 얼마든지 재 촬영이 가능하죠. 그럼 어떤 것을 촬영할 수 있는지 알아 볼 차례인데 가장 기본적인 SWFShape 클래스와 관련 클래스부터 시작해 보겠습니다.

 

 

  Shape라는 단어는 모형틀, 판등의 뜻으로 해석이 가능하며, SWFShape라는 클래스는 실제 애니메이션을 제작할 때 사용하는 셀룰로이드나 그림을 그릴 때 사용하는 도화지 정도로 생각하면 됩니다. 실제로 도화지가 있다고 가정해 볼까요.

 

-  kohy1님께서 정리해 주셨습니다. -

[목차]

개인정보취급방침 서비스이용약관 모바일 버전으로 보기 상단으로

TEL. 063-469-4551 FAX. 063-469-4560 전북 군산시 대학로 558
군산대학교 컴퓨터정보공학과

Copyright © www.leelab.co.kr. All rights reserved.