Форум Flasher.ru

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

ZackMercury 23.01.2015 18:33

Простое решение вы сможете написать сами, если почерпнёте всю мудрость Колина Мука в его книге-полусправочнике.
Тем временем, в книге одновременно пишется образец построения приложения, правильной иерархии и соблюдение всех конвенций.

Думаю, нет на этом форуме опытных людей, кто не читал Мука.
Если будете бегать от своего кривого кода к форуму и обратно в поисках решения - это не прибавит вам много знаний и опыта.
Учитесь решать проблемы и задачи своими силами.

caseyryan 23.01.2015 19:08

Как бы, я наверное буду кэпом, но:
Код AS3:

import flash.media.Sound;
import flash.media.SoundChannel;
 
var devochkaPrivet:Sound = new devPrivet;
var malchikPrivet:Sound = new malPrivet;
var soundChannel:SoundChannel = null;
 
  if (soundChannel != null) soundChannel.stop(); // сначала тормозим речь, если кто-то в данный момент говорит
if (currentPersone == девочка) {
 
  soundChannel = devochkaPrivet.play();
} else {
  soundChannel = malchikPrivet.play();
}

п.с. Не надо использовать названия на кириллице. Это как минимум не удобно, при написании кода. Да и смотрится такой код ужасно.
К вот этому совету http://www.flasher.ru/forum/showpost...40&postcount=9 очень стоит прислушаться, если хотите дальше заниматься программированием

Nikem79 25.01.2015 10:55

Цитата:

Простое решение вы сможете написать сами, если почерпнёте всю мудрость Колина Мука в его книге-полусправочнике.
Тем временем, в книге одновременно пишется образец построения приложения, правильной иерархии и соблюдение всех конвенций.
спасибо, согласен со всем

caseyryan Благодарю за вариант, но хотелось обращаться к звуку из функции, без проверок. Представьте, если звуков будет большой массив?.. А обращаться к звукам нужно будет много...

Wolsh 25.01.2015 18:58

Если будет "большой массив", то надо пользоваться массивом или справочником, как разумно советовал olexandr. Иначе у Вас будет бесконечный список переменных, по сути и переменными то не являющихся, а просто хранящих ссылки на каждый конкретный класс звука. Они не нужны в таком "поименном" виде, у Вас уже есть "поименные" классы. Соберите их в массив или справочники. Допустим
Код AS3:

var _helloSounds:Dictionary = new Dictionary();
_helloSounds[boyMC] = BoyHello; // link to class
_helloSounds[girlMC] = GirlHello; // link to class
_helloSounds[momMC] = MomHello; // link to class

и потом, когда нажата кнопка говорить Привет, вытаскиваете звук. Текущий актер нам уже известен
Код AS3:

var sound:Sound = new (_helloSounds[_currentActer] as Class)() //?/ as Sound;
_voiceChannel = sound.play();

Вариантов организации справочника много, можно делать по-разному. Например, может быть один справочник всех звуков, у него ключи — клипы актеров, а по ключам хранятся массивы или векторы звуков для данного актера, звуки в одинаковом порядке.
Код AS3:

var _allSounds:Dictionary = new Dictionary();
 _allSounds[boyMC] = [BoyMMM, BoyHello, BoyWTF, BoyGoodBy]; // ссылки на классы Звуков
 _allSounds[girlMC] = [GirlMMM, GirlHello, GirlWTF, GirlGoodBy]; // ссылки на классы Звуков

Тогда кнопка "говорить привет" будет вызывать метод "говорить" и передавать ему номер реплики
Код AS3:

talk(1);

Код AS3:

private function talk(replicCount:int):void
{
        var sound:Sound = new (_allSounds[_currentActer][replicCount] as Class)();
        _voiceChannel = sound.play();
}



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

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