Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Самопальный проигрыватель (http://www.flasher.ru/forum/showthread.php?t=143795)

acherny 26.08.2010 01:45

Самопальный проигрыватель
 
Господа хорошие! Помогите старичку, уже хреновато соображаю:(, чтобы вглубь материй лезть. Хочу сделать видеопроигрыватель простой, как яйцо, для проигрывания рядом лежащих файлов типа f4v, flv . Компонент соответствующий уж больно тяжел, да ещё и скины за собой тянет, взял я примеры из CS5 FLash бросил прозрачный прямоугольник для экрана и 2 кнопки play и pause с одинаковыми координатами,
потом слепил код:

Код AS3:

var flag = true;
button2.visible = false;
 
var NC:NetConnection = new NetConnection();
NC.connect(null);
var NS:NetStream = new NetStream(NC);
NS.client = {};
var Vid:Video = new Video();
Vid.attachNetStream(NS);
addChild(Vid);
 
button1.addEventListener(MouseEvent.CLICK, MouseClickHandler1);
function MouseClickHandler1(event:MouseEvent):void
{        if(!flag)NS.togglePause() else{
                NS.play("file.f4v");
                flag = false;
        }
        button1.visible = false;
        button2.visible = true;
}
button2.addEventListener(MouseEvent.CLICK, MouseClickHandler2);
function MouseClickHandler2(event:MouseEvent):void
{        NS.togglePause();
        button1.visible = true;
        button2.visible = false;
        var flag = true;
}

Всё вроде заработало, и swf-ка получилась чуть больше 2 кило. Но для полного счастья не хватает возможности следить за прогрессом при проигрывании, ну хотя бы конец воспроизведения поймать и с ним помудрить. 2 дня промучился, а потом вспомнил, что есть у нас корифеи, для которых это семечки:)

kackbip 26.08.2010 09:24

Для отслеживания прогресса воспроизведения обращайтесь к NetStream#time
Конец же поймать не очень просто. События никакого на окончание проигрывания видео нету.

acherny 26.08.2010 11:30

Благодарю за ответ. Покопаюсь.

Добавлено через 35 минут
Да NetStream.time даёт текущее время. Но штатный компонент проигрывателя “знает” сразу вначале общее время. Откуда он его берёт?

Добавлено через 1 час 2 минуты
Не получается загнать текущее значение NetStream#time в Label, компилятор обругал все мои попытки...

acherny 13.09.2010 18:24

Почитал кое-что и вроде в первом приближении получил то, чо хотел (swf - 2.45 kb)
Код AS3:

 
var flag = true;
button2.visible = false;
 
var NC:NetConnection = new NetConnection();
NC.connect(null);
 
var NS:NetStream = new NetStream(NC);
NS.client = {};
 
var Vid:Video = new Video();
Vid.attachNetStream(NS);
addChild(Vid);
 
button1.addEventListener(MouseEvent.CLICK, MouseClickHandler1);
function MouseClickHandler1(event:MouseEvent):void
{
        if (! flag)
        {
                NS.togglePause();
        }
        else
        {
                NS.play("yourfile.f4v");
                flag = false;
        }
        button1.visible = false;
        button2.visible = true;
}
 
button2.addEventListener(MouseEvent.CLICK, MouseClickHandler2);
function MouseClickHandler2(event:MouseEvent):void
{
        NS.togglePause();
        button1.visible = true;
        button2.visible = false;
        var flag = true;
}
 
NS.addEventListener(NetStatusEvent.NET_STATUS, statusHandler);
function statusHandler(event:NetStatusEvent):void
{
        {
                switch (event.info.code)
                {
                        case "NetStream.Play.Stop" :
                                button1.visible = true;
                                button2.visible = false;
                                flag = true;
                                break;
                }
        }
};

Жду конструктивной критики...


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

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