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

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

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

Регистрация: Aug 2002
Сообщений: 51
По умолчанию Звук из функции - управление

Есть такой код, который совершенно корректно запускает звук с эффектом возрастания (Fade OUT). После этого необходимо дальше управлять этим звуком, что и не получается. То есть trace(lp_sound); выводит undefined. Как так может быть?

Код:
function loopStart(loop:String, rate:Number) {
	var lp_sound:Sound = new Sound();
	lp_sound.attachSound(loop);
	lp_sound.start(0, 99);
	lp_sound.setVolume(0);
	this.onEnterFrame = function() {
		so = lp_sound;
		newVolume = so.getVolume()+rate;
		if (newVolume<100) {
			so.setVolume(newVolume);
		} else {
			so.setVolume(100);
			delete this.onEnterFrame;
		}
	}
}

loopStart("loop",15);
trace(lp_sound); // Выводит Undefined!!!!

Старый 27.02.2007, 21:15
this.create вне форума Посмотреть профиль Отправить личное сообщение для this.create Найти все сообщения от this.create
  № 2  
Ответить с цитированием
this.create

Регистрация: Feb 2007
Сообщений: 264
Ссылка на объект класса Sound уничтожается после выполнения функции (особенность области видимости переменных). Создайте внешнюю перемнную и присвойте ей ссылку на объект класса Sound.
Код:
function loopStart(loop:String, rate:Number) {
	lp_sound = new Sound();
	lp_sound.attachSound(loop);
	lp_sound.start(0, 99);
	lp_sound.setVolume(0);
	this.onEnterFrame = function() {
		so = lp_sound;
		newVolume = so.getVolume()+rate;
		if (newVolume<100) {
			so.setVolume(newVolume);
		} else {
			so.setVolume(100);
			delete this.onEnterFrame;
		}
	}
}
var lp_sound:Sound;
loopStart("loop",15);
trace(lp_sound);
Примерно так.


Последний раз редактировалось this.create; 27.02.2007 в 21:19.
Создать новую тему Ответ Часовой пояс GMT +4, время: 10:56.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

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

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


 


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


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