PDA

Просмотр полной версии : onPlayStatus?


DarkLight
26.11.2006, 12:24
Вот такой вопрос. Как заставить работать onPlayStatus у NetStream?
Сделал, как хелп говорил, кастомного клиента. onMetaData работает. onPlayStatus - нет. Причем во Флеше 9 альфе onPlayStatus даже отсутствует в списке событий NetStream. Во флексе то же не работает. Что можно сделать?

etc
26.11.2006, 13:22
Такого события даже в восьмерке не было :)
В восьмерке есть onStatus, в девятке событие NetStatusEvent.NET_STATUS, соответственно подписка:
my_ns.addEventListener(NetStatusEvent.NET_STATUS,netStatusHandler);

DarkLight
26.11.2006, 13:43
onPlayStatus

Dispatched when a NetStream object has completely played a stream. This handler returns information objects that provide information in addition to what's returned by the netStatus event. You can use this handler to trigger actions in your code when a NetStream object has switched from one stream to another stream in a playlist (as indicated by the information object NetStream.Play.Switch) or when a NetStream object has played to the end (as indicated by the information object NetStream.Play.Complete). To respond to this event, you must create a function to process the information object sent by the server.
(http://livedocs.macromedia.com/flex/2/langref/flash/net/NetStream.html#event:onPlayStatus)
А это тогда к чему??

PS Что восьмерке этого нет, я знаю:)

etc
26.11.2006, 14:00
This event is intended primarily for use with a server, such as Flash Media Server; for more information, see the class description. It is not part of the Flash Player API, but is included in this language reference for your convenience. You cannot use the addEventListener() method, or any other EventDispatcher methods, to listen for or process this event. Rather, you must define a single callback function and attach it directly to one of the following objects: …
Дочитать надо :)

DarkLight
26.11.2006, 14:02
Дочитал, но:
onMetaData event


Dispatched when Flash Player receives descriptive information embedded in the FLV file being played.

This special event is primarily intended for use with a server, such as Flash Media Server;...

А работает и без сервера


You cannot use the addEventListener() method, or any other EventDispatcher methods, to listen for or process this event
Я же написал, что подвесил кастомного клиента как хелп пишет

AL.exe
14.08.2008, 02:24
Так и не работает... так и не понятно, как узнать, закончился ли играть видеофайл, или нет :(

Есть какие-либо человеческие варианты решения вопроса? Сравнения duration не предлагать :)

Update:
Тьфу... туплю. Разобрался, извиняюсь.


//stream - объект NetStream, а не NetConnection - некоторые почему-то именно к NetConnection прицепить пытаются %)
stream.addEventListener(NetStatusEvent.NET_STATUS, netStatusHandler);

function netStatusHandler(event:NetStatusEvent) {
trace(event.info.code)
}

Но пусть будет для истории, а то вот многие американские ребята так и не разобрались, как с этим ивентом работать... многие так и сравнвиают duration :)

kackbip
07.09.2008, 13:34
И какое значение event.info.code будет означать, что flv полностью проигрался?

Я считаю, что отловить окончание flv можно так:

event.info.code == "NetStream.Buffer.Empty" && (stream.bytesTotal == stream.bytesLoaded)

AL.exe
08.09.2008, 01:47
И какое значение event.info.code будет означать, что flv полностью проигрался?

function netStatusHandler(event:NetStatusEvent):void {

switch(event.info.code){

case "NetStream.Play.Stop": //проигрывание файла завершено
//делаем что-то...
break;

}

}

kackbip
08.09.2008, 07:23
Нужно уточнить.

"NetStream.Play.Stop" не только в конце может всплывать, а например, когда нажимаешь на стоп :) Или, когда ролик подгружаться не успевает.

tikhop
08.09.2008, 20:28
так как же отловить окончание проигрывания фильма?

NetStream.Play.Stop

не отлавливает окончания проигрывания влего файла, у меня это событие всплывает сразу как запускаю проигрывание фильма

AL.exe
09.09.2008, 00:55
"NetStream.Play.Stop" не только в конце может всплывать, а например, когда нажимаешь на стоп :)

Неправда :) Хотя, смотря что вы называете "стопом". Метод pause() не влияет на выстреливание этого ивента.

Или, когда ролик подгружаться не успевает.

Кстати, возможно. Но вряд ли, потому что для этого был отдельный статус. Сейчас нет возможности проверить.

cauchy
05.10.2009, 23:26
Мда... Полчаса промучался с этим onPlayStatus... Искал решение на иностранных сайтах, а сюда и забыл заглянуть. Спасибо за решение =) Странно, что эдоб до сих пор не исправил этот глюк.