Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Event при проигрывании Video до конца (с NetConnection) (http://www.flasher.ru/forum/showthread.php?t=141897)

Eric Gurt 07.07.2010 17:18

Event при проигрывании Video до конца (с NetConnection)
 
Цель такова - вызвать функцию completePlay при полном проигрывании видеоролика. Почему этого не происходит?:

Код AS3:

import fl.video.*;
 
stop();
 
var video:Video = new Video();
var nc:NetConnection = new NetConnection();
var ns:NetStream;
 
function startVideo():void
{
 
        addChild(video);
 
        nc.connect(null);
        ns = new NetStream(nc);
        ns.client = {onMetaData:ns_onMetaData, NetStatusEvent:ns_onPlayStatus};
 
 
        video.attachNetStream(ns);
        ns.play("intro.flv");
 
        video.addEventListener(VideoEvent.STOPPED_STATE_ENTERED, completePlay);
 
        video.smoothing = true;
 
        video.width=800;
        video.height=400;
}
startVideo();
 
function completePlay(evt:VideoEvent):void
{
        trace("1");
        gotoAndStop("menu");
 
}
function ns_onMetaData(event):void
{
        trace("2");
}
function ns_onPlayStatus(event):void
{
        trace("3");
}

При запуске видео проигрывается, вначале в Output выходит только:
Код:

2
После проигрывания черный экран (flv ролик заканчивается затуханием).

fljot 08.07.2010 13:38

Нет тут таких событий http://livedocs.adobe.com/flex/3/lan...l#eventSummary

Надо слушать NetStatusEvent у NetStream'а с кодом NetStream.Play.Stop. Только учтите по крайнер мере 2 нюанса:
1. это можно словить при перемотке
2. в конце проигрывания netStream.time может быть меньше duration из metadata

masterflash 08.07.2010 13:54

Код AS3:

NetStatusEvent.NET_STATUS


Eric Gurt 08.07.2010 13:56

Благодарю за совет. Перемотки быть не должно, так что дописал
Код AS3:

ns.addEventListener(NetStatusEvent.NET_STATUS, completePlay);

и
Код AS3:

function completePlay(evt):void
{
        if (evt.info.code=="NetStream.Play.Stop")
        {
                gotoAndStop("menu");
        }
 
}

Теперь все работает. Но не произойдет ли переход на другой кадр, если в этом случае где-то на середине проигрывания случится так что ролик остановится из-за того что вторая его часть не успела загрузиться?

fljot 08.07.2010 20:55

нет, при этом будет NetStatusEvent с инфо-кодом NetStream.Buffer.Empty

Eric Gurt 08.07.2010 22:41

Вопросов нет - спасибо еще раз :)

loover 15.07.2010 02:25

а как правильно реализовать автоповтор? вызывать play(movie.flv) опять? не будет ли в этом случае видео опять загружаться (извлекаться из кэша)?

можно ли проиграть видео задом-наперед?

грузится ли все видео в память? если да, то как ее можно очищать?


Часовой пояс GMT +4, время: 11:08.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.