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

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

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

Регистрация: Oct 2013
Сообщений: 126
По умолчанию Организация звукового оформления

Начал добавлять в игру звук.
1. Звук импортировал в IDE, присовил имя класса и опубликовал вместе с графикой в библиотеке swc;
2. В свойствах Document class Game объявляю статическую константу, ссылающуюся на класс звука:
Код:
package {
// импорты
public class Game extends Sprite {
//ЗВУКИ
public static const sCLICK:Sound = new ClickSound();
}
}
А дальше пошли проблемы. Хотел сделать отдельный класс со статической функцией проигрывания звука:
Код:
package rc {
import flash.media.Sound;
public class MySound {
// константе передаётся значение константы класса Game (=Main)
private const sCLICK:Sound = Game.sCLICK;

// функция для проигрывания звука (вызывается из любого места MySound.playSound('имя звука'))
public static function playSound(sound:String):void {
switch (sound) {
case 'click': sCLICK.play();break;
}}}
}
Но выдаёт ошибку "Access of undefined property sCLICK".

Пошёл другим путём:
3. В свойствах класса "комнаты" (чьи дети - объекты, которые должны при определённых условиях издавать звук (в данном случае имеется в виду меню с кнопками)) объявляю приватную константу, ссылающуюся на статическую константу главного класса:
Код:
package rooms {
// импорты
public class Menu extends Sprite {
//ЗВУКИ
private const sCLICK:Sound = Game.sCLICK;
4. В обработчике события нажатия на кнопку пишу перед действием функцию проигрывания звука, аргументом для которой является константа с нужным звуком:
Код:
// HIT BUTTON
private function hitButton(m:MouseEvent):void {
// звук
playSound(sCLICK);
// действие при нажатии на кнопку
...
};
5. А это сама функция проигрывания звука в этом же классе:
Код:
// Звук
private function playSound(s:Sound):void {s.play()}
В этом случае всё работает.

В связи с вышеизложенным пара вопросов:
1. Если ли удобный способ управления звуками через класс со статическими функциями?
2. На верном ли я пути, если делать всё, как во втором варианте? (т.е. ссылаться константами главного класса на классы звуков из библиотеки, а затем в каждой "комнате" брать для констант звуков значения соответствующих констант главного класса и проигрывать звуки через приватную функцию).

3. Или, может быть, где-то уже есть готовый простой менеджер звуков с учётом следующих требований?:
- в разных "комнатах" играет разная музыка;
- в заданные моменты проигрывается тот или иной звук;
- ограничение количества одновременно проигрываемых звуков;
- возможность глобального включения/выключения звуковых эффектов и музыки.
(я где-то встречал реализацию такого менеджера через синглтон, но там был спор по поводу целесообразности подхода)

Добавлено через 19 часов 26 минут
Разобрался и сделал по-другому. Уважаемые модераторы, тему можно закрывать

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

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

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


 


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


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