플래시 무비를 만들었는데...
플래시 무비를 만들었는데...
용량이 너무 커서.. 로딩되는데 시간이 길다?
로딩될때까지 텅빈 하얀화면 보고있기도 그렇고..
그래서 준비했습니다..ㄱ-
기본기능과 간단한(?)액션을 이용한 프리로더 만들기..
준비물 : 적어도.. 플래시 mx 이상 (Flash 8 권장)
※주의 : 본인은 플래시 8.0을 사용하므로 화면구성과 기능에 차이가 있을수 있음을 알려드립니다.

우선 컴포넌트창을 띄웁니다. (8.0기준 ctrl + F7 혹은..window메뉴 어딘가..)
혹시 이번 강좌에 사용할 프로그래스 바가 없다면..
플래시 웹사이트에 가셔서 플래시 익스텐션 매니저를 설치하시고 추가팩을 다운받으셔야합니다.
(사실 기본오브젝트라 없을일은..)

메인화면으로 프로그래스바를 드래그해서 추가합니다.


그 다음은 파라메터창을 클릭하고 나오는 목록에서 모드를 메뉴얼로 설정합니다.
(반드시 메뉴얼로 설정해야합니다. 안그럼 ㄱ-)

다음은 레이어 설정인데..
저는 처음부터 레이어를 하나 더 만들어서 아래 로딩바 레이어에 프로그래스바를 추가했습니다.
그리고 액션레이어의 1,3에 빈 키프레임을 만들었습니다.
참고로 레이어에서 타임라인 추가하는 방법은..
그림에 로딩바처럼 이어진 프레임을 삽입하는 방법은,
원하는 위치에서 F5를 눌러주면, 그 위치까지 알아서 이어진 프레임을 삽입합니다.
액션바처럼 비어있는 프레임 삽입방법은..
원하는 위치에서 F6을 누르면 비어있는 키프레임을 생성합니다.
자..다음부턴 고난이도의 액션삽입입니다...
(주의 : 대소문자구별 확실히해야함..)
우선 액션 레이어의 1프레임을 클릭하고 액션창(window 메뉴-> Action 혹은, 단축키 F9)을 띄웁니다.
1프레임 액션창에 써넣을 내용은..
bytesTotal=this.getBytesTotal();
플래시 액션스크립트에서 말하는 this라는 단어는 자기자신을 의미합니다.
보통.. 액션에서 경로를 지정할때 상대,절대 두가지의 경로로 지정하는데
절대경로 방식은.. _root.xxx.xxx.xxx. .....이런식으로 항상 메인 타임라인을 기준으로(_root)
도트(.)를 사용하여 폴더트리처럼 내려가는 방법.
상대경로 방식은.. 항상 그 액션이 적용되는 오브젝트,타임라인 자신을 기준으로 경로를 지정하는 방식으로..
자기자신을 this로 표현하여 상위는 _parent 하위는 this.xxx.xxx ...이런식으로 나타냅니다.
앞으로 나올 this들은 액션이 실행되는 오브젝트들 자기자신을 의미합니다.
즉 구문을 해석하면..
액션은 가장 상위인 메인 타임라인의 액션레이어상에 위치하므로
getBytesTotal(); 이라는 전체 플래시 무비의 크기를 구하는 액션을 사용하여
등호연산자(=)를 써서 bytesTotal라는 변수에 대입한다는 의미입니다.
한마디로..전체 플래시무비의 크기를 bytesTotal에 저장한다는 말입니다.
(참고 : 변수의 지정은..미리 지정된 액션,특수문자등을 제외한 어떠한 단어,숫자의 조합도 상관없습니다. 대소문자구별 O)
그 다음 액션레이어 3프레임에는 다음을 입력합니다.
bytesLoaded=this.getBytesLoaded();
this.bar1.setProgress(this.bytesLoaded, this.bytesTotal);
if (this.bar1.percentComplete<100)
{
this.gotoAndPlay(_currentframe-1);
}
자..해석하면..
우선 bytesLoaded라는 변수에 전체 플래시 무비의 지금까지 로드된 용량을 구해서 그 값을 저장하고
처음 추가한 프로그래스바(this.bar1로 경로설정)를 UI오브젝트 프로그래스바 컨트롤액션 setProgress로 컨트롤합니다.
(사실상.. 1프레임 bytesTotal와 3프레임 bytesLoaded란 변수들은 setProgress의 상세옵션을 위해 만든 구문입니다.)
즉, setProgress는 전체 크기와 로드된 크기를 비교해서 진행바가 몇%를 가리킬지 컨트롤하는것입니다.
아아..어딜가나 빠지지않는 조건문 if..
해석은.. 만약 bar1의 퍼센트 완료가 100%보다 미만일 경우..
gotoAndPlay액션을 사용해 바로 그타임라인에서 바로앞(만든대로라면 2프레임으로 가겠죠..)으로 이동
액션실행이 가장 우선권이기때문에 프레임이 진행하려해도 100%가 안되면 앞으로가라는 명령때문에
100%가 되기전까진 계속 2,3프레임의 무한루프 반복이 되는것입니다.

그 다음.. 장면창(Scene)을 띄워서 (Shift + F2 혹은 window메뉴 에서 찾아보시길..)
프리로더를 만든 장면을 마음대로 이름바꿔주고 (저는 Loading이라고..)
장면을 하나 더 추가해서 추가된 장면에 만들고싶은 내용...플래시로 홈페이지를 만들던지
앨범을 만들던지는 만드는사람 마음입니다.
내용추가..(07/1/25 Thu)
만든걸 시험해보실땐..
[리빙포인트]
로딩이 아닌 내용이 들어갈 장면에 첫프레임에 스탑(stop();)을 걸어주면 좋다.
내용이 들어갈 장면에 음악이나 동영상을 일부러 집어넣어서 용량 늘리고 어디 올려놓고 시험해봐도 좋다.
그리고 하나 더 수정할 부분은..
bytesTotal과 bytesLoaded는 변수라기보단..
사실..플래시 자체에서 기본적으로 지정되있는 내장함수(?)..인것같습니다.
단지 전체바이트를 알아내고 로드된 바이트를 알아내라는 단어에 불과하고
거기에 등호로(=)어디에있는 어떤 값을 대입할건지 지정한 것입니다.
즉..단독으로는 행동이 불가능한 그런 녀석들입니다.
여기까지 읽으신분들...수고하셨습니다 ㄱ- ;
(이거 쓰고나니 새벽 2시네;; 아 졸려..OTL..뭐..주야전도된지 오래지만..
그럼..3시간 자고 알바뛰러가볼까..ㄱ-;;)
출처 - 클라리스 님 블로그


0