Модераторы: SoWa

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Тема: Разработка достойного флэш-плеера, Создание хорошего видеофлеш-плеера 
:(
    Опции темы
numerovan
Дата 11.10.2009, 03:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 549
Регистрация: 1.12.2007

Репутация: нет
Всего: 2



Здравствуйте всем кто читает эту статью.
ХОЧУ НАЧАТЬ ТЕМУ, НЕ ПРОСТО ТЕМУ , А ЧТОБ ДЕЙСТВИТЕЛЬНО БЫЛА ПОЛЕЗНАЯ ИНФОРМАЦИЯ ... НЕ ТАК ЧТОБ ПО ЧУТЬ - ЧУТЬ ВЕЗДЕ ИСКАТЬ, А ЧТОБ БЫЛО В ОДНОМ МЕСТЕ И ГЛАВНОЕ ПОЛЕЗНАЯ ИНФА.

ТЕМА: РАЗРАБОТКА ХОРОШЕГО ФЛЭШ-ПЛЕЕРА (ВИДЕО).

ТУТ ПОЯСНЮ ЧТО МНЕ УДАЛОСЬ СОЗДАТЬ ПРОЧИТАВ ОДНУ КНИГУ. ВОТ ИСХОДНИКИ И ПОЯСНЕНИЕ.
Код


// Функция, выполняющая пропорциональное масштабирование видеообъекта videoObj, так чтобы он помещался в пределах экрана, ширина и высота которого задается параметрами screenW и screenH соответственно. 
//Функция центрирует видеообъект относительно экрана. Размеры экрана - это размеры видеообъекта, заданные в рабочей среде. 
//Размеры видео - это исходные размеры FLV-файла.
function matchScreen(screenW:Number, screenH:Number, videoObj){
        // Находим процентное выражение размеров области экрана от размеров видео.
        var ratioW = screenW / videoObj.width * 100;
        var ratioH = screenH / videoObj.height * 100;
        var vAspectRatio = videoObj.width / videoObj.height;
        // Если и ширина и высота видео больше или меньше ширины и высоты экрана
        if ((ratioW < 100 && ratioH < 100) || (ratioW > 100 && ratioH > 100)) {
            // Если отношение ширин меньше отношения высот, подгоняем размер видео по ширине
            if (Math.min(ratioW, ratioH) == ratioW) {
                videoObj._width = screenW;
                videoObj._height = videoObj._width / vAspectRatio;
            }
            //  Если отношение ширин больше отношения высот, подгоняем размер видео по высоте
            else {
                videoObj._height = screenH;
                videoObj._width = videoObj._height * vAspectRatio;
            }
            
        }
        // Если видео уже и выше экрана, подгоняем по высоте
        else if (ratioW >= 100 && ratioH <= 100) {
            videoObj._height = screenH;
            videoObj._width = videoObj._height * vAspectRatio;
        }
        // Если видео шире и ниже экрана, подгоняем по ширине
        else if (ratioW < 100 && ratioH > 100) {
            videoObj._width = screenW;
            videoObj._height = videoObj._width / vAspectRatio;
        }
        // Центрируем видео относительно экрана
        videoObj._x += (screenW - videoObj._width)/2;
        videoObj._y += (screenH - videoObj._height)/2;
}
var nc:NetConnection = new NetConnection();
nc.connect(null);
var nStream:NetStream = new NetStream(nc);
nStream.setBufferTime(5); <--- тут так, 5 секунд загружается в буфер и после начинается показвается воспроизведение
videoObj.attachVideo(nStream);
var url:String = "movie_1.flv"; // <--- вот тут вот видео которое будет проигрываться
var vTotalTime:Number = 58;
pause_bat._visible = false;
videoObj._visible = false;
play_bar._width = 0;
load_bar._width = 0;
slider.enabled = false;

function checkLoadStatus() {
    var loaded = nStream.bytesLoaded;
    var total = nStream.bytesTotal;
    
    var streamStatus = Math.round(loaded / total * 100);
    if(!streamStatus) streamStatus = 0;
    download_txt.text = "DOWNLOAD " + streamStatus + " %"; <--- тут показывается скачка всего фильма в процентах
    load_bar._xscale = Math.round((500 * streamStatus) /100);
    //trace(load_bar._xscale);
    if (streamStatus >= 100) {
        clearInterval(loadInt);
    }
}
function checkTimeStatus() {
    var curPosition:Number = nStream.time;
    slider._x = nStream.time * promezh._width / vTotalTime + promezh._x;
    play_bar._width = slider._x - promezh._x;
    var minutes = Math.floor(curPosition / 60);
    var seconds = Math.floor(curPosition % 60);
    if (seconds < 10) {
        seconds = "0" + seconds;
    }
    if (minutes < 10) {
        minutes = "0" + minutes;
    }
    time_txt.text = "| TIME " + minutes + ":" + seconds; <----- насколько помню , тут показыватеся время фильма
    // Если режим зацикливания включен, при достижении конца видео переходим в начало. Переменная loop - это флаг, значение которого устанавливается при нажатии на кнопку loopBut
    if (nStream.time >= vTotalTime) {
        //nStream.seek(0);
        nStream.close(); // Прекращаем загрузку, удаляем локальную копию файла
        videoObj.clear(); // Очищаем область видеообъекта
        // Устаналвиваем полосу загрузки в исходное состояние
        load_bar._width = 0; 
        
        // Отключаем возможность перемещения ползунка поиска
        slider.enabled = false;
        // Прячем кнопку паузы и делаем видимой кнопку воспроизведения, посокольку вначале воспроизведение остановлено
        play_but._visible = true;
        pause_but._visible = false;
        // Прекращаем периодический вызов функций checkTimeStatus() и checkBufferStatus()
        clearInterval(timeInt);
        clearInterval(bufferInt);
        // Вызываем checkTimeStatus() и checkBufferStatus() в последний раз, чтобы установить бегунок и полосу состояния буфера в нулевое положение 
        checkTimeStatus();
        // Переключаем флаг, чтобы при следующей загрузке снова выполнить масштабирование и остановить воспроизведение в начале.  
        played = false;
    }
}
time_txt.text = "| TIME 00:00"; <---- тут показывается просто при открытии плеера
download_txt.text = "DOWNLOAD 0 %"; <--- тут тоже показывается при открытии плеера
nStream.onStatus = function(infoObject:Object) {
    switch (infoObject.code) {
    case 'NetStream.Buffer.Full' :
        if (!played) {
            //nStream.pause(); // Останавливаем воспроизведение 
            nStream.seek(0); // Переходим в начало
            slider.enabled = true; // Включаем возможность поиска
            videoObj._visible = true; // Включаем отображение видеообъекта 
            // Пропорционально масштабируем и центрируем видеообъект 
            matchScreen(videoObj._width, videoObj._height, videoObj);
            played = true; // Переключаем флаг, чтобы все предыдущие действия выполнились только после первого заполнения буфера. Переменная played принимает значение true только полсе того как буфер был заполнен в первый раз и сохраняет это значение до удаления FLV с помощью метода close() 
        }
        break;
    }
};

////// тут ползунок который перемещается по временному промежутку .... говоря простым языком  ПО ПОЛОСКЕ ШАРИК передвивается
slider.onPress = function() {
    // При нажатии на бегунок, прекращаем периодический вызов функции checkTimeStatus, позиционирующей его в соответствии с текущей позицией воспроизведения
    clearInterval(timeInt);
    this.startDrag(false, promezh._x, promezh._y-10, promezh._x + promezh._width, promezh._y-10);
    this.onMouseMove = function() {
        // Включаем отображение видеообъекта. Это нужно сделать на тот случай, если пользователь начнет выполнять ручную прокрутку до первого заполнения буфера
        videoObj._visible = true;
        // Установка позиции воспроизведения в соответствии с положением бегунка
        nStream.seek(Math.floor(vTotalTime / promezh._width * (slider._x - promezh._x)));
        //time_txt.text = Math.floor(nStream.time);
        
        var curPosition:Number = nStream.time;
        var minutes = Math.floor(curPosition / 60);
        var seconds = Math.floor(curPosition % 60);
        if (seconds < 10) {
            seconds = "0" + seconds;
        }
        if (minutes < 10) {
            minutes = "0" + minutes;
        }
        time_txt.text = "| TIME " + minutes + ":" + seconds;
        updateAfterEvent();
    };
};

//// ПОЛЗУНОК НА ОТЖАТИЕ ...
slider.onRelease = function() {
    this.stopDrag();
    //Вновь инициируем периодический вызов функции checkTimeStatus, для того чтобы положение бегунка соответствовало текущей позиции воспроизведения.
    if(pause_but._visible){
        timeInt = setInterval(checkTimeStatus, 100);
    }
    else{
        checkTimeStatus();
    }
    delete this.onMouseMove;
};
slider.onReleaseOutside = slider.onRelease;
play_but.onRelease = function() {
    if(!played){ //Только в том случае, если он уже не загружается
        nStream.play(url);
        // Инициируем периодическое обновление состояния полосы загрузки и полосы буфера. Поскольку в начале воспроизведение остановлено, бегунок текущей позиции остается на месте
        loadInt = setInterval(checkLoadStatus, 300);
    }
    if(played){// Запуск может быть выполнен только после первого заполнения буффера
        nStream.pause();
    }
    this._visible = false;
    pause_but._visible = true;
    timeInt = setInterval(checkTimeStatus, 100);
};

///// КНОПКА ПАУЗА
pause_but.onRelease = function() {
    nStream.pause();
    this._visible = false;
    play_but._visible = true;
    // Прекращаем вызов функции checkTimeStatus(), когда воспроизведение остановлено
    clearInterval(timeInt);
};

////// КНОПКА ПЕРЕМОТКИ ВПЕРЁД , ПЕРЕМАТЫВАЕТ НА 5 СЕК ВПЕРЁД
vpered_but.onRelease = function() {
    nStream.seek(nStream.time + 5);
};

////// КНОПКА ПЕРЕМОТКИ НАЗАД , ПЕРЕМАТЫВАЕТ НА 5 СЕК НАЗАД
nazad_but.onRelease = function() {
    if (nStream.time >= 5) {
            nStream.seek(nStream.time - 5);
    }
    else {
        nStream.seek(0);
    }
};

/////// КНОПКА СТОП
stop_but.onRelease = function() {
    nStream.close(); // Прекращаем загрузку, удаляем локальную копию файла
    videoObj.clear(); // Очищаем область видеообъекта
    // Устаналвиваем полосу загрузки в исходное состояние
    load_bar._width = 0; 
    // Отключаем возможность перемещения ползунка поиска
    slider.enabled = false;
    // Прячем кнопку паузы и делаем видимой кнопку воспроизведения, посокольку вначале воспроизведение остановлено
    play_but._visible = true;
    pause_but._visible = false;
    // Прекращаем периодический вызов функций checkTimeStatus() и checkBufferStatus()
    clearInterval(timeInt);
    clearInterval(bufferInt);
    // Вызываем checkTimeStatus() и checkBufferStatus() в последний раз, чтобы установить бегунок и полосу состояния буфера в нулевое положение 
    checkTimeStatus();
    // Переключаем флаг, чтобы при следующей загрузке снова выполнить масштабирование и остановить воспроизведение в начале.  
    played = false;
};
this.createEmptyMovieClip("soundmc", this.getNextHighestDepth());
var snd:Sound = new Sound("soundmc");
soundmc.attachAudio(nStream);

///// ТУТ ПОЛЗУНОК ДЛЯ РЕГУЛИРОВКИ ЗВУКА
vol_but.onPress = function() {
    this.startDrag(false, vol_bar._x, vol_bar._y+7, vol_bar._x + vol_bar._width-6, vol_bar._y+7);
    this.onMouseMove = function() {
        snd.setVolume(Math.round(100 / vol_bar._width * (this._x - vol_bar._x)));
    };
};
////// ТУТ ТОЖЕ ЭТОТ ПОЛЗУНОК ДЛЯ РЕГУЛИРОВКИ ЗВУКА
vol_but.onMouseUp = function() {
    this.stopDrag();
    delete this.onMouseMove;
};

////// ТУТ ПЫТАЛСЯ РАЗОБРАТЬСЯ С МАСШТАБОМ НА ПЛЕЕРЕ ВРОДЕ ПОЛУЧАТЕСЯ , А В НТМЛ НЕТ
scale_up.onPress = function() {
    Stage.scaleMode = 'Scale';
    this._visible = false;
    scale_down._visible = true;
};

///// ТОЖЕ КНОПКА МАСШТАБА , ТОЛЬКО ПЕРЕХОД В ОБЫЧНОЕ СОСТОЯНИЕ
scale_down.onPress = function() {
    Stage.scaleMode = 'noScale';
    this._visible = false;
    scale_up._visible = true;
};


Что не нравится мне в этом плеере :
1. Для каждого видео нужно создавать оттельно проигрыватель . т.е. есть допустим 1.flv и под него получается , допустим, p_1.swf. Если нужно 10 видео , то нужно в ручную менять в коде название фильма и создавать ещё 10 плееров.
2. При открытии проигрывателя нету первого кадра фильма или заменяемой картинки для этого.
3. При нажатии на временую шкалу (полоску), а не на КРУГЛИШОК что перемещается по шкале, не происходит перемотки фильма на нужную позицию

ПОДСКАЖИТЕ ПОЖАЛУЙСТА КАК РЕШИТЬ ЭТИ ПРОБЛЕМЫ ? СПАСИБО.

НАДЕЮСЬ ЭТА ТЕМА БУДЕТ ПОЛЕЗНОЙ.
PM MAIL   Вверх
SoWa
Дата 11.10.2009, 09:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Харекришна
****


Профиль
Группа: Комодератор
Сообщений: 2422
Регистрация: 18.10.2004

Репутация: 1
Всего: 74



Цитата(numerovan @  11.10.2009,  03:18 Найти цитируемый пост)
1. Для каждого видео нужно создавать оттельно проигрыватель . т.е. есть допустим 1.flv и под него получается , допустим, p_1.swf. Если нужно 10 видео , то нужно в ручную менять в коде название фильма и создавать ещё 10 плееров.


Цитата(numerovan @  11.10.2009,  03:18 Найти цитируемый пост)
var url:String = "movie_1.flv"; // <--- вот тут вот видео которое будет проигрываться


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

Я пока не курил мануальчик, но чувствую проблемма актуальна, и с ней нужно разобраться- как передать данные во флеш-программу. Посмотри, мб будет полезным. И я пока тоже его изучу:
http://www.echoecho.com/flashjavascript.htm


--------------------
Всем добра smile
PM MAIL ICQ   Вверх
bars80080
Дата 11.10.2009, 12:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 1
Всего: 315



ё-моё, это ж решено в куче плееров. передача параметров в ролик:

Код

<param name="flashvars" value="movie=1.flv" />


устанавливается из html, а значит можно динамически формировать серверным языком

var url:String = movie;
PM MAIL WWW   Вверх
numerovan
Дата 11.10.2009, 18:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 549
Регистрация: 1.12.2007

Репутация: нет
Всего: 2



Барс как всегда прав ... Барс , спасибо за помощь.

Напишу что я изменил , чтобы заработало:
1. В html добавил <param name="flashvars" value="movie=movie_2.flv&sec=58">
2. Добавил <embed src="player.swf" flashvars="movie=movie_2.flv&sec=58" и т.д.
3. В ActionScript поменял поменял строчки
Код

var url:String = movie; // не корорые советуют делать вот так _root.movie
var vTotalTime:Number = sec; // не корорые советуют делать вот так _root.movie . Этот параметр говорит о том сколько секунд длится ролик.


Продолжаем далее ... 

СКАЖИТЕ ПОЖАЛУЙСТА КАК СДЕЛАТЬ ЧТОБ ПРИ НАЖАТИИ НА КНОПКУ В ПЛЕЕРЕ ПРОИСХОДИЛО СЛЕДУЮЩЕЕ : НАЖАЛ И ПРОИГРЫВАТЕЛЬ РАСТЯНУЛСЯ НА ВЕСЬ ЭКРАН МОНИТОРА ... КАК ЭТО РЕАЛИЗОВАТЬ ?

Это сообщение отредактировал(а) numerovan - 11.10.2009, 18:28
PM MAIL   Вверх
SoWa
Дата 11.10.2009, 18:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Харекришна
****


Профиль
Группа: Комодератор
Сообщений: 2422
Регистрация: 18.10.2004

Репутация: 1
Всего: 74



width & height установить 100%


--------------------
Всем добра smile
PM MAIL ICQ   Вверх
numerovan
Дата 11.10.2009, 21:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 549
Регистрация: 1.12.2007

Репутация: нет
Всего: 2



Всё мужики разобрался ...

И так ... Вопрос по поводу полноэкранного режима ЕСТЬ.

Напишу что я изменил:
1. добавить вот эти строчки
Код

<param name="allowScriptAccess" value="sameDomain" />
<param name="allowFullScreen" value="true" />
...
<embed src="player.swf" allowFullScreen="true" allowScriptAccess="sameDomain" и т.д.

2. Изменить в экшин скрипт действие кнопок масштабирования
Код

scale_up.onPress = function() {
    //stage.displayState = StageDisplayState.FULL_SCREEN; //<-- AS 3
    Stage["displayState"] = "fullScreen"; //<--- Action Script 2
    this._visible = false;
    scale_down._visible = true;
};
scale_down.onPress = function() {
    //stage.displayState = StageDisplayState.NORMAL; //<-- AS 3
    Stage["displayState"] = "normal"; //<--- Action Script 2
    this._visible = false;
    scale_up._visible = true;
};


Кстати хотел предупредить ... весь этот акшен скрипт он написан на версии 2
Весь этот код работает на всех браузерах (Опера, ИЕ, ФФ) , но чуток глючит на Сафари - кнопки не работают когда полномасштабный режим.


ПОЕХАЛИ ДАЛЬШЕ ...

КАК СДЕЛАТЬ ТАКОЕ : КОГДА ФИЛЬМ ГРУЗИТСЯ ТОГДА ПОКАЗЫВАЕТСЯ НА ПЛЕЕРЕ ЧТО ГРУЗИТЬСЯ ИНФА .. НУ ТИПО КРУГЛИШКИ БЕГАЮТ ИЛИ ЧАСИКИ КАКИЕ НИБУДЬ ... ПРОЦЕСС ОЖИДАНИЯ ...

ПОДСКАЖИТЕ КТО НИБУДЬ КАК ЭТО СДЕЛАТЬ ?


Модератор: Пожалуйста, один топик - один вопрос.


Это сообщение отредактировал(а) SoWa - 21.10.2009, 07:29
PM MAIL   Вверх
numerovan
Дата 20.10.2009, 21:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 549
Регистрация: 1.12.2007

Репутация: нет
Всего: 2



Нужно помоему разбираться в открытых кодах флэш плееров ... 
PM MAIL   Вверх
SoWa
Дата 21.10.2009, 07:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Харекришна
****


Профиль
Группа: Комодератор
Сообщений: 2422
Регистрация: 18.10.2004

Репутация: 1
Всего: 74



Такая штука называется прелоадер. В инете есть мануалы даже на русском.


--------------------
Всем добра smile
PM MAIL ICQ   Вверх
numerovan
Дата 27.10.2009, 00:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 549
Регистрация: 1.12.2007

Репутация: нет
Всего: 2



НАДЕЮСЬ Я ЭТОТ ПЛЕЕР "ДОБЬЮ" 
PM MAIL   Вверх
numerovan
Дата 3.11.2009, 09:05 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 549
Регистрация: 1.12.2007

Репутация: нет
Всего: 2



ВСЁ СДЕЛАЛ ЭТОТ ПЛЕЕР !
ДЛЯ КОГО ИНТЕРЕСЕН ИСХОДНИК , ТО МОЖЕТЕ ПОСМОТРЕТЬ ЕГО ТУТ.
ХОТЕЛОСЬ БЫ УСЛЫШАТЬ КРИТИКИ .
Код

// и так поехали ....
// функция virav_el() выравнивает все находящиеся внутри (символы, короче всё). 
function virav_el(){
    _root._width = 600; _root._height = 358;
    
    h._x = 0; h._y = _root._height - h.height;
    
    ramka._x = 0;
    ramka._y = 0;
    ramka._width = _root._width;
    ramka._height = _root._height;
    
    h.btn_panel._height = 60;                                h.btn_panel._width = 600;
    h.btn_panel._x = 0;                                    h.btn_panel._y = 0;
    
    myY = h.btn_panel._y; ///// -----> это расположение символов панели упр-я по оси Y
    
    total_use_width = h.btn_play_hide._width      +
                      h.btn_line_fon_video._width + 
                      h.btn_dinamic_hide._width   +
                      h.btn_line_fone_snd._width  + 
                      h.btn_cube_hide._width      +
                      h.btn_cube_rot_hide._width    ;
    
    empty_space = h.btn_panel._width - Math.round(total_use_width);
    split = Math.round(empty_space/7); ////////---------> split - это расстояние МЕЖДУ сиволами на панели управления

    marginLeft = 0; ///--------> marginLeft - отступ от левой границы холста, поставил на всякий случай , чтоб можно было контралировать.
    
    h.btn_play._x      = marginLeft + split + 2;                h.btn_play._y = myY;
    h.btn_play_hide._x = marginLeft + split;                    h.btn_play_hide._y = myY; 
    
    h.btn_pause._x     = marginLeft + split + 3;                h.btn_pause._y = myY;
     
    h.btn_line_fon_video._x = h.btn_play_hide._x + h.btn_play_hide._width + split;        
    h.btn_line_fon_video._y = myY;
    
    h.btn_line_play._x  = h.btn_line_fon_video._x; 
    h.btn_line_play._width = h.btn_slider_for_play._width;        h.btn_line_play._y = myY;
    
    h.btn_slider_for_play._x = h.btn_line_fon_video._x;        h.btn_slider_for_play._y = myY;
    
    h.btn_dinamic_hide._x   = h.btn_line_fon_video._x + h.btn_line_fon_video._width + split;    
                                                                h.btn_dinamic_hide._y = myY;
    h.btn_dinamic._x        = h.btn_dinamic_hide._x;            h.btn_dinamic._y = myY;
    h.btn_dinamic_work_1._x = h.btn_dinamic._x + h.btn_dinamic._width + 3 + 1;    
                                                                h.btn_dinamic_work_1._y = myY;
    h.btn_dinamic_work_2._x = h.btn_dinamic._x + h.btn_dinamic._width + 3 + 2.7;    
                                                                h.btn_dinamic_work_2._y = myY;
    h.btn_dinamic_work_3._x = h.btn_dinamic._x + h.btn_dinamic._width +3 + 4.6;
                                                                h.btn_dinamic_work_3._y = myY;
    
    h.btn_line_fone_snd._x = h.btn_dinamic_hide._x + h.btn_dinamic_hide._width + split;    
                                                                h.btn_line_fone_snd._y = myY;
    h.btn_line_snd._x = h.btn_line_fone_snd._x;                h.btn_line_snd._y = myY;
    h.btn_slider_for_snd._x = h.btn_line_fone_snd._x;            h.btn_slider_for_snd._y = myY;
    
    h.btn_cube_rot_ramka._x = h.btn_line_fone_snd._x + h.btn_line_fone_snd._width + split;    
                                                                h.btn_cube_rot_ramka._y = myY;
    h.btn_cube_rot_hide._x  = h.btn_cube_rot_ramka._x;            h.btn_cube_rot_hide._y = myY;
    h.btn_cube_rot_circle._x= h.btn_cube_rot_ramka._x + h.btn_cube_rot_ramka._width/2; 
                                                                h.btn_cube_rot_circle._y = myY;
    
    h.btn_cube_hide._x  = h.btn_cube_rot_hide._x + h.btn_cube_rot_hide._width + split;    
                                                                h.btn_cube_hide._y = myY;
    h.btn_cube_over._x = h.btn_cube_hide._x + 10;                h.btn_cube_over._y = myY;
    h.btn_cube_ramka._x= h.btn_cube_hide._x;                    h.btn_cube_ramka._y = myY;
    
    h.btn_text_change._x = 300;                                h.btn_text_change._y = myY - 25;
    h.btn_text_total._x = 355;                                    h.btn_text_total._y = myY- 25;
    
    preloader._alpha = 50; 
    preloader._yscale = 70;        preloader._x =430;
    preloader._xscale = 70;            preloader._y = 180;
}
// all_el_panel() - функция которая запускается setInterval-ом для того чтобы спрятать панель или показать.
function all_el_panel(value_y){
    h._y = value_y;
    updateAfterEvent();
}
// converTime(t) - функция для корректного отображения времяни
function converTime(t){
    str = "00:00";
    if(t>0 && t < 3600){
        var m = Math.floor(t / 60);
        var s = Math.floor(t % 60);
        if (s < 10) s = "0" + s;
        if (m < 10) m = "0" + m;
        str = m + ":" + s;
    }
    if(t>0 && t >= 3600){
        var h = Math.floor((t / 60)/60);
        var m = Math.floor(t / 60);
        var s = Math.floor(t % 60);
        if (h < 10) h = "0" + h;
        if (m < 10) m = "0" + m;
        if (s < 10) s = "0" + s;
        str = h + ":" + m + ":" + s;
    }
    return str;
}
// corectProporc(o,p) - функция не неиспользуется в сценарии , она выдаёт пропорции символа, т.е. corectProporc(obj,80) вернёт 80% от объекта
function corectProporc(o,p){
    if(p>=o) return o += (-1)*(o*((100-p)/100));
    else if(p>0 && p<100) return o = o - o*(p/100);
    else return 0;
}
// mySize() - изменяет масштабность видео-объекта и центрирует его по центру холста, тут соблюдены и повороты видео. Координаты хранятся в глобальных переменных W_rotate, H_normal и т.д.
function mySize(w, h, v){
    k1 = -300;    k2 = -179; // эти две переменные нужны для центрирования видео-объекта
    function roteter(){
        myP = h/v._width;
        W_rotate = h;
        H_rotate = v._height * myP;
        Y_rotate = k2;
        X_rotate = (w-H_rotate)/2 + k1;
    }
    if(v.height>=v.width){
        p = (h*100)/v.height;
        v._height = h;
        v._width = v.width * (p/100);
        v._x = (w - v._width)/2 + k1;
        v._y = k2;
        H_normal = v._height;    W_normal = v._width;    X_normal = v._x;    Y_normal = v._y;
        //------------ rot ------------//
        roteter();
        if(H_rotate > w){
            W_rotate = W_rotate*(((w*100)/H_rotate)/100);
            H_rotate = w;
            Y_rotate = (h-W_rotate)/2 + k2;
            X_rotate = (w-H_rotate)/2 + k1;    
        }
    }else{    
        p = w/v.width;
        temp_h = v.height * p;
        temp_w = w;
        
        if( temp_h > h ){ 
            p = (h*100)/temp_h;
            v._height = h;
            v._width = temp_w*(p/100);
            v._x = (w - v._width)/2 + k1;
            v._y = k2;
            H_normal = v._height;    W_normal = v._width;    X_normal = v._x;    Y_normal = v._y;
            //------------ rot ------------//
            roteter();
        }else{    
            v._width = temp_w;
            v._height = temp_h;
            
            v._x = k1;
            v._y = (h-v._height)/2 + k2;
            H_normal = v._height;    W_normal = v._width;    X_normal = v._x;    Y_normal = v._y;
            //------------ rot ------------//
            roteter();
        }
    }
}
// fadeIn() - появление панели
function fadeIn(){
    if(i<=328){
        i=328;
        clearInterval(IdSetIntFadeIn);
        all_el_panel(i);
        return;
    }
    else all_el_panel(i);
    i--;
    updateAfterEvent();
}
// исчезновение панели с задержкой в 1 сек
function fadeOutMain(){
    function fadeOut(){
        if(i >= 388){
            i=388;
            clearInterval(IdSetIntFadeOut);
            all_el_panel(388);
            return;
        }
        else all_el_panel(i);
        i++;
        updateAfterEvent();
    }
    if(i==328)
        IdSetIntFadeOut = setInterval(fadeOut, 20);
}
// checkLoadStatus() -  проверяет статус загрузки, когда загрузился фильм полность, то она выключается.
function checkLoadStatus(){
    var loaded = nStream.bytesLoaded;
    var total = nStream.bytesTotal;
    var streamStatus = Math.round((loaded * 100)/total);
    
    if(!streamStatus) streamStatus = 0;
    
    h.btn_line_play._width = Math.round((streamStatus/100)*h.btn_line_fon_video._width);
    
    if(streamStatus >= 100) clearInterval(loadInt);

    if(!openOneBufferFull && nStream.bufferLength>0){
        mySize(btn_mask_video.videoObj._width, btn_mask_video.videoObj._height, btn_mask_video.videoObj);    
        openOneBufferFull = true;
    }    
}
// checkTimeStatus() - функция проверяет время и когда настаёт конец фильма, то возвращает в исходное положение все данные.
function checkTimeStatus(){
    var curPosition:Number = nStream.time;    
    p = (curPosition*100)/vTotalTime;
    s = ((h.btn_line_fon_video._width - h.btn_slider_for_play._width) * p)/100;    
    h.btn_slider_for_play._x = h.btn_line_fon_video._x + s;
    h.btn_text_change.text = converTime(curPosition);
    
           if( nStream.time >= vTotalTime ){
        //nStream.close(); // Прекращаем загрузку, удаляем локальную копию файла
        //h.btn_mask_video.videoObj.clear(); // Очищаем область видеообъекта
        //nStream.play(url);
        nStream.pause();
        nStream.seek(vTotalTime);
        h.btn_slider_for_play._x = h.btn_line_fon_video._x;
        h.btn_text_change.text = converTime(0);
        h.btn_play._visible = true;
        h.btn_pause._visible = false;
        clearInterval(timeInt);
        whenEndVideo();
    }
}


Это сообщение отредактировал(а) numerovan - 5.11.2009, 19:40
PM MAIL   Вверх
numerovan
Дата 3.11.2009, 09:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 549
Регистрация: 1.12.2007

Репутация: нет
Всего: 2



tyruytrutyryruruty

Это сообщение отредактировал(а) numerovan - 5.11.2009, 00:21
PM MAIL   Вверх
bars80080
Дата 3.11.2009, 10:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 1
Всего: 315



numerovan, 90 сообщений, а ты ещё не научился пользоваться кнопкой код. кому интересно разглядывать этот однотонный листинг?
PM MAIL WWW   Вверх
numerovan
Дата 4.11.2009, 08:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 549
Регистрация: 1.12.2007

Репутация: нет
Всего: 2



Барс ...ёклмн ... знаю про что ты говоришь ... я в начале так сделал , но сообщение было большим по объему, соотвественно и не отправлялось .... и ещё я зае под конец дня ... так что тупо брал и вставлял ...  не ужели так важно то что ты говоришь ? что то ты слишком придрался ... ну и пускай так будет ... тебе то что ? главно есть информация и т.д.

Добавлено через 4 минуты и 44 секунды
по мне лучше в него смотреть (однотонный листинг) , чем в маленьком текстареа проматывать.
PM MAIL   Вверх
bars80080
Дата 4.11.2009, 14:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 1
Всего: 315



ну, что значит "что"? у меня глаза разбегаются, без подсветки и не в моноширине невозможно за что-нибудь зацепиться. знаю по опыту, что многие также воспринимают, для того и сделана была кнопка.

разделил бы на пару кусков, а в текстареа проматывать не обязательно, это всё-таки спойлер, который можно открыть

в результате, ты избежал того, что тебе сейчас могли бы подсказать по тонким местам кода. но специально ломать глаза никто не будет.
вероятность того, что кто-то воспользуется, тоже снижается
PM MAIL WWW   Вверх
numerovan
Дата 5.11.2009, 00:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 549
Регистрация: 1.12.2007

Репутация: нет
Всего: 2



Код

// продолжение вышеупомянутого текста
// whenEndVideo() - эта функция нужна для того чтоб красиво закончить конец фильма и перейти на начало фильма. тут анимация.
function whenEndVideo(){
    j=50; k=0; endW=0; endH=0; endX=0; endY=0;
    function maxiScale(){
        if(!keyForRotate){
            btn_mask_video.videoObj._xscale+=4;
            btn_mask_video.videoObj._yscale+=4;
        }else{
            btn_mask_video.videoObj._xscale+=2;
            btn_mask_video.videoObj._yscale+=2;
        }
        
        btn_mask_video.videoObj._x = (_root._x - btn_mask_video.videoObj._width)/2;
        btn_mask_video.videoObj._y = (_root._y - btn_mask_video.videoObj._height)/2;
        j++;
        if( j >= 50 ){
            clearInterval(maxiSetScale);
            btn_mask_video.videoObj._width    = endW; 
            btn_mask_video.videoObj._height    = endH;
            btn_mask_video.videoObj._x        = endX;
            btn_mask_video.videoObj._y        = endY;
            
            h.btn_play_hide.enabled = true;
            h.btn_slider_for_play.enabled = true;
            h.btn_dinamic_hide.enabled = true;
            h.btn_slider_for_snd.enabled = true;
            h.btn_cube_rot_hide.enabled = true;
            h.btn_cube_hide.enabled = true;
            
            dop_paleyd = !dop_paleyd;
        }
        updateAfterEvent();
    }
    function maxiWidth(){
        if(!keyForRotate){
            btn_mask_video.videoObj._width+=8;
            btn_mask_video.videoObj._x = (_root._x - btn_mask_video.videoObj._width)/2;
        }else{
            btn_mask_video.videoObj._height+=4;
            btn_mask_video.videoObj._y = (_root._x - btn_mask_video.videoObj._height)/2;
        }
        
        if(k <= 0){
            clearInterval(maxiSetWidth);
            maxiSetScale = setInterval(maxiScale, 1);
        }
        k--;
        updateAfterEvent();
    }
    function miniWidth(){
        if(!keyForRotate){
            btn_mask_video.videoObj._width-=8;
            btn_mask_video.videoObj._x = (_root._x - btn_mask_video.videoObj._width)/2;
        }else{
            btn_mask_video.videoObj._height-=4;
            btn_mask_video.videoObj._y = (_root._x - btn_mask_video.videoObj._height)/2;
        }
        
        if(Math.round(btn_mask_video.videoObj._width) <= 8 || Math.round(btn_mask_video.videoObj._height) <= 4){
            if(!keyForRotate) btn_mask_video.videoObj._width = 0;
            else btn_mask_video.videoObj._height = 0;
            
            clearInterval(miniSetWidth);
            nStream.seek(0);
            maxiSetWidth = setInterval(maxiWidth, 1);
        }
        k++;
        updateAfterEvent();
    }
    function miniScale(){
        if(!keyForRotate){
            btn_mask_video.videoObj._xscale-=4;
            btn_mask_video.videoObj._yscale-=4;
        }else{
            btn_mask_video.videoObj._xscale-=2;
            btn_mask_video.videoObj._yscale-=2;
        }
        
        btn_mask_video.videoObj._x = (_root._x - btn_mask_video.videoObj._width)/2;
        btn_mask_video.videoObj._y = (_root._y - btn_mask_video.videoObj._height)/2;
        j--;
        if( j <= 0 ){
            clearInterval(miniInt);
            miniSetWidth = setInterval(miniWidth, 1);
        }
        updateAfterEvent();
    }
    endW = btn_mask_video.videoObj._width; 
    endH = btn_mask_video.videoObj._height;
    endX =  btn_mask_video.videoObj._x;
    endY =  btn_mask_video.videoObj._y;
    
    h.btn_play_hide.enabled = false;
    h.btn_slider_for_play.enabled = false;
    h.btn_dinamic_hide.enabled = false;
    h.btn_slider_for_snd.enabled = false;
    h.btn_cube_rot_hide.enabled = false;
    h.btn_cube_hide.enabled = false;
    
    miniInt = setInterval(miniScale, 1);
}
virav_el();                                                                                                  // выравниваем всё
all_el_panel(328);                                                                                     // при начальном появлении плеера, панель видна
preloader._visible = false;                                                                         // прелоадер выключен
h.btn_text_change.selectable = false;                                                      // где показывается текст времяни , то его нельзя выделить
h.btn_text_total.selectable = false;                                                          // тут тоже нельзя виделить
h.btn_text_change.text = converTime(0);                                                 // ставим начальное значение
h.btn_text_total.text = converTime(0);                                                     // тут тоже ставим начальное значение
h.btn_dinamic_work_3._visible = false;                                     // в громкости используется 3 "линии", звук ставим на 50%, 3-ю линию вырубаем
h.btn_play_hide._alpha = 0;                                                                     // символ для контроля PLAY, PAUSE прозрачен
h.btn_pause._visible = false;                                                                    // изображение ПАУЗЫ выключаем
saveVideoH = btn_mask_video.videoObj._height;                                    // сохраняем в переменных высоту видео-объекта
saveVideoW = btn_mask_video.videoObj._width;                                    // сохраняем в переменных ширину видео-объекта
var H_normal=0;        var W_normal=0;        var X_normal=0;        var Y_normal=0;     // эти переменные понадобятся в конце фильма.
var H_rotate=0;        var W_rotate=0;        var X_rotate=0;        var Y_rotate=0;      // тоже
var key = 1;                                                                                               // контрольный ключ для не постоянного отображения панели упр. плеером
var i=328;                                                                                                 // координата , нужна для парели упр-я плеером
var vol = 50;                                                                                             // по умолчание звук играет с громкостью в 50
h.btn_line_snd._xscale = vol;                                                                   // масштаб линии для звука равен в 50% (изначально он на всю длину сделан)
h.btn_slider_for_snd._x += 25 ;                                                               // слайдер звука чуток перемещён , т.к. точка регистрации находится в центре слева
var key_snd = false;                                                                                 // ключ для контролированя звука
var fullScreen = false;                                                                               // ключ для контролирования полномасштабного экрана
var keyForRotate = false;                                                                         // ключ для поворота фильма
// эта функция нужна для появления или изчезновения панели упр-я, если мышь находится в нужных координатах . то показываем, иначе прячем
onMouseMove = function(){
    if( _ymouse>=290 && _ymouse<=345 && _xmouse>=15 && _xmouse<=585 && key==0 ){
        if(IdSetTimeoutFadeOut) clearTimeout(IdSetTimeoutFadeOut);
        if(IdSetIntFadeOut) clearInterval(IdSetIntFadeOut);
        if( (i>=328) || (i <= 388) ){
            IdSetIntFadeIn = setInterval(fadeIn, 1);
            key = 1;
        }
    }else if( (_ymouse<290 || _ymouse>585) && key==1){
        IdSetTimeoutFadeOut = setTimeout(fadeOutMain, 2000);
        key = 0;
    }
};
//----------------------------------------------------------------------------------//
var nc:NetConnection = new NetConnection();                                        // создаём объект связи
nc.connect(null);
var nStream:NetStream = new NetStream(nc);                                        // объект для котнроля над видео
nStream.setBufferTime(3);
btn_mask_video.videoObj.attachVideo(nStream);                                   // прикрепляем видео
btn_mask_video.videoObj.smoothing = true;                                          // улучшаем изображение видео
var url:String = FILE; var vTotalTime:Number = TIME;                             // адрес и общее время длитольности фильма, глоб. переменные
//var url:String = "b.flv"; var vTotalTime:Number = 216;                         //  это для тестирования.
var played = false;                                                                                  // ключ для контроля над воспроизведением
var openOne = false;                                                                              //  ключ нужен, что того чтоб один раз открыть , с маштабировать и поставить на начальную позицию .
var openOneBufferFull = false;                                                                // этот ключ используется для буфера
dop_paleyd = true;                                                                                  // ключ для вопроизведения или паузы

loadInt = setInterval(checkLoadStatus, 10);                                          // как только плеер показался на экране, сразу начинается загрузка его
h.btn_text_total.text = converTime(vTotalTime);                                    // тут сразу показываем общее время фильма

if(!openOne){                                     // тут происходит следующее: при открытии браузера сразу начинается загрузка и показыватся 1 кадр фильма уже в масштабе.
    nStream.play(url);                                                                           // открываем поток
    nStream.pause();                                                                            // сразу его ставим на паузу
    nStream.seek(0);                                                                            // позицию ставим на 0 секунд
    openOne = true;                                                                            // поменяли флаг чтоб больше такого не делали
}
// как началось воспроизведение начинает работать функция onStatus() которая разрешает проигрываться фильму потому что буфер заполнен или при не заполненом буфере показывает ПРЕЛОАДЕР (анимационный клип свидетельсвующий о загрузки фильма в центре экрана)
nStream.onStatus = function(infoObject:Object){ 
    if(infoObject.code == "NetStream.Buffer.Empty") preloader._visible = true;
    if(infoObject.code == "NetStream.Buffer.Full"){
        preloader._visible = false;
        played = true;
    }
};

// две функции , нужны для анимации говорящие о полноэкранном режиме
h.btn_cube_hide.onRollOver = function(){
    clearInterval(IdSetIntCubeOut);
    function cubeCubeIn(){
        if(h.btn_cube_over._width >= 19 ){
            clearInterval(IdSetIntCube);
            h.btn_cube_over._width = 20;
            h.btn_cube_over._height = 20;
            return;
        }
        h.btn_cube_over._width++;
        h.btn_cube_over._height++; 
        updateAfterEvent();
    }
    IdSetIntCube = setInterval(cubeCubeIn, 10);
}
h.btn_cube_hide.onRollOut = function(){
    clearInterval(IdSetIntCube);
    function cubeCubeOut(){
        if(h.btn_cube_over._width <= 5){
            clearInterval(IdSetIntCubeOut);
            h.btn_cube_over._width = 5;
            h.btn_cube_over._height = 5;
            //return;
        }
        else{
            h.btn_cube_over._width--;
            h.btn_cube_over._height--;
        }
        updateAfterEvent();
    }
    IdSetIntCubeOut = setInterval(cubeCubeOut, 20);
}
// тут происходит контролирование слайдера по временной шкале ... тут и перемотка тоже.
h.btn_slider_for_play.onPress = function(){
    // При нажатии на бегунок, прекращаем периодический вызов функции checkTimeStatus, 
    //позиционирующей его в соответствии с текущей позицией воспроизведения
    clearInterval(timeInt);
    this.startDrag(false, 
                   h.btn_line_fon_video._x, 
                   h.btn_line_fon_video._y, 
                   h.btn_line_fon_video._x + h.btn_line_play._width - h.btn_slider_for_play._width, 
                   h.btn_line_fon_video._y                                                          );
    this.onMouseMove = function() {
        // Включаем отображение видеообъекта. Это нужно сделать на тот случай, 
        //если пользователь начнет выполнять ручную прокрутку до первого заполнения буфера
        btn_mask_video.videoObj._visible = true;
        // Установка позиции воспроизведения в соответствии с положением бегунка
        sx = h.btn_slider_for_play._x;
        marg = h.btn_line_fon_video._x;
        sw = h.btn_slider_for_play._width;
        fw = h.btn_line_fon_video._width;
        p = ((sx - marg)*100)/(fw-sw);
        T = vTotalTime;
        
        f = Math.floor( (p * T)/100 );
        nStream.seek(f);
        h.btn_text_change.text = converTime(nStream.time);
        updateAfterEvent();
    };
};
// тут отжатие слайдера 
h.btn_slider_for_play.onRelease = function(){
    this.stopDrag();
    //Вновь инициируем периодический вызов функции checkTimeStatus, 
    //для того чтобы положение бегунка соответствовало текущей позиции воспроизведения.
    if(h.btn_pause._visible){
        timeInt = setInterval(checkTimeStatus, 100);
    }
    else{
        checkTimeStatus();
    }
    delete this.onMouseMove;
};
h.btn_slider_for_play.onReleaseOutside = h.btn_slider_for_play.onRelease;
// тут невидемый символ для воспроизведения и паузы фильма
h.btn_play_hide.onRelease =  function(){
    nStream.pause();
    h.btn_play._visible = !h.btn_play._visible;
    h.btn_pause._visible = !h.btn_pause._visible;
    (dop_paleyd)? timeInt = setInterval(checkTimeStatus, 100) : clearInterval(timeInt);
    dop_paleyd = !dop_paleyd;
};

this.createEmptyMovieClip("soundmc", this.getNextHighestDepth());                          // тут дело связанно со звуком
var snd:Sound = new Sound("soundmc");                                                                   // создали звуковой объект
soundmc.attachAudio(nStream);                                                                                  // прикрепляем поток
snd.setVolume(vol);                                                                                                     // устанавливаем на 50% звук
// тут работаем со слайдером для звука, перемещаем его на необходимые позиции, тем самым регулируем звук.
h.btn_slider_for_snd.onPress = function(){
    this.startDrag(false, h.btn_line_fone_snd._x, 
                          h.btn_line_fone_snd._y , 
                          h.btn_line_fone_snd._x + h.btn_line_fone_snd._width - h.btn_slider_for_snd._width, 
                          h.btn_line_fone_snd._y                                                         );
    this.onMouseMove = function(){
        vol = Math.round( ((h.btn_slider_for_snd._x - h.btn_line_fone_snd._x)*100)/(h.btn_line_fone_snd._width - h.btn_slider_for_snd._width));
        
        h.btn_line_snd._xscale = Math.round( (vol * h.btn_line_fone_snd._width)/100) + h.btn_slider_for_snd._width;
        if(vol>=95) vol = 100;
        if(vol<5) vol = 0;
        (vol>=5) ? h.btn_dinamic_work_1._visible = true : h.btn_dinamic_work_1._visible = false;
        (vol>=33 && v<=76 ) ? h.btn_dinamic_work_2._visible = true : h.btn_dinamic_work_2._visible = false;
        (vol>76) ? h.btn_dinamic_work_3._visible = true : h.btn_dinamic_work_3._visible = false;
        snd.setVolume(vol);
        updateAfterEvent();
    };
};
// отпускаем и оставляем на нужной позиции
h.btn_slider_for_snd.onMouseUp = function(){
    this.stopDrag();
    delete this.onMouseMove;
};
// тут функция для резкого отключения звука , а после вновь нажатия возвращене полнузка на предыдущую позицию, т.е. вырубили звук на 70% , после повторного нажатия возвратили его на 70%
h.btn_dinamic_hide.onRelease = function(){
    if(!key_snd){
        vol_save_info = vol;
        btn_line_snd_save_info = h.btn_line_snd._xscale;
        btn_slider_for_snd_save_info = h.btn_slider_for_snd._x;
        snd.setVolume(0);
        h.btn_dinamic_work_1._visible = false;
        h.btn_dinamic_work_2._visible = false;
        h.btn_dinamic_work_3._visible = false;
        h.btn_slider_for_snd._x = h.btn_line_fone_snd._x;
        h.btn_line_snd._xscale = 0;
        vol_save_info
    }else{
        snd.setVolume(vol_save_info);
        (vol>=5) ? h.btn_dinamic_work_1._visible = true : h.btn_dinamic_work_1._visible = false;
        (vol>=33 && v<=66 ) ? h.btn_dinamic_work_2._visible = true : h.btn_dinamic_work_2._visible = false;
        (vol>66) ? h.btn_dinamic_work_3._visible = true : h.btn_dinamic_work_3._visible = false;
        h.btn_slider_for_snd._x = btn_slider_for_snd_save_info ;
        h.btn_line_snd._xscale = btn_line_snd_save_info;
    }
    key_snd = !key_snd;
}
// функция для перехода в полноэкранный режим или наоборот
h.btn_cube_hide.onRelease = function(){
    if(!fullScreen){
        Stage["displayState"] = "fullScreen";
        fullScreen = true;
    }
    else{
        Stage["displayState"] = "normal";
        fullScreen = false;
    }
};
// далее 2 функции нужны для анимации, говорящие о том что можно перевернуть видео-объект и смотреть допустим под 90 градусом
h.btn_cube_rot_hide.onRollOver = function(){
    clearInterval(idSetIntRotOut);
    h.btn_cube_rot_circle._rotation = 0;
    function rotate_strelky(){
        h.btn_cube_rot_circle._rotation+=3;
        updateAfterEvent();
    }
    idSetIntRot = setInterval(rotate_strelky, 1);
};
h.btn_cube_rot_hide.onRollOut = function(){
    clearInterval(idSetIntRot);
    function rotate_strelky_back(){
        if(h.btn_cube_rot_circle._rotation==0){
            h.btn_cube_rot_circle._rotation = 0;
            clearInterval(idSetIntRotOut);
        }
        else
            h.btn_cube_rot_circle._rotation-=3;
        updateAfterEvent();
    }
    idSetIntRotOut = setInterval(rotate_strelky_back, 1);
};
// тут короче нажали и видео-объект перевернулся на 90 градусов и т.д. Можно крутить его сколько угодно.
h.btn_cube_rot_hide.onRelease = function(){
    clearInterval(setAddAlpha);
    clearTimeout(setTimeOutDel);
    iii = 0 ;
        // далее вот эти 2 функции нужны для анимации фильма, т.е. чтоб не резко перевернулось видео на 90 градусов , а красиво.
    function addAlpha(){
        if(iii>=100){
            iii=0;
            btn_mask_video._alpha = 0;
            clearInterval(setAddAlpha);
            btn_mask_video._rotation += 90;
            if(!keyForRotate){
                btn_mask_video.videoObj._width = W_rotate;
                btn_mask_video.videoObj._height = H_rotate;
                btn_mask_video.videoObj._x = Y_rotate;
                btn_mask_video.videoObj._y = X_rotate;
                keyForRotate = true;
            }else{
                btn_mask_video.videoObj._width = W_normal;
                btn_mask_video.videoObj._height = H_normal;
                btn_mask_video.videoObj._x = X_normal;
                btn_mask_video.videoObj._y = Y_normal;
                keyForRotate = false;
            }
        }
        else btn_mask_video._alpha = 100-iii;
        iii+=5;
        updateAfterEvent();
    }
    function dopDelAlpha(){
        btn_mask_video._alpha = 0;
        function delAlpha(){
            if(iii>=99){
                iii=0;
                btn_mask_video._alpha = 100;
                clearInterval(setDelAlpha);
                clearTimeout(setTimeOutDel);
            }
            else btn_mask_video._alpha = iii;
            iii+=3;
            updateAfterEvent();
        }
        setDelAlpha = setInterval(delAlpha, 1);
    }
    setAddAlpha = setInterval(addAlpha, 1);
    setTimeOutDel = setTimeout(dopDelAlpha, 400);
};


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


Это сообщение отредактировал(а) numerovan - 5.11.2009, 19:41
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Flash"
AlDev
SoWa
  • Если вы хотите предложить кому-либо работу, то пишите или в личку, или оставляйте сообщения в специально предназначеном для этого форуме "Объявления о найме специалистов"
  • Один вопрос - одна тема. Не надо переходов от одного вопроса к другому.
  • Если вы хотите показать какой-нибудь ваш мульт, причём показать, а не предоставить исходник, то вам сюда
  • Вопросы по разработке интернет-приложений на Flex и вопросы по MXML пишите в раздел Flex
  • Смотрим в будущее. ActionScript 3 обсуждается в форуме ActionScript 3
  • Новости из мира Flash.
  • New! [code=ascript][/code] - подсветка ActionScript + wikipedia help

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, AlDev, SoWa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | ActionScript 1,2 | Следующая тема »


 




[ Время генерации скрипта: 0.0704 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.