![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Регистрация: Jun 2008
Сообщений: 283
|
Здраствуйте
столкнулся с такой проблемкой: у меня flv плеер который должен проигрывать видео файлы размеры которых разные, следовательно пытаюсь спрограммировать автоподстройку размера видео под окно проигрывыателя ( уменьшение, центрирование) для этого я передаю через Xml размеры файла и в соответствии с ними провожу манипуляуии с размерами кампонентой MediaDisplay (в которую грузится видео) - результат отличен от ожидаемого может что то в инспекторе самой компоненты что то поменять необходимо? или для реалезации данного плеера необходим другой подход некий? благадарю |
|
|||||
|
вот полный код плеера. После полной загрузки плеер принимает размеры видио(их не нужно указывать в xml). Scin Bar также принимает ширину видео. Разбирайтесь и пользуйтесь....
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"); } } |
|
|||||
|
Регистрация: Jun 2008
Сообщений: 283
|
благадарю+)
но мне проще будет с нуля разобраться, главное литературу найти вот тут есть всё чего на данный момент мне не хватает: http://help.adobe.com/en_US/AS2LCR/F...ponents_1.html Уделил время на анализ и применения функций и свойств media components ( применительно к моей теме с media display) который нашлись в описаниии по ссылке (см. выше в моём сообщении), и тут столкнулся с таким нюансом: последовательно беру гружу первое видео, потом жму на кнопку грузится второе, но не происходит сбрасываний свойств, то есть такие свойства как : (может и ещё какие-нибудь, не проверял) имеют значения предыдущего видео, которое проигрывалось перед текущим+( может тут есть некая функция, которая сбрасывала бы эти вещи в ноль? или я задаю загрузку неправильно: буду весьма благодарен за подссказку, так как из-за этого тапчусь на месте и не могу двинуться дальше спасибо Последний раз редактировалось Evgan; 11.11.2009 в 04:53. |
|
|||||
|
Регистрация: Jun 2008
Сообщений: 283
|
повозился с MediaDisplay, спрограммировал плеер (в приложении прикрепил исходник, на дизайи не серчайте не до него сейчас, главное программинг)
так вот, всё хорошо работает только в IE, если локально на компьютаре открывать плеер в Mazilla или Opera, то при нажатии на кнопку загрузки видеоо (выполняется команда: ), то ничего не происходит+( ежеле в интернет выложить плеер, то там срабатывает, но с некой непонятной задержкой+( буду благадарен, если кто подскажит причину этого безобразия, и есть ли ему решение спасибо |
![]() |
![]() |
Часовой пояс GMT +4, время: 07:59. |
|
|
« Предыдущая тема | Следующая тема » |
|
|