Как остановить загрузку потока (звук) @ DeForum.ru
DeДверь  
Логин:  
Пароль:  
  Автологин  
   
Разместить рекламу
Письмо админу
Правила | FAQ | *Поиск | Наша команда | Регистрация | Вход
 
 
 Страница 1 из 1 [ Сообщений: 28 ] 
*   Список форумов / Технологии изображения / Flash » ответить » создать топик « | »
Автор Сообщение
cosmic Муж.
участник
49
Сообщения: 1500
Зарегистрирован: 17.03.03
Откуда: Koenig City
Заголовок сообщения: Как остановить загрузку потока (звук)
Сообщение Добавлено: 8 Январь 2007, 12:15:29 
Делаю плеер. На паузе поток вроде как продолжает грузиться, делаю так: sound.stop() потом старт с офсетом чтобы снять с паузы.
Но есть еще кнопка стоп, которая должна прерывать загрузку потока, но вот функции такой в референсе не нашел, unloadMovieClip есть, а вот unloadSound какой-нить нету :(
Что делать?

_________________
Это были те времена, когда мужчины были мужчинами и сами писали драйвера для своих устройств. © Линус Торвальдс
@st@l@vist@
участник
70
Сообщения: 1606
Зарегистрирован: 20.03.03
Откуда: St.Petersburg
Сообщение Добавлено: 8 Январь 2007, 14:37:37 
var sound:Sound = new Sound();
sound.loadSound("stream.mp3", true);

function onMouseDown()
{
sound = null;
}
Мигель Муж.
участник
75
Сообщения: 1453
Зарегистрирован: 09.01.04
Откуда: http://design-cafe.ru
Сообщение Добавлено: 9 Январь 2007, 12:40:27 
На тот же объект sound назначить загрузку несуществующего файла.

sound = null объективно загрузку не остановит.

_________________
_____
Работа Изображение Работы Изображение О Работе
eddy444 Муж.
Модератор
315
Сообщения: 14467
Зарегистрирован: 05.05.03
Откуда: NSK
Сообщение Добавлено: 9 Январь 2007, 13:04:53 
а вот как потом эту же загрузку продолжить, но не сначала?
Eduard Муж.
участник
61
Сообщения: 1629
Зарегистрирован: 24.09.03
Откуда: St.Petersburg , Moscow
Сообщение Добавлено: 9 Январь 2007, 13:20:24 
а если грузить что либо в новый пустой клип, и удалять его в процессе загрузки, это остановит загрузку ?
@st@l@vist@
участник
70
Сообщения: 1606
Зарегистрирован: 20.03.03
Откуда: St.Petersburg
Сообщение Добавлено: 9 Январь 2007, 15:20:08 

Мигель писал(а):
sound = null объективно загрузку не остановит.



Два вопроса:

1) Кто-то пробовал sound = null (delete sound), или просто по старой памяти?
2) Если это и в правду не работает, то хотел бы понять, неужели на этот форум заглядывают люди с FP меньше 8 ?
eddy444 Муж.
Модератор
315
Сообщения: 14467
Зарегистрирован: 05.05.03
Откуда: NSK
Сообщение Добавлено: 9 Январь 2007, 15:25:59 
@st@l@vist@, дык требований делать флэш под 6 тотально еще не отменили. И не только банерные сети.
cosmic Муж.
участник
49
Сообщения: 1500
Зарегистрирован: 17.03.03
Откуда: Koenig City
Сообщение Добавлено: 9 Январь 2007, 15:29:44 

eddy444 писал(а):
а вот как потом эту же загрузку продолжить, но не сначала?


Интересный вопрос...
Кажись винда сама иногда додумывается догружать с загруженного места, когда прелодер работать будет, попробую...

з.ы. sound=null работает, все ок... спасибо

_________________
Это были те времена, когда мужчины были мужчинами и сами писали драйвера для своих устройств. © Линус Торвальдс
@st@l@vist@
участник
70
Сообщения: 1606
Зарегистрирован: 20.03.03
Откуда: St.Petersburg
Сообщение Добавлено: 9 Январь 2007, 15:38:41 
eddy444, покажи мне баннер который грузит в себя поток ;)
А еще мне совсем недавно пришлось делать под 5 … и что из этого?

На счет загрузки, помоему, с настройками по умолчанию, на период сессии - должно из кэша грузиться (по крайней мере в ИЕ)
_iv Муж.
Модератор
32
Сообщения: 166
Зарегистрирован: 26.10.05
Откуда: Москва
Сообщение Добавлено: 9 Январь 2007, 20:18:45 

Цитата:
sound=null работает

- я бы не стал так рисковать.
всё-таки загрузка несуществующего звука надежней.
sound.loadSound("incorrect", true);
@st@l@vist@
участник
70
Сообщения: 1606
Зарегистрирован: 20.03.03
Откуда: St.Petersburg
Сообщение Добавлено: 9 Январь 2007, 22:57:30 
_iv, я думаю что это не секрет, что в 6.0.22.0 не работает ни один из этих способов, в 6.0.79.0 - этот баг плеера! пофиксили (других версий 6-ого плеера у меня нет под рукой)

В 7.0.19.0, что идет в поставке с Flash MX 2004 работают оба способа.

И теперь объясни, плз, зачем танцевать с бубном и грузить не существующий файл, когда можно просто удалить объект, а остальное сделает плеер?
_iv Муж.
Модератор
32
Сообщения: 166
Зарегистрирован: 26.10.05
Откуда: Москва
Сообщение Добавлено: 10 Январь 2007, 18:03:57 

@st@l@vist@ писал(а):
зачем танцевать с бубном и грузить не существующий


- затем, чтобы иметь гарантию того, что у тебя загрузка остановится, даже если у тебя где-то будет еще одна ссылка на твой объект Sound.
потому, что в таком варианте:
Код:
var sound:Sound = new Sound();
sound.loadSound("stream.mp3", true);
var sound1 = sound;
function onMouseDown()
{
sound = null;
}
загрузка не остановится.

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

принцип прост:
либо код всегда пишешь хорошо, либо постоянно нарываешься на танцы с бубном.
третьего не дано.

например, напиши в любом месте проекта код:
Код:
var my_sound:Sound = new Sound();
и посмотри, сработает ли остановка загрузки вот этим способом:

Код:
var sound:Sound = new Sound();
sound.loadSound("stream.mp3", true);
function onMouseDown() {
sound = null;
}
_iv Муж.
Модератор
32
Сообщения: 166
Зарегистрирован: 26.10.05
Откуда: Москва
Сообщение Добавлено: 10 Январь 2007, 18:17:06 
и, вообще, для каждого звука нужно создавать свой мувик, а не юзать рут для этого.
юзать рут для звука, по степени возможности отрицательных последствий, то же самое, что юзать рут или global для переменных.
@st@l@vist@
участник
70
Сообщения: 1606
Зарегистрирован: 20.03.03
Откуда: St.Petersburg
Сообщение Добавлено: 10 Январь 2007, 19:56:52 
_iv, это очередная софистика.

Это тема "вилки, которую лучше не использовать, потому что можно в глаз ткнуть".
Это можно парировать таким же нелепым аргументом: а вдруг кто-то поместит в папку mp3 файл с именем "incorrect" или "NotExist" или еще что-то ? :)

Далее по тексту идет очередной "this или не this"
Мигель Муж.
участник
75
Сообщения: 1453
Зарегистрирован: 09.01.04
Откуда: http://design-cafe.ru
Сообщение Добавлено: 10 Январь 2007, 20:06:17 
@st@l@vist@, ежели кто то поместит в папку с мп3 файл без расширения мп3, тогда уже ничего не поможет. :laugh:

В общем дискуссия вновь (как это тут часто бывает)) вышла в ранг вероисповеданий.

Все остаются при своих.
@st@l@vist@, удаляет объекты, а я гружу несуществующие звуки ))

_________________
_____
Работа Изображение Работы Изображение О Работе
_iv Муж.
Модератор
32
Сообщения: 166
Зарегистрирован: 26.10.05
Откуда: Москва
Сообщение Добавлено: 10 Январь 2007, 20:10:22 
мы не можем избежать всех возможных ошибок, вроде наличия mp3 файлов с таким именем.
но это и не нужно, поскольку шанс их вероятности очень низок и они быстро отлавлаваются.

но плодить поле для ошибок самому уж точно не стоит.
и это не софистика.

и по поводу this тоже не софистика, поскольку существуют совершенно конкретные примеры багов при отсутствии this.


Последний раз редактировалось _iv 10 Январь 2007, 20:23:47, всего редактировалось 1 раз.
@st@l@vist@
участник
70
Сообщения: 1606
Зарегистрирован: 20.03.03
Откуда: St.Petersburg
Сообщение Добавлено: 10 Январь 2007, 20:23:36 
_iv, единственная проблема с отсутствием this - это байткодовые команды от FP 2,3,4, которые можно найти en\First Run\Classes\toplevel.as

Но этому жить уже не долго :)

На счет поля для ошибок, давайте забудем про listeners (потому что все забывают removeListener делать и остаются ссылки на объекты), давайте забудет про Delegate и прочее, не говоря уже о более сложных конструкциях.

Давайте делать clip._x = 1000000, что убрать его со stage и т д ;)
_iv Муж.
Модератор
32
Сообщения: 166
Зарегистрирован: 26.10.05
Откуда: Москва
Сообщение Добавлено: 10 Январь 2007, 20:34:42 
единственная известная проблема это лишь признак наличия бага.
а если баг есть, то нужно избегать возможности его проявления в других ситуациях.

есть вполне понятные и аргументированные принципы:
чем больше даешь информации компилятору, тем меньше у него остается свободы выбора, тем предсказуемее результат.
чем меньше ты позволяешь чужому коду повлиять на результат, тем стабильнее твое приложение.
и т.п.

для этого придумана и приватность и вообще ООП.

про слушатели и делегаты:
да, это зло. но забыть про него не можем и вынужндены применять, поскольку остальные решения еще хуже по тем или иным причинам.
и чем лучше мы понимаем что их реализация далека от идеала, тем аккуратнее работаем с ними.
_iv Муж.
Модератор
32
Сообщения: 166
Зарегистрирован: 26.10.05
Откуда: Москва
Сообщение Добавлено: 10 Январь 2007, 20:39:41 
а вот про clip._x = 1000000 я совсем тебя не понял.
я вроде как раз ратую за обратное: если нужно удалить клип, то именно это и нужно делать, а не двигать его за пределы сцены.

_iv писал(а):
если ты хочешь остановить загрузку звука, то нужно именно это и делать.

@st@l@vist@
участник
70
Сообщения: 1606
Зарегистрирован: 20.03.03
Откуда: St.Petersburg
Сообщение Добавлено: 10 Январь 2007, 20:54:39 
Я мыслю так: Если мне нужно прервать, не остановить, а именно прервать, удалить загрузку потока, то я удаляю объект, а плеер, подчищая помойку, удаляет поток - это его работа.

Меня напрягает логика при которой вместо того чтобы удалить объект отвечающий за поток я должен загружать в него пустышку.
И мне показалось, может быть и не совсем в тему, что пример с перемещением клипа за пределы сцены, вместо его удаления, видал такое в исходниках, схож по логике с загрузкой не существующего файла.
_iv Муж.
Модератор
32
Сообщения: 166
Зарегистрирован: 26.10.05
Откуда: Москва
Сообщение Добавлено: 10 Январь 2007, 21:44:03 
я тебе привел 2 примера, когда НЕ удаляет загрузку.
и не обязан ее удалять, поскольку удаление ссылки на объект не обязательно приводит к удалению объекта.
в случае с Sound всё еще хуже: удаление загрузки произойдет только если не существует ни одного объекта Sound ассоциированного с данным мувиклипом.
_iv Муж.
Модератор
32
Сообщения: 166
Зарегистрирован: 26.10.05
Откуда: Москва
Сообщение Добавлено: 10 Январь 2007, 21:50:36 

@st@l@vist@ писал(а):
Меня напрягает логика при которой вместо того чтобы удалить объект отвечающий за поток я должен загружать в него пустышку.

и меня напрягает. мне тоже хотелось бы иметь метод типа stopLoadSound();
но его нет.
следовательно нужно найти наиболее отвечающее ситуации решение.
удаление ссылок на объект Sound - точно не решение вопроса.

кстати, можно попробовать Sound.stop(); и затем attachSound("empty_sound"); или attachSound(null);
я не пробовал, если сработает, то вроде покрасивше получится.
@st@l@vist@
участник
70
Сообщения: 1606
Зарегистрирован: 20.03.03
Откуда: St.Petersburg
Сообщение Добавлено: 10 Январь 2007, 22:05:51 
Иван, вопрос delete и существования ссылок - это отдельный вопрос, достаточно ясно описаный в хелпе.

Цитата:
либо код всегда пишешь хорошо, либо постоянно нарываешься на танцы с бубном.


Ты ведь используешь dispose, removeMovieClip, removeListener и т д, значит для тебя не должно быть проблемой позаботится о нормальном удалении объекта с помощью delete objRef; или objRef = null; (В свете грядущего AS3 второе мне кажется более приемлимым)

Что касается второго примера, я не понял что в нем не так?

var snd1 = new Sound();
snd1.loadSound("stream.mp3", true);
var snd2 = new Sound();
function onMouseDown()
{
snd1 = null;
}

Хотя мне кажется это не имет смысла, странно ссылаться на объяснительный пример. Если я здесь написал new Sound(), это не значит что я пложу это пачками, естественнно, если я хочу контролировать несколько звуковых каналов я буду ассоциировать их с отдельным клипами. Если мне нужен глобальный контроль над звуком я сделаю …

Ну а далее, все по новой. Честно говоря продолжать уже не хочется.
cosmic Муж.
участник
49
Сообщения: 1500
Зарегистрирован: 17.03.03
Откуда: Koenig City
Сообщение Добавлено: 10 Январь 2007, 23:58:33 
Мда ребята вы тут наплодили себе проблем... loadSound(null); работает, я бы даже сказал пашет как волл. То что я выше написал "sound=null работает" я соврал, я даже так не пробовал :) Потому что это заведомо дурацкая идея, а то что вы тут ратуете за то, что объект надо удалять попахивает клиникой... У меня есть знакомый, у которого журналы были разложены по тематике и в алфавитном порядке, это ж ппц.
Не, я конечно тоже за логичный код (хоть я даже и не программист в душе :)), но если уж приходится танцевать с бубном, тогда уж наверняка. А в нашем случае загрузка null в объект (который стримиться) наверняка убъет этот самый стрим как нефиг...

_________________
Это были те времена, когда мужчины были мужчинами и сами писали драйвера для своих устройств. © Линус Торвальдс
_iv Муж.
Модератор
32
Сообщения: 166
Зарегистрирован: 26.10.05
Откуда: Москва
Сообщение Добавлено: 11 Январь 2007, 04:23:51 

@st@l@vist@ писал(а):
Иван, вопрос delete и существования ссылок - это отдельный вопрос, достаточно ясно описаный в хелпе.

- да я вроде в курсе. но наличие описания в хелпе сделает ли это решение хорошим? избавит ли от недостатков?


@st@l@vist@ писал(а):
Что касается второго примера, я не понял что в нем не так?

- в том, что ты подразумеваешь исключительно свое влияние на проект, полное отсутствие импортированных классов третьих разработчиков или их тотальную проверку на отсутствие new Sound().
@st@l@vist@
участник
70
Сообщения: 1606
Зарегистрирован: 20.03.03
Откуда: St.Petersburg
Сообщение Добавлено: 11 Январь 2007, 06:47:01 
Я знаю, что ты в курсе, потому и кажется странным затрагивание этой проблемы. Ты часто плодишь ссылки на свои объекты, специально ссылочку в _global, _root, _flash и т д? Нет.

При желании можно испортить, переписать, удалить, и т д все. Всегда находятся умельцы, которые суют свои ручки, туда куда не нужно. AS в этом плане сильно уязвим. Инкапсулировать, в разумных пределах, вышеописанный стрим несложно, привязав его к какому то компоненту-контроллеру, сделав приватный объект sound и приватные методы открывающие и закрывающие поток.

Про new Sound() ты меня не услышал. Искать ошибки в отстраненном примере, применяя к нему требования для разработки серьезного проекта, не очень умно.
Мой же вопрос, относительно второго примера был лишь: "что в нем не работает?", хотя мне нечего тут отстаивать.

p.s.: Есть 100% работающий, для всех существующих FP, способ загрузки и удаления звукового потока, а так же контроль звука с 5-ой версии - конвератция MP3 (WAV) в SWF с sound stream на главном таймлане. И бесплатный софт клиенту для конвертации, онлайн конверторы, возможность самому сделать это (MING или exe) :)
@st@l@vist@
участник
70
Сообщения: 1606
Зарегистрирован: 20.03.03
Откуда: St.Petersburg
Сообщение Добавлено: 11 Январь 2007, 10:54:38 
Вот что меня мучает, только плз, не нужно искать потенциальные ошибки в отсутствии target для new Sound() и подобные мелочи:

Код:

   var stream;      
   
   onMouseDown = createAndLoadStream;
   onMouseUp = closeStream;
   
   function onStreamLoad(success)
   {
      if(success) status.text = "loaded successfully";
      else status.text = "failed to load";
      
      /* stream.loadSound(new Date().getTime());
         дает "failed to load" > почему?
         мы ведь закрываем поток и отменяем загрузку.
      */
   }
   
   function createAndLoadStream()
   {
      status.text = "loading";
      
      stream = new Sound();
      stream.onLoad = onStreamLoad;
      stream.loadSound("1.mp3", true);
      
      /* stream.loadSound("");
         может выдать "loaded successfully" на серваке,
         по понятным причинам > зачем нам это?
      */
   }
   
   function closeStream()
   {
      status.text = "close the stream and cancel the download";
      
      // stream.loadSound("");
      //stream.loadSound(new Date().getTime());
      stream = null;
   }

@st@l@vist@
участник
70
Сообщения: 1606
Зарегистрирован: 20.03.03
Откуда: St.Petersburg
Сообщение Добавлено: 11 Январь 2007, 16:36:55 
Кстати, еще, если отстраниться от того, что я сам же и указал: stream.mp3, и взять stream.flv (перегнать mp3-шку в flv), то тогда все становится на свои места:

Код:
   var connection:NetConnection = new NetConnection();
      connection.connect(null);
   var stream:NetStream = new NetStream(connection);
      stream.play("stream.flv");
   
      createEmptyMovieClip("soundHolder", 1).attachAudio(stream);

      function onMouseDown()
      {
         stream.close();
      }


Объект Sound для контроля звука, NetStream для контроля потока. Честно говоря видел только краем глаза, вроде как в AS3 сделал как раз URLStream …
*   Список форумов / Технологии изображения / Flash « | » » ответить » создать топик
 Страница 1 из 1 [ Сообщений: 28 ] 
Показать сообщения за:   Поле сортировки  
Найти:
Перейти:  
Уровень доступа: Вы не можете начинать темы. Вы не можете отвечать на сообщения. Вы не можете редактировать свои сообщения. Вы не можете удалять свои сообщения. Вы не можете добавлять вложения.
cron


ООО ДеФорум
При использовании материалов сайта ссылка на DeForum.ru — обязательна.
Проект Павла Батурина ©2001-2077; // Powered by phpBB © 2013 phpBB Group
Rambler's Top100