Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Странное поведение SoundTransform класса (http://www.flasher.ru/forum/showthread.php?t=123584)

Dimas_Art 05.04.2009 21:32

Странное поведение SoundTransform класса
 
Код AS3:

...
_channel = _snSound.play(0);
...
var volume:Number = 0.5;
trace(" set value = ", volume)
_channel.soundTransform.volume = volume;
trace(" apply value = ", _channel.soundTransform.volume)
 
// return
//  set value =  0.5
//  apply value =  1

Код AS3:

...
_channel = _snSound.play(0);
...
var volume:Number = 0.5;
trace(" set value = ", volume)
var soundTarnsform:SoundTransform = new SoundTransform(volume);
_channel.soundTransform = soundTarnsform;
trace(" apply value = ", _channel.soundTransform.volume)
 
// return
//  set value =  0.5
//  apply value =  0.5

Бред какой-то получается! Почему я напрямую не могу задать SoundChannel уровень звука??? Может кто-то объяснить? :confused:

Мечтатель 05.04.2009 21:41

Потому что в свойство soundTransform экземпляра класса SoundChannel Вы должны передать ссылку на экземпляр класса SoundTransform. Вот в последнем Вы и устанавливаете все необходимые настройки громкости и панорамирования.

Dimas_Art 05.04.2009 21:53

Хм.. странно! В классе SoundChannel в свойстве soundTransform не сохраняется разве ссылка?? Т.е. бред какой-то с установкой уровня звука! Если есть такое свойство, то оно автоматически должно применяться в не зависимости от чего-либо! Действительно, в Адобе курили что-то когда писали классы работы со звуком

Мечтатель 05.04.2009 22:07

Цитата:

Класс SoundChannel управляет звуком в приложении. Каждый звук, воспроизводимый в приложении Adobe® Flash®, назначается звуковому каналу, и приложение может иметь несколько звуковых каналов, которые микшируются вместе. Класс SoundChannel содержит метод stop(), свойства для отслеживания амплитуды (громкости) канала и свойство для настройки объекта SoundTransform для канала.
В документации черным по белому написано, что в классе содержится свойство soundTransform для настройки объекта SoundTransform, в которое мы передаем ссылку на экземпляр класса SoundTransform. При условии, что Вы используете задокументированные возможности работы со звуком в приложении с помощью API Flash'а - у Вас какие либо проблемы или баги возникают?)) Нет, если все делаете правильно. А обсуждение поведения классов, их логики и реализации тех или иных методов, явно, выходит за рамки обсуждаемой нами темы, как и обсуждение компитентности и профессионализма инженеров корпорации Adobe.

cleptoman 06.04.2009 01:04

аминь!.)

iNils 06.04.2009 01:59

Цитата:

Хм.. странно! В классе SoundChannel в свойстве soundTransform не сохраняется разве ссылка? Т.е. бред какой-то с установкой уровня звука! Если есть такое свойство, то оно автоматически должно применяться в не зависимости от чего-либо!
Да нет, сам звук меняется не в классе SoundTransform, а в SoundChannel, поэтому если бы вы использовали схему _channel.soundTransform.volume напрямую, то SoundTransform должен был бы сообщать об этом напрямую SoundChannel, то есть знать на кого он завязан, но ведь один SoundTransform может использоваться в разных SoundChannel, что порождало лишнею цепочку подписок и отписок на события изменений. Поэтому используется setter, который устанавливает значения громкости исходя из переданный значений SoundTransform.
Такая схема используется во многих классах.


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

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