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

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

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

Регистрация: Aug 2017
Сообщений: 32
По умолчанию Проигрывание рандомного видеоролика

Здравствуйте.
Пытаюсь объединить два кода в один - для проигрывания рандомного видеоролика.

Как заставить первый код - загружать видеофайл, по той ссылке, что вписана в файл 1.txt ?
То есть должно получиться что-то вроде строки myStream.play(new URLRequest("1.txt")); вместо строки myStream.play("video/1.mp4");

Первый код растягивает видеоролик под окно:
Код AS3:
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);
}
Второй код открывает файл не по адресу файла в коде, а потому названию которое он берет из текстового файла 1.txt:
Код AS3:
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);
}
Вложения
Тип файла: rar 1.rar (75 байт, 24 просмотров)

Старый 27.02.2018, 19:48
ZergMaster вне форума Посмотреть профиль Отправить личное сообщение для ZergMaster Найти все сообщения от ZergMaster
  № 2  
Ответить с цитированием
ZergMaster
 
Аватар для ZergMaster

Регистрация: May 2008
Адрес: Питер
Сообщений: 385
Отправить сообщение для ZergMaster с помощью ICQ Отправить сообщение для ZergMaster с помощью Skype™
дык... а как именно вы пытаетесь?
типа загрузить сначала txt, как это сделано во втором примере, потом вызывать стрим по ссылке, как это сделано в первом. В итоге получить что-то вроде
Код AS3:
myStream.play(textData);
так пытались?
__________________
while(live()) { hope(); }

Старый 27.02.2018, 20:38
ttt480 вне форума Посмотреть профиль Отправить личное сообщение для ttt480 Найти все сообщения от ttt480
  № 3  
Ответить с цитированием
ttt480

Регистрация: Aug 2017
Сообщений: 32
ZergMaster, я пытался их по-разному объединять. Брать куски из второго кода - и вставлять их в первый код.
Ничего не получалось.

Подскажите - куда в первом коде добавлять фрагмент myStream.play(textData); ?

У меня получился такой код:
Код AS3:
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);
}

Старый 27.02.2018, 20:59
caseyryan вне форума Посмотреть профиль Отправить личное сообщение для caseyryan Найти все сообщения от caseyryan
  № 4  
Ответить с цитированием
caseyryan
 
Аватар для caseyryan

Регистрация: Jun 2012
Адрес: Новосибирск
Сообщений: 6,644
Записей в блоге: 4
Если текстовый файл содержит адреса потоков, примерно так:
То есть ссылки разделены переносом строки
загрузить их в массив можно примерно так
Код AS3:
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
}
ПРОФИТ

п.с. Код писал прямо здесь, так что могут быть какие-то опечатки
__________________
Ко мне можно и нужно обращаться на ты)

Старый 27.02.2018, 21:59
ttt480 вне форума Посмотреть профиль Отправить личное сообщение для ttt480 Найти все сообщения от ttt480
  № 5  
Ответить с цитированием
ttt480

Регистрация: Aug 2017
Сообщений: 32
caseyryan, текстовый файл - содержит не адреса потоков, а один-единственный адрес видеоролика C:\1\1.mp4

Как заставить скрипт - считывать этот один конкретный адрес из документа 1.txt ?


Последний раз редактировалось ttt480; 28.02.2018 в 00:18.
Старый 28.02.2018, 19:44
caseyryan вне форума Посмотреть профиль Отправить личное сообщение для caseyryan Найти все сообщения от caseyryan
  № 6  
Ответить с цитированием
caseyryan
 
Аватар для caseyryan

Регистрация: Jun 2012
Адрес: Новосибирск
Сообщений: 6,644
Записей в блоге: 4
Этот код будет работать и для одного видеоролика.
__________________
Ко мне можно и нужно обращаться на ты)

Старый 28.02.2018, 20:23
ttt480 вне форума Посмотреть профиль Отправить личное сообщение для ttt480 Найти все сообщения от ttt480
  № 7  
Ответить с цитированием
ttt480

Регистрация: Aug 2017
Сообщений: 32
caseyryan, куда именно этот фрагмент добавить в первый код ?

Добавлено через 7 часов 46 минут
caseyryan, подскажите - куда именно в первом коде добавлять этот фрагмент ?

Старый 01.03.2018, 11:47
ZergMaster вне форума Посмотреть профиль Отправить личное сообщение для ZergMaster Найти все сообщения от ZergMaster
  № 8  
Ответить с цитированием
ZergMaster
 
Аватар для ZergMaster

Регистрация: May 2008
Адрес: Питер
Сообщений: 385
Отправить сообщение для ZergMaster с помощью ICQ Отправить сообщение для ZergMaster с помощью Skype™
у вас здесь ошибочка
Цитата:
Код AS3:
var myStream:NetStream = new NetStream(netConnection);
	myStream.play("textData");
вы делаете .play строки "textData", а нужно делать плей переменной textData, в которую мы до этого загрузили адрес. То есть без кавычек вставлять
Код AS3:
var myStream:NetStream = new NetStream(netConnection);
	myStream.play(textData);
возможно, в этом дело, что у вас не работает?

Добавлено через 1 минуту
p.s. кстати, когда что-то не получается, полезно привести ошибку, которую выдает компилятор при попытке запустить/воспроизвести код

Добавлено через 3 минуты
если не получится, сделайте перед вызовом play trace и скажите, что вылазит
Код AS3:
trace('textData = '+textData);
myStream.play(textData);
__________________
while(live()) { hope(); }

Старый 01.03.2018, 13:48
ttt480 вне форума Посмотреть профиль Отправить личное сообщение для ttt480 Найти все сообщения от ttt480
  № 9  
Ответить с цитированием
ttt480

Регистрация: Aug 2017
Сообщений: 32
ZergMaster, убрал кавычки.
Все равно не работает.

Показывает вот такие ошибки:
Миниатюры
Нажмите на изображение для увеличения
Название: 1.jpg
Просмотров: 26
Размер:	84.4 Кб
ID:	33207  

Старый 01.03.2018, 13:58
ZergMaster вне форума Посмотреть профиль Отправить личное сообщение для ZergMaster Найти все сообщения от ZergMaster
  № 10  
Ответить с цитированием
ZergMaster
 
Аватар для ZergMaster

Регистрация: May 2008
Адрес: Питер
Сообщений: 385
Отправить сообщение для ZergMaster с помощью ICQ Отправить сообщение для ZergMaster с помощью Skype™
вот видите, он вам все пишет. Читайте внимательно, если что - гуглите ошибки. Хотя для этого лучше не русифицированный Animate
нет свойства loader_2 и loader. А нужно, чтоб были. Вы забыли их определить
Код AS3:
var loader: Loader = new Loader();
var loader_2: URLLoader = new URLLoader()
тоже касается и textData. Программа видит её только внутри той функции, где она определена. Вам нужно определить её вне функции.
__________________
while(live()) { hope(); }

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

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

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


 


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


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