|
Страница 1 из 1 [ Сообщений: 28 ] |
Автор |
Сообщение |
cosmic
участник
|
|
Делаю плеер. На паузе поток вроде как продолжает грузиться, делаю так: sound.stop() потом старт с офсетом чтобы снять с паузы.
Но есть еще кнопка стоп, которая должна прерывать загрузку потока, но вот функции такой в референсе не нашел, unloadMovieClip есть, а вот unloadSound какой-нить нету
Что делать?
_________________ Это были те времена, когда мужчины были мужчинами и сами писали драйвера для своих устройств. © Линус Торвальдс
|
|
|
|
|
@st@l@vist@
участник
|
|
var sound:Sound = new Sound();
sound.loadSound("stream.mp3", true);
function onMouseDown()
{
sound = null;
}
|
|
|
|
|
@st@l@vist@
участник
|
|
Мигель писал(а): | sound = null объективно загрузку не остановит. |
Два вопроса:
1) Кто-то пробовал sound = null (delete sound), или просто по старой памяти?
2) Если это и в правду не работает, то хотел бы понять, неужели на этот форум заглядывают люди с FP меньше 8 ?
|
|
|
|
|
cosmic
участник
|
|
eddy444 писал(а): | а вот как потом эту же загрузку продолжить, но не сначала? |
Интересный вопрос...
Кажись винда сама иногда додумывается догружать с загруженного места, когда прелодер работать будет, попробую...
з.ы. sound=null работает, все ок... спасибо
_________________ Это были те времена, когда мужчины были мужчинами и сами писали драйвера для своих устройств. © Линус Торвальдс
|
|
|
|
|
@st@l@vist@
участник
|
|
eddy444, покажи мне баннер который грузит в себя поток
А еще мне совсем недавно пришлось делать под 5 … и что из этого?
На счет загрузки, помоему, с настройками по умолчанию, на период сессии - должно из кэша грузиться (по крайней мере в ИЕ)
|
|
|
|
|
_iv
Модератор
|
|
Цитата: | sound=null работает |
- я бы не стал так рисковать.
всё-таки загрузка несуществующего звука надежней.
sound.loadSound("incorrect", true);
|
|
|
|
|
@st@l@vist@
участник
|
|
_iv, я думаю что это не секрет, что в 6.0.22.0 не работает ни один из этих способов, в 6.0.79.0 - этот баг плеера! пофиксили (других версий 6-ого плеера у меня нет под рукой)
В 7.0.19.0, что идет в поставке с Flash MX 2004 работают оба способа.
И теперь объясни, плз, зачем танцевать с бубном и грузить не существующий файл, когда можно просто удалить объект, а остальное сделает плеер?
|
|
|
|
|
_iv
Модератор
|
|
@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; }
|
|
|
|
|
@st@l@vist@
участник
|
|
_iv, это очередная софистика.
Это тема "вилки, которую лучше не использовать, потому что можно в глаз ткнуть".
Это можно парировать таким же нелепым аргументом: а вдруг кто-то поместит в папку mp3 файл с именем "incorrect" или "NotExist" или еще что-то ?
Далее по тексту идет очередной "this или не this"
|
|
|
|
|
Мигель
участник
|
|
@st@l@vist@, ежели кто то поместит в папку с мп3 файл без расширения мп3, тогда уже ничего не поможет.
В общем дискуссия вновь (как это тут часто бывает)) вышла в ранг вероисповеданий.
Все остаются при своих.
@st@l@vist@, удаляет объекты, а я гружу несуществующие звуки ))
|
|
|
|
|
@st@l@vist@
участник
|
|
_iv, единственная проблема с отсутствием this - это байткодовые команды от FP 2,3,4, которые можно найти en\First Run\Classes\toplevel.as
Но этому жить уже не долго
На счет поля для ошибок, давайте забудем про listeners (потому что все забывают removeListener делать и остаются ссылки на объекты), давайте забудет про Delegate и прочее, не говоря уже о более сложных конструкциях.
Давайте делать clip._x = 1000000, что убрать его со stage и т д
|
|
|
|
|
_iv
Модератор
|
|
а вот про clip._x = 1000000 я совсем тебя не понял.
я вроде как раз ратую за обратное: если нужно удалить клип, то именно это и нужно делать, а не двигать его за пределы сцены.
_iv писал(а): | если ты хочешь остановить загрузку звука, то нужно именно это и делать. |
|
|
|
|
|
@st@l@vist@
участник
|
|
Я мыслю так: Если мне нужно прервать, не остановить, а именно прервать, удалить загрузку потока, то я удаляю объект, а плеер, подчищая помойку, удаляет поток - это его работа.
Меня напрягает логика при которой вместо того чтобы удалить объект отвечающий за поток я должен загружать в него пустышку.
И мне показалось, может быть и не совсем в тему, что пример с перемещением клипа за пределы сцены, вместо его удаления, видал такое в исходниках, схож по логике с загрузкой не существующего файла.
|
|
|
|
|
_iv
Модератор
|
|
@st@l@vist@ писал(а): | Меня напрягает логика при которой вместо того чтобы удалить объект отвечающий за поток я должен загружать в него пустышку. |
и меня напрягает. мне тоже хотелось бы иметь метод типа stopLoadSound();
но его нет.
следовательно нужно найти наиболее отвечающее ситуации решение.
удаление ссылок на объект Sound - точно не решение вопроса.
кстати, можно попробовать Sound.stop(); и затем attachSound("empty_sound"); или attachSound(null);
я не пробовал, если сработает, то вроде покрасивше получится.
|
|
|
|
|
@st@l@vist@
участник
|
|
Иван, вопрос 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
участник
|
|
Мда ребята вы тут наплодили себе проблем... loadSound(null); работает, я бы даже сказал пашет как волл. То что я выше написал "sound=null работает" я соврал, я даже так не пробовал Потому что это заведомо дурацкая идея, а то что вы тут ратуете за то, что объект надо удалять попахивает клиникой... У меня есть знакомый, у которого журналы были разложены по тематике и в алфавитном порядке, это ж ппц.
Не, я конечно тоже за логичный код (хоть я даже и не программист в душе ), но если уж приходится танцевать с бубном, тогда уж наверняка. А в нашем случае загрузка null в объект (который стримиться) наверняка убъет этот самый стрим как нефиг...
_________________ Это были те времена, когда мужчины были мужчинами и сами писали драйвера для своих устройств. © Линус Торвальдс
|
|
|
|
|
_iv
Модератор
|
|
@st@l@vist@ писал(а): | Иван, вопрос delete и существования ссылок - это отдельный вопрос, достаточно ясно описаный в хелпе. |
- да я вроде в курсе. но наличие описания в хелпе сделает ли это решение хорошим? избавит ли от недостатков? @st@l@vist@ писал(а): | Что касается второго примера, я не понял что в нем не так? |
- в том, что ты подразумеваешь исключительно свое влияние на проект, полное отсутствие импортированных классов третьих разработчиков или их тотальную проверку на отсутствие new Sound().
|
|
|
|
|
@st@l@vist@
участник
|
|
Я знаю, что ты в курсе, потому и кажется странным затрагивание этой проблемы. Ты часто плодишь ссылки на свои объекты, специально ссылочку в _global, _root, _flash и т д? Нет.
При желании можно испортить, переписать, удалить, и т д все. Всегда находятся умельцы, которые суют свои ручки, туда куда не нужно. AS в этом плане сильно уязвим. Инкапсулировать, в разумных пределах, вышеописанный стрим несложно, привязав его к какому то компоненту-контроллеру, сделав приватный объект sound и приватные методы открывающие и закрывающие поток.
Про new Sound() ты меня не услышал. Искать ошибки в отстраненном примере, применяя к нему требования для разработки серьезного проекта, не очень умно.
Мой же вопрос, относительно второго примера был лишь: "что в нем не работает?", хотя мне нечего тут отстаивать.
p.s.: Есть 100% работающий, для всех существующих FP, способ загрузки и удаления звукового потока, а так же контроль звука с 5-ой версии - конвератция MP3 (WAV) в SWF с sound stream на главном таймлане. И бесплатный софт клиенту для конвертации, онлайн конверторы, возможность самому сделать это (MING или exe)
|
|
|
|
|
@st@l@vist@
участник
|
|
Вот что меня мучает, только плз, не нужно искать потенциальные ошибки в отсутствии 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@
участник
|
|
Кстати, еще, если отстраниться от того, что я сам же и указал: 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 …
|
|
|
|
|
|
Страница 1 из 1 [ Сообщений: 28 ] |
Уровень доступа: Вы не можете начинать темы. Вы не можете отвечать на сообщения. Вы не можете редактировать свои сообщения. Вы не можете удалять свои сообщения. Вы не можете добавлять вложения.
|
|