가령
private var nst:NetStream;
private var vdo:Video;
private var totalTime:Number;
private function init():void
{
var conn:NetConnection = new NetConnection;
private var nst:NetStream;
private var vdo:Video;
private var totalTime:Number;
private function init():void
{
var conn:NetConnection = new NetConnection;
conn.connect(null);
nst = new NetStream(conn);
nst.addEventListener(NetStatusEvent.NET_STATUS, _statusHandler);
var nsClient:Object = new Object;
nsClient.onMetaData = _clientMetaData;
nst.client = nsClient;
vdo = new Video;
vdo.attachNetStream(nst);
addChild(vdo);
vdo.visible = false;
nst.play(url);
nst = new NetStream(conn);
nst.addEventListener(NetStatusEvent.NET_STATUS, _statusHandler);
var nsClient:Object = new Object;
nsClient.onMetaData = _clientMetaData;
nst.client = nsClient;
vdo = new Video;
vdo.attachNetStream(nst);
addChild(vdo);
vdo.visible = false;
nst.play(url);
}
private function _statusHandler($ev:NetStatusEvent):void
{
trace("Status Time = "+getTimer());
if(vdo.videoWidth !=0 && totalTime>0)
{
trace("Video is Activated!!");
vdo.width = vdo.videoWdith;
vdo.height = vdo.videoHeight;
vdo.visible = true;
}
}
private function _clientMetaData($ev:Object):void
{
trace("TotalTime = "+getTimer());
totalTime = $ev.duration;
}
//output
Status Time = 76;
TotalTime = 409
_clientMetaData 핸들러가 트리거 되는 시간이 _statusHandler 를 트리거 하는 시간보다 늦습니다.
원래 NetStatusEvent 는 한번만 부르는게 아니고 여러번에 걸쳐 호출하기때문에 이럴 일은 적지만
만약 if(vdo.videoWidth != 0 && totalTime >0) 조건문안에 실행함수를 둘경우 여러번 실행되는 상황이 되어
isFirstStream 변수를 두어(if(firstStream && vdo.videoWidth !=0 && totalTime>0) ) 처음 한번만 실행되도록 했더니 video 가 안보이는 현상이 발생함. 이럴 경우 isFirstStream 변수를 따로 조건 문으로 걸어서 그안에 함수 실행하도록 한다.
if(vdo.videoWidth != 0 && totalTime >0)
{
vdo.width=vdo.videoWidth, vdo.height = vdo.videoHeight;
vdo.visible = true;
if(isFirstStream)
{
playPlayer();
isFirstStream=false;
}
}
만약
(if(firstStream && vdo.videoWidth !=0 && totalTime>0) )
비디오를 자동 플레이 시키지 않고 썸네일버튼 같은 것을 올려놓아 수동으로 플레이 하게 될경우
비디오 넓이와 visible 가 활성화 되지 않는 상황이 발생합니다.
// 추가
지금 확인하니 isFirstStream 변수를 따로 조건문을 걸어 거기에 함수를 놓아도 되지 않는다.
결국 onMetaData 에서 duration 을 값을 얻었을때 함수를 실행시키거나
vdo.VideoWidth 나 totalTime 과 관련없이 그냥 isFirstStream 조건만 걸어서 비디오를 활성화 시켜야 할듯하다.
//현재 해결 상황
switch($ev.info.code)
{
case "NetStream.Play.Start":
break;
case "NetStream.Buffer.Full":
_vdo.width = _vdo.videoWidth;
_vdo.height = _vdo.videoHeight;
if (_isFirstStream)
{
_screenHolder.addChild(_vdo);
setController();
_isFirstStream = false;
}
break;
}
private function _statusHandler($ev:NetStatusEvent):void
{
trace("Status Time = "+getTimer());
if(vdo.videoWidth !=0 && totalTime>0)
{
trace("Video is Activated!!");
vdo.width = vdo.videoWdith;
vdo.height = vdo.videoHeight;
vdo.visible = true;
}
}
private function _clientMetaData($ev:Object):void
{
trace("TotalTime = "+getTimer());
totalTime = $ev.duration;
}
//output
Status Time = 76;
TotalTime = 409
_clientMetaData 핸들러가 트리거 되는 시간이 _statusHandler 를 트리거 하는 시간보다 늦습니다.
원래 NetStatusEvent 는 한번만 부르는게 아니고 여러번에 걸쳐 호출하기때문에 이럴 일은 적지만
만약 if(vdo.videoWidth != 0 && totalTime >0) 조건문안에 실행함수를 둘경우 여러번 실행되는 상황이 되어
isFirstStream 변수를 두어(if(firstStream && vdo.videoWidth !=0 && totalTime>0) ) 처음 한번만 실행되도록 했더니 video 가 안보이는 현상이 발생함. 이럴 경우 isFirstStream 변수를 따로 조건 문으로 걸어서 그안에 함수 실행하도록 한다.
if(vdo.videoWidth != 0 && totalTime >0)
{
vdo.width=vdo.videoWidth, vdo.height = vdo.videoHeight;
vdo.visible = true;
if(isFirstStream)
{
playPlayer();
isFirstStream=false;
}
}
만약
(if(firstStream && vdo.videoWidth !=0 && totalTime>0) )
비디오를 자동 플레이 시키지 않고 썸네일버튼 같은 것을 올려놓아 수동으로 플레이 하게 될경우
비디오 넓이와 visible 가 활성화 되지 않는 상황이 발생합니다.
// 추가
지금 확인하니 isFirstStream 변수를 따로 조건문을 걸어 거기에 함수를 놓아도 되지 않는다.
결국 onMetaData 에서 duration 을 값을 얻었을때 함수를 실행시키거나
vdo.VideoWidth 나 totalTime 과 관련없이 그냥 isFirstStream 조건만 걸어서 비디오를 활성화 시켜야 할듯하다.
//현재 해결 상황
switch($ev.info.code)
{
case "NetStream.Play.Start":
break;
case "NetStream.Buffer.Full":
_vdo.width = _vdo.videoWidth;
_vdo.height = _vdo.videoHeight;
if (_isFirstStream)
{
_screenHolder.addChild(_vdo);
setController();
_isFirstStream = false;
}
break;
}
'코드 > ActionScript & MXML' 카테고리의 다른 글
Object["String"] (0) | 2011.05.06 |
---|---|
스케일폼 4.0에서 AS3.0 지원 (0) | 2011.04.02 |
렌더링 문답. (0) | 2010.10.31 |
FITC 2010 gskinner Quick Flash 플래시 컨텐츠 최적화 (0) | 2010.10.02 |
AS3.0 리스너 자동 제거하기. (0) | 2010.10.02 |