플래시 무비 제어 > script

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

script

플래시 무비 제어

페이지 정보

작성자 서방님 댓글 0건 조회 134회 작성일 06-11-08 10:39

본문

자바스크립트로 플래쉬를 제어하는 예제에 대해서는 다음 주소에서 확인하실 수 있습니다.

 

http://www.ghlab.com/blog/flashscript/movie.html

 

플래쉬 소스 파일은 이 포스트에 첨부합니다.

 

이 자료에 대한 것은

 

phpschool 에서 어떤 분이 플래쉬 무비 안의 변수값을

 

HTML 로 추출하는 것에 대한 어려움을 겪으셨기에

 

예전에 자바 스크립트를 이용하여 플래쉬 무비를 제어하는 내용에 대해

 

잠시 봐본적이 있기에 한번 알아보았습니다.

 

우선 질문의 내용은 다음과 같습니다.

 

//

 

<script language='javascript'>
function echo(str){
document.getElementById('divTxt').innerHTML = str;
}
</script>
<플래시></플래시>
<div id=divTxt></div>

위와 같은 웹페이지가 있습니다.
플래시의 1프레임에는 다음과 같은 액션스크립트가 있습니다.

stop();
txt = "가나다라마바사아자차";
getURL("javascript:echo('" + txt + "');");


이렇게 하면 잘 작동합니다. div 안에 플래시 변수 txt의 값 "가나다라마바사아자차"가 찍히는 간단한 프로그램입니다.

문제는 txt의 길이가 길면 찍어주지를 못 합니다. 테스트 결과, 한글 244자 까지만 찍히더군요.
더 많은 양을 찍고싶은데요. 방법없을까요?

플래시의 getURL함수를 실행하면 항상 딱딱 하고 소리가 납니다. 혹시 이것과 무슨 연관이 있는지.. 아니면 자바스크립트에서 value의 length 의 한계가 저기까지인지...

getURL("javascript:echo('" + txt + "');","","POST");
이렇게도 해 봤지만 별 도움이 되지 못했습니다.

한수 부탁드립니다.

 

//

 

문제는 너무 많은 변수데이터이다.

 

버그인가;; 한계인가;;

 

결국 다른 방법을 고민하던 저는 자바 스크립트를 이용한 무비제어에 대한 레퍼런스를

 

찾아보았습니다.

 

( http://www.macromedia.com/support/flash/publishexport/scriptingwithflash/scriptingwithflash_03.html )

 

아래는 혹시나 자바 스크립트와 플래쉬 무비 제어에 관한 데이터를 찾으실 분을 위하여

 

허접한 실력으로 해석해놨습니다. 허접하더라도 양해를 -_-;;

 

자바 스크립트를 이용한 플래쉬 무비 제어시 제공되는 기본 메쏘드는 다음과 같습니다.

 

- GetVariable( String variableName )
Returns the value of the Flash variable specified by varName.
Returns null if the variable does not exist.

 

varName 에 해당하는 플래쉬 변수의 값을 반환합니다.
만약 해당 변수가 존재하지 않으면 null 값을 반환합니다.

 

- GotoFrame( int frameNumber )
Activates the frame number specified by frameNumber in the current movie.
If the data for a requested frame is not yet available,
the player goes to the last frame available and stops,
causing unexpected results during playback.
Use the PercentLoaded() method to determine if enough of the movie is
available to execute the GotoFrame() method.

The argument frameNumber is zero-based; that is,
frameNumber is 0 in the first frame of the movie,
1 for the second frame, and so on.
This differs from the Goto action within Flash, which begins at 1.

 


현재 무비의 지정한 프레임으로 이동합니다.
만약 지정한 프레임의 데이터가 아직 쓸 수 없을경우(아직 로드되지 않았다면)
재생중 플레이어가 마지막 프레임에서 정지해 있는
어처구니 없는 결과를 초래할 수 있습니다.
그렇기 때문에 PercentLoaded() 를 이용하여 프레임을 측정한 다음
사용하거나 무비가 충분히 로드되면 GotoFrame() 메쏘드를 실행하기 바랍니다.

인수 프레임넘버값은 0을 기본으로 합니다.
즉, 프레임넘버값은 0이 무비의 첫번째 프레임이고
1이 그 다음 두번째 프레임입니다.
1부터 시작하는 Goto 액션과는 틀립니다.

 

- IsPlaying()
Returns true if the movie is currently playing.


만약 무비가 재생중이라면 true 를 반환합니다.

 

- LoadMovie( int layerNumber, String url )
Loads the movie identified by url to the layer specified by layerNumber.

 

지정한 레이어넘버에 맞는 레이어에 url 에 해당하는 무비를 로드시킵니다.

 

- Pan( int x, int y, int mode )
Pans a zoomed-in movie to the coordinates specified by x and y.
Use mode to specify whether the values for x and y are pixels or a percent of the window.

When mode is 0, the coordinates are pixels;
when mode is 1, the coordinates are percent of the window.
Pan does not pan beyond the boundaries of the zoomed-in movie.

 

확대 되어있는 무비에서 지정한 x, y 값에따라 이동합니다.
지정된 mode 값에 따라서 x, y 의 값이 픽셀 또는 퍼센트로 사용됩니다.
mode가 0일 경우는 픽셀로 조정,
mode가 1일 경우 윈도우의 퍼센트로 조정
Pan 은 이동했을 경우 확대 되어있는 무비의 경계선을 넘지 못합니다.
( 뜻은 비슷한데 해석은 정확히 -_-a )

 

- PercentLoaded()
Returns the percent of the Flash Player movie that has
streamed into the browser so far; possible values are from 0 to 100.

 

브라우저에 스트림되어진( 로딩된 ) 무비의 퍼센트(0에서 100 사이의 수치)를 반환합니다.

 

- Play()
Starts playing the movie.

 

무비를 재생하기 시작합니다.

 

- Rewind()
Goes to the first frame.


첫프레임으로 이동하여 재생합니다.

 

- SetVariable( String variableName, String value )
Sets the value of the Flash variable specified by variableName to the value specified by value.

 

지정한 변수에 지정한 값을 넣어 플래쉬 변수로 저장합니다.

 

- SetZoomRect( int left, int top, int right, int bottom )
Zooms in on a rectangular area of the movie.
The units of the coordinates are in twips (1440 units per inch).
To calculate a rectangle in Flash,
set the ruler units to Points and multiply the coordinates by 20 to get twips.
(There are 72 points per inch.)

 

무비의 사각형 영역을 확대시킵니다.
조정 단위는 twips로 합니다.( 1 인치당 1440 단위입니다. )
플래쉬에서의 사각형을 계산하긴 위해서는
ruler 단위를 포인트로 설정하고 20을 곱하여 조정하면 됩니다.
( 1인치당 72 포인트 )

 

- StopPlay()
Stops playing the movie.

 

무비 재생을 정지합니다.

 

- TotalFrames()
Returns the total number of frames in the movie.

 

무비의 총프레임 수를 반환합니다.

 

- Zoom( int percent )
Zooms the view by a relative scale factor specified by percent.
Zoom(50) doubles the size of the objects in the view.
Zoom(200) reduces the size of objects in the view by one half.
Zoom(0) resets the view to 100%.

You cannot specify a reduction in the size of objects
in the view when the current view is already 100%.

 

지정한 퍼센트에 따라 상대적인 크기로 확대되어 보입니다.
Zoom(50)으로 하면 대상들의 크기가 두배로 확대되어 보입니다.
Zoom(200)으로 하면 대상들의 크기가 반으로 축소되어 보입니다.
Zoom(0)으로 100%로 초기화되어 보입니다.

 

장황한 설명은 끝났습니다.

 

그럼 위에 질문에 대한 답을 써보겠습니다.

 

우선 무비의 id 를 알아내야 됩니다.

 

플래쉬를 삽입하기 위하여 생성되는 HTML 코드의 OBJECT 태그의 id 를 참조하시면 됩니다.

 

id 를 알아내면 자바스크립트에서 id.메쏘드명 으로 플래쉬를 제어할 수 있습니다.

 

그럼 한가지 예를 통하여 위에서 설명한 메쏘드를 사용하는 방법을 보여드리겠습니다;;

 

<SCRIPT>
 function getMovieVariable()
 {
  /*
   * 플래쉬 무비에서 txt 라는 변수명을 가진 변수의
   * 변수값을 추출하여 자바스크립트의 txt 변수에
   * 저장한 후 값 출력
   */
  txt = movie.GetVariable("txt");
  alert( txt );
 }
</SCRIPT>

위의 질문 내용처럼 하면( 플래쉬에서 자바스크립트로 변수값을 넘길시 ) 한글이

 

244자까지 밖에 안된다니... 이건 역으로 자바 스크립트가 플래쉬의 변수값을

 

가져오니 데이터 값에 대한 제약이 없습니다.

 

위에 GetVariable 메쏘드 사용처럼 다른 메쏘드도 사용하시면 됩니다.

 

이외에 위에 매크로미디어 페이지에는 텔타겟 메쏘드들도 있습니다.

 

그에 관련한 정보가 필요하시면 한번 가보시기 바랍니다.

 

그럼 많은 도움이 되셨길 바라며.

 

테스트 환경.

OS : MS Window 2000

Browser Version : 익스 6

Flash Version : MX

첨부파일

댓글목록

등록된 댓글이 없습니다.

Total 846건 47 페이지
게시물 검색

회원로그인

접속자집계

오늘
26
어제
302
최대
1,347
전체
155,087
Latest Crypto Fear & Greed Index

그누보드5
Copyright © 서방님.kr All rights reserved.