PDA

Просмотр полной версии : как отследить конец видео


Bankomat
28.02.2013, 11:55
хочу по завершению видео, срабатывало действие какоето

в моем случаи видео запускается\управляется таким кодом
stop();

var firstPress = true;
var nc:NetConnection = new NetConnection();
nc.connect(null);
var nStream:NetStream = new NetStream(nc);
_root.Bplay.videoObj.attachVideo(nStream);
var snd:Sound = new Sound();
this.createEmptyMovieClip("snd_mc", getNextHighestDepth());
_root.Bplay.videoObj.snd_mc.attachAudio(nStream);
nStream.setBufferTime(3);
ControlPanelVisible();
preloader._visible = false;

_root.Bplay.mc._play.onPress = pressPlay;
_root.Bplay.mc._pause.onPress = pressPause;
_root.Bplay.mc._sound_on.onPress = pressSoundOn;
_root.Bplay.mc._sound_off.onPress = pressSoundOff;
_root.Bplay.mc_link.onRelease = linkUrl;
this.onEnterFrame = enterFrame;
nStream.onStatus = statusVideo;
snd.setVolume(0);
function statusVideo(status:Object){

if( status.code == "NetStream.Play.Stop" )
nStream.stop(_root.video1);




}

function enterFrame(){

if ( nStream.bytesLoaded > 0 ){
preloader._visible = false;
this.onEnterFrame = null;

}

}
function linkUrl(){

getURL(_root.link1, "_blank");

}

pressPlay();

function pressPlay(){

if (firstPress){
preloader._visible = true;
nStream.play(_root.video1);
firstPress = false;


}
nStream.pause(false);
mc._play._visible = false;
mc._pause._visible = true;
_root.logo.play();

}
function pressPause(){

nStream.pause(true);
mc._pause._visible = false;
mc._play._visible = true;
_root.logo.stop();

}
function pressSoundOn(){

snd.setVolume(100);
mc._sound_on._visible = false;
mc._sound_off._visible = true;

}
function pressSoundOff(){

snd.setVolume(0);
mc._sound_off._visible = false;
mc._sound_on._visible = true;

}
function ControlPanelVisible(){

mc._play._visible = true;
mc._pause._visible = false;
mc._sound_on._visible = true;
mc._sound_off._visible = false;

}


хочу что бы запускалось действие например _root.Bplay.fon.play();

ставлю это действие сюда

if( status.code == "NetStream.Play.Stop" )
nStream.stop(_root.video1);
_root.Bplay.fon.play();

но оно почему то включается сразу...

mooncar
28.02.2013, 12:41
Для начала вспомните про скобки у оператора if:
if( status.code == "NetStream.Play.Stop" )
{
nStream.stop(_root.video1);
}

Без этого при любом событии будет срабатывать.

dark256
28.02.2013, 12:45
Попробуйте скомбинировать проверку с

NetStream.Buffer.Flush
status
Data has finished streaming, and the remaining buffer will be emptied.


Соотв. как-то так, чтоли:


var itStop = false
if ( status.code == "NetStream.Play.Stop") itStop = true
if ( status.code == "NetStream.Buffer.Flush" && itStop ) поехали

Hauts
28.02.2013, 12:47
Берете значение времени из метаданных видео и в onEnterFrame сравниваете с текущим значением времени не забывая об округлении, например, до десятых.

Или сравнивайте предыдущее значение времени воспроизведения видео и текущее. Если они некоторое время равны — значит видео остановилось. Но это имеет смысл только после полной загрузки видео и не когда видео стоит на паузе, конечно.

Bankomat
28.02.2013, 13:07
Для начала вспомните про скобки у оператора if:
if( status.code == "NetStream.Play.Stop" )
{
nStream.stop(_root.video1);
}

Без этого при любом событии будет срабатывать.

спасибо) помогли