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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 10.11.2009, 22:28
Evgan вне форума Посмотреть профиль Отправить личное сообщение для Evgan Найти все сообщения от Evgan
  № 1  
Ответить с цитированием
Evgan

Регистрация: Jun 2008
Сообщений: 283
Thumbs up flv плеер с подстройкой под размер видео файла

Здраствуйте

столкнулся с такой проблемкой:
у меня flv плеер который должен проигрывать видео файлы размеры которых разные, следовательно пытаюсь спрограммировать автоподстройку размера видео под окно проигрывыателя ( уменьшение, центрирование)

для этого я передаю через Xml размеры файла и в соответствии с ними провожу манипуляуии с размерами кампонентой MediaDisplay (в которую грузится видео) - результат отличен от ожидаемого

может что то в инспекторе самой компоненты что то поменять необходимо?
или для реалезации данного плеера необходим другой подход некий?

благадарю

Старый 11.11.2009, 01:16
amexdesign вне форума Посмотреть профиль Отправить личное сообщение для amexdesign Посетить домашнюю страницу amexdesign Найти все сообщения от amexdesign
  № 2  
Ответить с цитированием
amexdesign

Регистрация: Jan 2009
Адрес: Германия, Bochum
Сообщений: 169
Отправить сообщение для amexdesign с помощью Skype™
вот полный код плеера. После полной загрузки плеер принимает размеры видио(их не нужно указывать в xml). Scin Bar также принимает ширину видео. Разбирайтесь и пользуйтесь....
Код AS1/AS2:
var amountLoaded:Number;
var duration:Number;
var heightY:Number;
var widthX:Number;
var pausePos:Number;
var scrubInterval;
var video:String;
import mx.transitions.Tween;
import mx.transitions.easing.*;
ns.stop(video);
controls._visible = 0;
close_btn._visible = 0;
controls.playButton._visible = 0;
controls.loader.timeBar_mc._width = 0;
 
var nc:NetConnection = new NetConnection();
nc.connect(null);
var ns:NetStream = new NetStream(nc);
theVideo.attachVideo(ns);
//ns.setBufferTime(10);
loader.loadbar._xscale = 0;
var loaded_interval:Number = setInterval(checkBytesLoaded, 500, ns);
function checkBytesLoaded(my_ns:NetStream) {
    var pctLoaded:Number = Math.round(my_ns.bytesLoaded / my_ns.bytesTotal * 100);
    bufferClip.loaded_txt.text = Math.round(my_ns.bytesLoaded / 1000) + " of " + Math.round(my_ns.bytesTotal / 1000) + " KB loaded (" + pctLoaded + "%)";
    loader.loadbar._xscale = pctLoaded;
    if (pctLoaded >= 100) {
		clearInterval(loaded_interval);
		var videoInterval = setInterval(videoStatus,100);
		theVideo._height = heightY;
		theVideo._width = widthX;
		theVideo._x = pac._x - widthX/2;
		theVideo._y = pac._y - heightY/2;
		bufferClip._x = pac._x - bufferClip/2;
		bufferClip._y = pac._y - bufferClip/2;
		bufferClip._height = heightY;
		bufferClip._width = widthX;
		controls._x = theVideo._x;
		controls._y = theVideo._y + heightY + 2;
		controls.controlBarR._x = theVideo._x + theVideo._width - 10;
		controls.controlBar._width = controls.controlBarR._x - 10;
		close_btn._x = theVideo._x + theVideo._width - close_btn._width/2;
		close_btn._y = theVideo._y + 10;
		ns.play(video);
	}
}
 
ns.onStatus = function(info) {
	//trace(info.code);
	if(info.code == "NetStream.Buffer.Full") {
		bufferClip._visible = false;
		theVideo._height = heightY;
		theVideo._width = widthX;
		theVideo._x = pac._x - widthX/2;
		theVideo._y = pac._y - heightY/2;
		bufferClip._x = pac._x - bufferClip/2;
		bufferClip._y = pac._y - bufferClip/2;
		bufferClip._height = heightY;
		bufferClip._width = widthX;
		controls._x = theVideo._x;
		controls._y = theVideo._y + heightY + 2;
		close_btn._x = theVideo._x + theVideo._width - close_btn._width/2;
		close_btn._y = theVideo._y + 10;
		controls._visible = 1;
		close_btn._visible = 1;
	}
	if(info.code == "NetStream.Buffer.Empty") {
		bufferClip._visible = true;
	}
	if(info.code == "NetStream.Play.Stop") {
		ns.seek(0);
	}
}
 
controls.playButton.onRelease = function() {
	ns.pause(false);
	controls.pauseButton._visible = 1;
	this._visible = 0;
}
 
controls.pauseButton.onRelease = function() {
	ns.pause(true);
	controls.playButton._visible = 1;
	this._visible = 0;
}
 
controls.rewindButton.onRelease = function() {
	ns.seek(0);
}
 
ns["onMetaData"] = function(obj) {
	duration = obj.duration;
	heightY = obj.height;
	widthX = obj.width;
	trace(widthX);
}
 
function videoStatus() {
	amountLoaded = ns.bytesLoaded / ns.bytesTotal;
	controls.loader.loadbar._width = amountLoaded * (controls.loader.loadbar._width + 0.3);
	controls.loader.scrub._x = ns.time / duration * (controls.loader.loadbar._width + 0.3);
	controls.loader.timeBar_mc._width = ns.time / duration * (controls.loader.loadbar._width + 0.3);
	controls.controlBarR._x = widthX - 12;
	controls.controlBar._width = widthX - 20;//controls.controlBarR._x - 9.2;
	controls.mute._x = widthX - 23;
	controls.loader.loadbar._width = controls.mute._x - 72;
	controls.loader.ob._width = controls.mute._x - 71.7;
	controls.loader.u._width = controls.mute._x - 71.7;
	controls.loader.r._x = controls.mute._x - 71.7;
	bufferClip._visible = false;
	theVideo._height = heightY;
	theVideo._width = widthX;
	theVideo._x = pac._x - widthX/2;
	theVideo._y = pac._y - heightY/2;
	controls._x = theVideo._x;
	controls._y = theVideo._y + heightY + 2;
	close_btn._x = theVideo._x + theVideo._width - close_btn._width/2;
	close_btn._y = theVideo._y + 10;
}
 
/*controls.loader.scrub.onPress = function() {
	clearInterval(videoInterval);
	scrubInterval = setInterval(scrubit,10);
	startDrag(this);
}
 
controls.loader.scrub.onRelease = controls.loader.scrub.onReleaseOutside = function() {
	clearInterval(scrubInterval);
	videoInterval = setInterval(videoStatus,100);
	this.stopDrag();
}*/
 
function scrubit() {
	ns.seek(Math.floor((controls.loader.scrub._x/controls.loader.loadbar._width)*duration));
}
 
var theMenu:ContextMenu = new ContextMenu();
theMenu.hideBuiltInItems();
_root.menu = theMenu;
 
var item1:ContextMenuItem = new ContextMenuItem("::::: Video Controls :::::",trace);
theMenu.customItems[0] = item1;
 
var item2:ContextMenuItem = new ContextMenuItem("Play / Pause Video",pauseIt,true);
theMenu.customItems[1] = item2;
 
var item3:ContextMenuItem = new ContextMenuItem("Replay the Video",restartIt);
theMenu.customItems[2] = item3;
 
var item4:ContextMenuItem = new ContextMenuItem(2005 Lee Brimelow",trace,true);
theMenu.customItems[3] = item4;
 
function pauseIt() {
	ns.pause();
}
 
function stopIt() {
	ns.seek(0);
	ns.pause();
}
 
function restartIt() {
	ns.seek(0);
}
 
_root.createEmptyMovieClip("vSound",_root.getNextHighestDepth());
vSound.attachAudio(ns);
var so:Sound = new Sound(vSound);
so.setVolume(100);
 
controls.dragger.onPress = function() {
	this.onEnterFrame = function() {
		this.startDrag(false, 10, this._y, 60, this._y);
		vol = Math.floor((controls.dragger._x)*2)-20;
		so.setVolume(vol);
		(vol == 0) ? speaker_btn.onRelease() : speakerAus_btn.onRelease();
		volumeText = true;
	};
};
controls.dragger.onRelease = controls.dragger.onReleaseOutside = function () {
	delete this.onEnterFrame;
	volumeText = false;
	this.stopDrag();
};
 
 
controls.mute.onRollOver = function() {
	if(so.getVolume()== 100) {
		this.gotoAndStop("onOver");
	}
	else {
		this.gotoAndStop("muteOver");
	}
}
 
controls.mute.onRollOut = function() {
	if(so.getVolume()== 100) {
		this.gotoAndStop("on");
	}
	else {
		this.gotoAndStop("mute");
	}
}
 
controls.mute.onRelease = function() {
	if(so.getVolume()== 100) {
		so.setVolume(0);
		this.gotoAndStop("muteOver");
	}
	else {
		so.setVolume(100);
		this.gotoAndStop("onOver");
	}
}

Старый 11.11.2009, 01:25
Evgan вне форума Посмотреть профиль Отправить личное сообщение для Evgan Найти все сообщения от Evgan
  № 3  
Ответить с цитированием
Evgan

Регистрация: Jun 2008
Сообщений: 283
благадарю+)
но мне проще будет с нуля разобраться, главное литературу найти
вот тут есть всё чего на данный момент мне не хватает:

http://help.adobe.com/en_US/AS2LCR/F...ponents_1.html


Уделил время на анализ и применения функций и свойств media components ( применительно к моей теме с media display) который нашлись в описаниии по ссылке (см. выше в моём сообщении), и тут столкнулся с таким нюансом:
последовательно беру гружу первое видео, потом жму на кнопку грузится второе, но не происходит сбрасываний свойств, то есть такие свойства как :

Код AS1/AS2:
my_pleer.preferredWidth
my_pleer.preferredHeight
my_pleer.totalTime
(может и ещё какие-нибудь, не проверял) имеют значения предыдущего видео, которое проигрывалось перед текущим+(

может тут есть некая функция, которая сбрасывала бы эти вещи в ноль? или я задаю загрузку неправильно:

Код AS1/AS2:
my_pleer.contentPath = ur[i];
буду весьма благодарен за подссказку, так как из-за этого тапчусь на месте и не могу двинуться дальше

спасибо


Последний раз редактировалось Evgan; 11.11.2009 в 04:53.
Старый 15.11.2009, 16:00
Evgan вне форума Посмотреть профиль Отправить личное сообщение для Evgan Найти все сообщения от Evgan
  № 4  
Ответить с цитированием
Evgan

Регистрация: Jun 2008
Сообщений: 283
Thumbs up не коректно работает в Mazilla и Opera

повозился с MediaDisplay, спрограммировал плеер (в приложении прикрепил исходник, на дизайи не серчайте не до него сейчас, главное программинг)
так вот, всё хорошо работает только в IE, если локально на компьютаре открывать плеер в Mazilla или Opera, то при нажатии на кнопку загрузки видеоо (выполняется команда:
Код AS1/AS2:
my_pleer.contentPath = ur[i];
), то ничего не происходит+( ежеле в интернет выложить плеер, то там срабатывает, но с некой непонятной задержкой+(

буду благадарен, если кто подскажит причину этого безобразия, и есть ли ему решение

спасибо

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

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

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


 


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


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