|
|
|||||
Регистрация: Aug 2017
Сообщений: 32
|
Проигрывание рандомного видеоролика
Здравствуйте.
Пытаюсь объединить два кода в один - для проигрывания рандомного видеоролика. Как заставить первый код - загружать видеофайл, по той ссылке, что вписана в файл 1.txt ? То есть должно получиться что-то вроде строки myStream.play(new URLRequest("1.txt")); вместо строки myStream.play("video/1.mp4"); Первый код растягивает видеоролик под окно: import flash.media.SoundTransform; stage.scaleMode = StageScaleMode.NO_SCALE; stage.align = StageAlign.TOP_LEFT; function update(e:Event = null):void { myVideo.scaleX = myVideo.scaleY = 1; var scale:Number=Math.min(stage.stageWidth /myVideo.width,stage.stageHeight/myVideo.height); myVideo.scaleX = myVideo.scaleY = scale; myVideo.x = stage.stageWidth * 0.5 - myVideo.width * 0.5; myVideo.y = stage.stageHeight* 0.5 - myVideo.height * 0.5; } stage.addEventListener(Event.RESIZE, update); var myVideo:Video = new Video(); myVideo.height = 537.6; myVideo.width = 720.6; addChild(myVideo); var netConnection:NetConnection = new NetConnection(); netConnection.connect(null); var myStream:NetStream = new NetStream(netConnection); myStream.play("video/1.mp4"); myStream.soundTransform = new SoundTransform(0); myStream.addEventListener(AsyncErrorEvent.ASYNC_ERROR, function (event:AsyncErrorEvent):void {}); myStream.addEventListener(NetStatusEvent.NET_STATUS, goAgain); myVideo.attachNetStream(myStream); function goAgain (event:NetStatusEvent): void { if(event.info.code == "NetStream.Play.Start") myStream.seek(20); if(event.info.code == "NetStream.Play.Stop") myStream.seek(0); } import flash.display.Loader; import flash.net.URLRequest; import flash.events.Event; var loader: Loader = new Loader(); var loader_2: URLLoader = new URLLoader(); loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onComplete); loader_2.addEventListener(Event.COMPLETE, onComplete_2); addChild(loader); loader_2.load(new URLRequest("1.txt")); function onComplete_2(event: Event): void { loader_2.removeEventListener(Event.COMPLETE, onComplete_2); var textData: String = new String(loader_2.data); loader.load(new URLRequest(textData)); } function onComplete(e: Event): void { e.target.removeEventListener(Event.COMPLETE, onComplete); } |
|
|||||
дык... а как именно вы пытаетесь?
типа загрузить сначала txt, как это сделано во втором примере, потом вызывать стрим по ссылке, как это сделано в первом. В итоге получить что-то вроде так пытались?
__________________
while(live()) { hope(); } |
|
|||||
Регистрация: Aug 2017
Сообщений: 32
|
ZergMaster, я пытался их по-разному объединять. Брать куски из второго кода - и вставлять их в первый код.
Ничего не получалось. Подскажите - куда в первом коде добавлять фрагмент myStream.play(textData); ? У меня получился такой код: import flash.media.SoundTransform; stage.scaleMode = StageScaleMode.NO_SCALE; stage.align = StageAlign.TOP_LEFT; function update(e:Event = null):void { myVideo.scaleX = myVideo.scaleY = 1; var scale:Number=Math.min(stage.stageWidth /myVideo.width,stage.stageHeight/myVideo.height); myVideo.scaleX = myVideo.scaleY = scale; myVideo.x = stage.stageWidth * 0.5 - myVideo.width * 0.5; myVideo.y = stage.stageHeight* 0.5 - myVideo.height * 0.5; } stage.addEventListener(Event.RESIZE, update); var myVideo:Video = new Video(); myVideo.height = 537.6; myVideo.width = 720.6; addChild(myVideo); var netConnection:NetConnection = new NetConnection(); netConnection.connect(null); loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onComplete); loader_2.addEventListener(Event.COMPLETE, onComplete_2); addChild(loader); loader_2.load(new URLRequest("1.txt")); function onComplete_2(event: Event): void { loader_2.removeEventListener(Event.COMPLETE, onComplete_2); var textData: String = new String(loader_2.data); loader.load(new URLRequest(textData)); } var myStream:NetStream = new NetStream(netConnection); myStream.play("textData"); myStream.soundTransform = new SoundTransform(0); myStream.addEventListener(AsyncErrorEvent.ASYNC_ERROR, function (event:AsyncErrorEvent):void {}); myStream.addEventListener(NetStatusEvent.NET_STATUS, goAgain); myVideo.attachNetStream(myStream); function goAgain (event:NetStatusEvent): void { if(event.info.code == "NetStream.Play.Start") myStream.seek(20); if(event.info.code == "NetStream.Play.Stop") myStream.seek(0); } |
|
|||||
Если текстовый файл содержит адреса потоков, примерно так:
Цитата:
загрузить их в массив можно примерно так var links:Array = null; var urlLoader:URLLoader = new URLLoader(); urlLoader.addEventListener(Event.COMPLETE, function(e:Event):void { var textData:String = e.target.data; links = []; // не разбиваю текст сразу в этот массив, а создаю новый, так как после разбиения одна ячейка не будет содержать ссылку var splitArray:Array = textData.split(/\s+/); // разбиваем по любому вайтспейсу, так как в винде переносом может быть \r\n, а в других системах просто \n for each (var link:String in splitArray) { if (link.length) links.push(link); // помещаем найденную ссылку в массив } // если массив не пустой, стартуем видео if (links.length) startVideo(); }); urlLoader.load(new URLRequest("1.txt")); function startVideo():void { var randomLink:String = links[int(links.length * Math.random())]; // получаем случайную ссылку ... тут стартуем видео коток, передав в play() нашу randomLink } п.с. Код писал прямо здесь, так что могут быть какие-то опечатки
__________________
Ко мне можно и нужно обращаться на ты) |
|
|||||
Регистрация: Aug 2017
Сообщений: 32
|
caseyryan, текстовый файл - содержит не адреса потоков, а один-единственный адрес видеоролика C:\1\1.mp4
Как заставить скрипт - считывать этот один конкретный адрес из документа 1.txt ? Последний раз редактировалось ttt480; 28.02.2018 в 00:18. |
|
|||||
Регистрация: Aug 2017
Сообщений: 32
|
caseyryan, куда именно этот фрагмент добавить в первый код ?
Добавлено через 7 часов 46 минут caseyryan, подскажите - куда именно в первом коде добавлять этот фрагмент ? |
|
|||||
у вас здесь ошибочка
вы делаете .play строки "textData", а нужно делать плей переменной textData, в которую мы до этого загрузили адрес. То есть без кавычек вставлять возможно, в этом дело, что у вас не работает? Добавлено через 1 минуту p.s. кстати, когда что-то не получается, полезно привести ошибку, которую выдает компилятор при попытке запустить/воспроизвести код Добавлено через 3 минуты если не получится, сделайте перед вызовом play trace и скажите, что вылазит
__________________
while(live()) { hope(); } |
|
|||||
Регистрация: Aug 2017
Сообщений: 32
|
ZergMaster, убрал кавычки.
Все равно не работает. Показывает вот такие ошибки: |
|
|||||
вот видите, он вам все пишет. Читайте внимательно, если что - гуглите ошибки. Хотя для этого лучше не русифицированный Animate
нет свойства loader_2 и loader. А нужно, чтоб были. Вы забыли их определить тоже касается и textData. Программа видит её только внутри той функции, где она определена. Вам нужно определить её вне функции.
__________________
while(live()) { hope(); } |
Часовой пояс GMT +4, время: 18:08. |
|
« Предыдущая тема | Следующая тема » |
|
|