Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 1.0/2.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 07.12.2012, 05:42
djken вне форума Посмотреть профиль Отправить личное сообщение для djken Посетить домашнюю страницу djken Найти все сообщения от djken
  № 1  
Ответить с цитированием
djken
 
Аватар для djken

Регистрация: May 2010
Адрес: Краснодар
Сообщений: 182
Отправить сообщение для djken с помощью ICQ Отправить сообщение для djken с помощью Skype™
Question не получается растянуть видеоролик на весь экран

Всем привет. При заходе на сайт нужно сделать проигрывание преветственного видеоролика.
Вроде ничего сложного, но ни в какую не получается растянуть видео на весь экран...
Сначала пробовал через Linked Video - кинул этот компонент на сцену под именем "video".
Но чтобы пропорционально растянуть видео, мне сначала нужно узнать width и height подгружаемого видеоролика. Пошукал Адобовский Help - получить метаданные можно через onMetaData, но width и height не возвращаются - получаю undefined. Получается получить только duration. Если я понял правильно из helpa на английском - это зависит от конвертера, который запихивает в видеоролик всякие метаданные...
В общем привожу скрипт который я писал:
Код AS1/AS2:
import mx.video.*;
 
var nc:NetConnection = new NetConnection();
nc.connect(null);
var ns:NetStream = new NetStream(nc);
video.attachVideo(ns);
ns.onMetaData = function(infoObject:Object) {
		trace(infoObject["width"]); // возвращает undefined
                trace(infoObject["height"]); // возвращает undefined
                trace(infoObject["duration"]) // возвращает 43.06
};
ns.play("files/video/videoTieser.flv");
Попробовал и другой способ - через компонент FLVPlayback.
На сцену повесил FLVPlayback - "video".
Скрипт следующий:
Код AS1/AS2:
import mx.video.*;
 
video.contentPath = "files/video/videoTieser.flv";
video._x=video._y=0;
video.width=Stage.width; // ничего не меняет
video.height=Stage.height; // ничего не меняет
а если размер так прописать, то растягивается как то некорректно - чуть ли не в 4 раза, чем сам размер экрана и не пропорционально:
Код AS1/AS2:
video._width=Stage.width;
video._height=Stage.height;
Что я не так делаю - дайте совет как лучше работать с видео - может есть способы намного лучше, а я не знаю про них...?
Заранее благодарен за помощь
__________________
кто не отвечает, того garbage collector забирает

Старый 07.12.2012, 10:46
ISergey вне форума Посмотреть профиль Отправить личное сообщение для ISergey Найти все сообщения от ISergey
  № 2  
Ответить с цитированием
ISergey
[+1.3 27.09.12]

Регистрация: Jun 2012
Сообщений: 24
Записей в блоге: 1
с сохранением пропорций можно отмасшабировать примерно так:
Код AS1/AS2:
private function resizeVideo (newWidth:Number, newHeight:Number):Void {	
		var monitor_width:Number = Stage.width;;
		var monitor_height:Number = Stage.height;		
 
		var propMonitor:Number = monitor_height / monitor_width;
		var propNewMov:Number = newHeight / newWidth;			
		if(propMonitor < propNewMov){
			display._height = monitor_height;
			display._width =  display._height/propNewMov;
			display._y = 0;
			display._x = monitor_width / 2 - display._width  / 2;
		}else {
			display._width = monitor_width;
			display._height = display._width * propNewMov;
			display._x = 0;
			display._y = monitor_height / 2 - display._height  / 2;
		}
	}
display - контейнер с видео.
здесь логика на новый размер видео потока, аналогично нужно смотреть случай изменения размеров самой флешки.
по поводу в "4 раза", скорей всего плюсом масшабируешь сам мувик с видео

Старый 07.12.2012, 14:16
djken вне форума Посмотреть профиль Отправить личное сообщение для djken Посетить домашнюю страницу djken Найти все сообщения от djken
  № 3  
Ответить с цитированием
djken
 
Аватар для djken

Регистрация: May 2010
Адрес: Краснодар
Сообщений: 182
Отправить сообщение для djken с помощью ICQ Отправить сообщение для djken с помощью Skype™
как растянуть видео, сохранив соотношение сторон, в зависимости от изменения размеров самой флэшки я знаю )) но все равно спасибо )
У меня не получалось именно через width и height само увеличение видео окна - он безконтрольно увеличивалось.
При использовании FLVPlayback заметил следующее:
если размеры видео задать в ресайзе Stage и во время проигрывания видео изменить размеры флеш-окна - то видео окно сразу нормально выстраивается под размеры флешки:
Код AS1/AS2:
var myListener:Object = new Object();
myListener.onResize = function() {
	 // задаем размеры видео
};
Stage.addListener(myListener);
Следовательно я думаю вся проблема в том, что размеры нужно прописывать не там где я задаю путь к видео файлу (т.к. видео поток еще не успел подгрузиться, а я его уже пытаюсь масштабировать), а в каком-нибудь оброботчике, который отлавливает начало проигрывания видео или что-то подобное... Просто еще не успел это опробовать.

И второе что понял:
при использовании Linked Video все метаданные нормально получил, когда попробовал воткнуть другой видео файл - значит всё и вправду зависит от того, каким конвертером сжато видео в FLV.
Так что остановился на втором варианте - получаю через onMetaData ширину и высоту исходного видео файла, и потом уже масштабирую
__________________
кто не отвечает, того garbage collector забирает

Старый 07.12.2012, 15:39
ISergey вне форума Посмотреть профиль Отправить личное сообщение для ISergey Найти все сообщения от ISergey
  № 4  
Ответить с цитированием
ISergey
[+1.3 27.09.12]

Регистрация: Jun 2012
Сообщений: 24
Записей в блоге: 1
Вы все правильно поняли.
изменение размеров делать только по событию, ловить в onMetaData и onResize.
Цитата:
У меня не получалось именно через width и height само увеличение видео окна - он безконтрольно увеличивалось.
обратите внимание на то, кому Вы присваиваете новые размеры: самому объекту видео, его контейнеру или и тому и тому сразу.

Создать новую тему Ответ Часовой пояс GMT +4, время: 05:54.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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