안녕하세여 숀팬입니다.
정말 많이 늦어졌습니다.. 이렇게 늦어져서 죄송합니다.
요즘 회사일은 없지만... 알바꺼리들이 밀려서 -0-;;
요즘 다들 경기가 안좋낭... 회사가 어찌 조용합니다 ㅋㅋ 저한테는 좋은건가..
오늘 어둠의 경로를 통해서 Adobe CS3 Design Premium 를 구했습니다 . 무려 3기가나 하더군요..
테스트할겸.. 이번 강의는 cs3로 해보겠습니다.
인터페이스에 적응이 안되더라두 이해해주시길 바랍니다.
자.. 이제 저번시간다음으로 나머지 flv제어에 대해서 알아보겠습니다.
일단 저번에 만든 파일을 열어보아요..
플레이는 잘되시죠 ^^;
다들 이해하셨을꺼라 생각하고 그냥 진행하겠습니다.
3.플래시 동영상을 무한반복 시키는 방법 or 플래시동영상이 끝나는시점을 체크하는방법
저번에 소개 했던내용과 마찬가지로 flv는 한번밖에 재생이 되질 않습니다.
저희 웹의 동영상과 약간은 다르죠.. 저희는 거즘 제한하지않으면 무한반복이었으니..
또한 클라이언트들도 그렇게 해달라고하죠...
한때는 이방법을 몰라서.. flv를 안했던적도 있습니다.
자 하기전에 저희는 한가지의 NetStream의 함수를 알아보도록 하겠습니다.
바로 onStatus() 함수입니다.
이함수는 NetStream객체에 오류가 발생할때나 상태가 바뀔때만다 호출이 됩니다.
또한 이 호출되는 객체는 onStatus핸들러의 결과를 설명하는 문자열이 포함된 code속성과
status 또는 error문자열이 포함된 level속성을 가집니다.
이렇게 이론으로 설명을 하면 이해가 잘 안되시겠죠? ㅋㅋ
한번 테스트를 해보겠습니다.
자 저번에 했던 플래시 파일을 열어서 첫프레임에 적었던 액션코드 다음으로
다음과 같은 액션을 넣어줍니다.
stream_ns.onStatus = function(infoObject) {
trace("infoObject.code:"+infoObject.code+"");
};
자 보시면 알겠지만 onStatus도 함수라서 함수선언을 해주었고 변수로 infoObject를 썼는뎅
이 infoObject는 flv의 정보를 뜻합니다.
그리고 trace출력값으로 flv의 현제정보코드값을 출력하라고 선언해주었습니다.
자 이렇게 써준후에 한번 실행을 해봅시다.
동영상이 끝날때까지 기다립니다.
자 한번만 보여주고 마지막컷에서 멈추었죠?
그럼 한번 output에서 trace출력값을 한번 보길 바랍니다.
설마 -_-; trace가 머냐고 묻는분은 안계실꺼라 생각합니다.
자 한번볼까요?
자 출력문을 한번보시면...
infoObject.code:NetStream.Play.Start
infoObject.code:NetStream.Buffer.Empty
infoObject.code:NetStream.Buffer.Full
infoObject.code:NetStream.Buffer.Empty
infoObject.code:NetStream.Buffer.Full
infoObject.code:NetStream.Buffer.Flush
infoObject.code:NetStream.Play.Stop
infoObject.code:NetStream.Buffer.Empty
이렇게 출렸되었습니다. 처음 flv가 플레이가 되었고 buffer가 없다가 buffer가 다시 풀상태...
를 반복하다가 마지막에 보시면 멈추고 buffer가 없다고 나오게 됩니다.
여기서 반복이 안된것은 딱 두가지이죠?
infoObject.code:NetStream.Play.Start 과 infoObject.code:NetStream.Play.Stop
입니다. 즉 처음 출발할때 한번 그리고 끝나고 한번 밖에 안오는 출력값입니다.
벌써 이해하셨는 분들도 있겠지만 맞습니다 저는 이 출력값으로 제어를 했습니다.
즉 출력값이 infoObject.code:NetStream.Play.Stop 일때 다시 플레이를 하라는 함수를 만들어
선언했습니다.
자 이렇게한 함수를 한번 볼까요?
stream_ns.onStatus = function(infoObject) {
if( infoObject.code == "NetStream.Play.Stop"){
this.play(myURL);
}
};
자 이해하셨죠 onStatus함수를 이용하여 if문으로 해서 code값의 문자값이 NetStream.Play.Stop일
경우 다시 stream_ns를 플레이하라는 함수입니다.
자 이렇게 써보시고 한번 실행을 해보시기 바랍니다.
그럼 아마 무한반복 플레이가 될껍니다. ^^
4.flv의 play stop pause로 제어하기
자 이제 이 flv를 play stop pause를 이용해서 제어를 해보겠습니다.
보통 저희가 생각하는 동영상제어는 당연히 play stop puase가 있는걸로 알고있습니다.
하지만 flv는 참으로 애매한데요 그이유가 flv에는 stop이라는 개념이 없고 close개념이 대신하고
있습니다.
참 애매합니다 (참고로 저는 아직도 헷갈리고 있습니다 )
자 하나씩 짚고 넘어가 볼까요
NetStream.play() - flv를 play하는 메서드 입니다.
저희가 쉽게 생각하는 그 play개념이 맞습니다 위에 반복재생을 할때 썻던 방법과 동일합니다.
NetStream.pause() -flv를 pause하는 메서드 입니다.
흠.. 여기서 좀 생각을 하셔야 하는게 저희는 pause를 하고 난다음에 play를 누르면 중간에 멈춘게
다시 play되는거라고 생각합니다. 물론 저도 쭉 그렇게 생각해 왔습니다.
하지만 NetStream에서는 pause를 누른후 잠시 멈추고 다시 플레이를 할려면 pause를 한번더 눌러야
합니다.
play를 눌렀다가 다시 처음부터 플레이가 되는것이죠 -_-;
조금 골치가 아픕니다. 어짜피 버튼으로만 제어를 할꺼면 버튼이미지를 바꾸고 나서 명령어를 잘 주면
해결은 할수 있습니다. 하지만.. NetStream에서 제공되는 함수들은 이제 더이상 못쓴다는게
문제입니다.
예를 들어서 flv 스트리밍 bar를 만들때도 제어를 할수가 없다는게 문제가 됩니다. 이게 가장 큰문제죠
하지만 버튼 자체로만 사용할꺼면 원하시는대로 바꾸셔도 상관은 없습니다.
하지만 전 스트리밍 bar에 사운드 제어까지 할꺼라서 원칙대로 해보겠습니다.
NetStream.close() - 인터넷쿠키폴더에있는 flv를 삭제하는기능입니다 즉 flv를 없애버리는 기능입니다. 이게 여기서는 스탑기능입니다;; 말로설명을 하면 이해가 잘안되시겠지만 한번 만들고 보시면
이해가 가실껍니다.
자 다들 각각 play stop pause버튼이미지를 만들어 보고 플래시 stage에 올려놓습니다.
일단 저는 강의에 목적을 두었기 때문에 대충해서 올려놓겠습니다.
자 각각 play stop pause이미지 나 텍스트들을 버튼으로 만듭니다.
그리고 그 버튼들의 instance name을 start stop pause로 합니다.
cs3에서는 이제 instance name 에서 play라는 말을 못쓰는군요;; 덴장;
자 이렇게 각각버튼의 instance name를 주었으면 이제는 이걸 한꺼번에 선택한후에 무비클립으로
만듭니다. 이 무비클립의 네임은 Mc_bt로 합니다.
자 이렇게 준비하셨다면 다시 루트 첫프레임에가서 액션창을 열어 봅시다.
그리고 마지막 줄에다가 다음과 같은 액션 코드를 입력해주시기 바랍니다.
Mc_bt.start.onRelease = function(){
stream_ns.play(myURL);
}
Mc_bt.pause.onRelease = function(){
stream_ns.pause();
}
Mc_bt.stop.onRelease = function(){
stream_ns.close();
}
자.. 이렇게 써주면 flv의 제어가 끝나게 됩니다.
5.flv를 스트리밍바로 동영상흐름제어하기 (drag방식)
는 다음시간에 하겠습니다 ㅋ
역시 이거하는데... 퇴근시간이 다가오고 있군요 ㅠㅠ
내일 올리겠다는 말은 못하겠습니다...
하지만 최대한 빨리해서 올려서 flv 강의를 마치겠습니다.
그럼 수고하세여 ^^
첫댓글 워~ 떳다~~ 워~~ 기다린 강의~~ 워~~
얏호~ +_+
모두 다~~ 해보고 꼬리 남긴다고 감사의 말이 늦었네욤^^;;;; 감사~감사~ 감사해욤~~^^ 열띠미 해봐야 겠어요~~소스다 다 외워 질려나.....ㅋㅋㅋ
이제서야 보기시작했는데...넘 잼나고 좋아요^^ 감솨~~~~~~
음.. 인스턴트 네임으로 stop도 안된다고 하네요..
근데 stop버튼 누르고 다시 play버튼 누르면 재생이 안되는건.. 왜그런가요.. 저뿐인가요 ㅠ
가입한지 며칠되지도않는데,요기다 물어봐도 될지...flv동영상을 쪼개서(split)여러개 올렸거든요.swf랑 같이...이거 여러flv를 차례대로 연속해서 재생하는 방법이 없을까요? NetStream 변수로...부탁드립니다...ㅠ.ㅠ
감사합니당!!!!!!~~~~~~~ 그런데.. 스탑 플레이 버튼 달았는데 영상은 정지 되는데 소리는 정지가 안되네요~~>.<
숀팬님~ 정말 감사합니다. ^^ 3년이 지난 지금도 감동입니다.