[30]: Звуки, управляемые через AS

Приветствую вас, друзья, в новом, и, наверное, последнем уроке по основам разработки игр в action script 3.0 – Звук, управляемый через Action Script.

Каким был всё таки замечательным AS 2.0. Ребята из Macromedia делали всё просто.
В третьем скрипте всё через … экватор :D Давайте перейдём собственно к теме)

Для того чтобы управлять звуком из библиотеки, нам нужно:
• В свойствах звука установить Export for AS,
• Задать ему какое-либо имя
• Непосредственно в коде игры создать переменную типа звук (Sound)

Дальше мы можем только воспроизвести звук. (О_о )
Для того чтобы, чтобы изменить настройки, такие как громкость, или панорама, нужно создать звуковой трансформер.
Для того чтобы тормознуть воспроизведение, нужно создать канал звука, в который нужно запихнуть воспроизведенный звук.

Допустим пример ниже:

• Тут мы создаём переменную song звукового типа, и назначаем ей библиотечный звук с именем muzika.
• Далее мы создаем трансформатор музыки trans, чтобы управлять громкостью (volume) и панорамой (pan) звука. Там есть и другие параметры, но кому они нужны вообще?
• Далее мы запускаем песню командой “play()“. Первая цифра 5000 – начинаем воспроизведение с 5000-ой миллисекунды песни, вторая цифра – 1 – количество повторов, третья – trans – наши  настройки громкости и панорамы.
• Пихаем song.play в канал “kanal” чтобы была возможность остановить музыку.
Вот в принципе и всё.

Но если нам не нужны никакие параметры, а нужно просто воспроизвести звук, то лучше это делать с помощью метода помещения звука в кадры! ;)

Этот же метод удобен для управления звуком, допустим если мы хотим, чтобы когда шар бьётся о стену с большой скоростью – был сильный звук, а если со слабой – тихий.
Или же, если персонаж в левой части экрана -чтобы звуки были в левом динамике больше.
Или при нажатии кнопки “вперед”, чтобы увеличивался звук машины в игре.
Тогда для этих целей используется как раз этот метод управления звуком.

Пример реализации изменения звука в зависимости от скорости, представлен в видеоуроке :)

Исходник: yadi.sk/d/JP30UFqjBUtds

Код ActionScript 3.0 из урока:

Всё подробно рассказано в видео :) Если будут какие-либо вопросы, пишите в комментариях к видео. Надеюсь, данный урок по реализации скорости в action script 3.0 в программе adobe flash, поможет вам в разработке игр. :)

Комментарии
  1. Alexandrn

    Звуки во флеш – Это классно!
    Но как поставить фоновую музыки, чтобы она просто себе играла, а при скачках из кадров в кадры не начанала воспроизводиться снова и снова, то есть одна на другую не накладывалась. И как зациклить мелодию, когда она полностью один раз отыграет?

    • admin

      Далее мы запускаем песню командой “play()“. Первая цифра 5000 – начинаем воспроизведение с 5000-ой миллисекунды песни, вторая цифра – 1 – количество повторов, третья – trans – наши настройки громкости и панорамы.

      Чтобы не скакала, не надо её снова воспроизводить в другом кадре. Либо добавь условие, если музыка включена, то больше не включать.

      • Alexandrn

        Привет, Женя!!!
        Не прошло и года (точнее прошло уже больше :) ), как я возвращаюсь к вопросу звуков во флеше и наконец-то приступаю к внедрению музыки в игру. И сразу возникает куча ошибок, накладок и не стыковок. Так обрадовался, что как просто оказывается с кода запускать и останавливать треки, но пойдя дальше- началось.
        Хотел сделать так, чтоб из разных клипов на сцене можно было управлять клипом с музыкой. К примеру шла музыка в уровне, резко геймовер и на заставке овера уже другая играет, а потом снова рестарт и опять первая.
        Вот исходник
        https://yadi.sk/d/nfNXUEFVhWdz5
        Вопросы: 1) Так и не понял, как правильно создать условие для не повторения, если уже играет мелодия.
        2) Можно ли ставить мелодию на паузу, а не только полностью останавливать?
        3) Запускаю сам трек командой song.play(0,2, trans);
        а останавливаю сам канал kanal.stop(); Скорее всего это не совсем правильно!?
        4) Вопрос не совсем по теме музыки, но рядом. Как подгружать (связывать с флешкой) внешние файлы для игры (музыка, картинки), чтоб не забивать весом и нагрузкой файл, а рядом в одной папке лежали.
        Помоги, Женя, пожалуйста. Понял я, что запутался совсем ))

        • admin

          Привет, Александр :)
          Не уловил твоей радости по поводу управления через код. Если бы ты знал as2.0, вот тогда бы я понял радость управления звуком через код :D
          Теперь по твоей флешке. Зачем развел такой бардак? Если ты управляешь звуками через главную сцену, зачем тогда вообще какое-то управление звуками через код? Проще по прошлому уроку. Всё что тебе нужно, так это вставить звуки в кадры LaRotta, Morning и т.д. не нужен там код. Короче как в уроке 29. Если же хочешь управлять через код, то вообще клип music не нужен!
          Вопросы:
          1) Условие для не повторения? Что это? Типа при старте начала играть музыка, в 10 кадре ещё одна, а при возврате в 1 кадр поверх ещё раз играет первая? Пф. Так надо написать скрипт для остановки музыки, если она играет.
          2) Можно и на паузу. Если звук программный – сохраняешь значение времени. kanal:SoundChannel = song.play(0,2, trans); Это как раз первый параметр из play. А потом при запуске(снятии с паузы) напишешь kanal = song.play(сохраненное_время,2, trans);
          Если звук не программный, то сохраняешь номер активного кадра currentFrame. А при отжатии паузы, стартуешь оттуда musicBox.gotoAndPlay(сохраненный_кадр).
          3) Не поверишь… Я сам не понимаю этого дебилизма as3.0… В ас2.0 было просто и логично. А тут именно так.
          4) Подгружать не помню даже. Что-то связанное с url. Я этим не занимаюсь и смысла особого не вижу. Разве что флеш сам быстрее откроется. При компиляции приложения всё равно ж во флешку всё запихнётся. Как по мне пустая трата времени. Хотя я не ПРО в этой теме :D Почти все пишут в классах, а сам флеш используют только для рисования. Я сейчас изучаю unity и там C# и всё на классах. Но это как плюс, так и минус одновременно. Не понимаешь что за чем работает при одинаковости объектов.. И архитектура не фонтан..

          К примеру шла музыка в уровне, резко геймовер и на заставке овера уже другая играет, а потом снова рестарт и опять первая.
          Тут ещё зависит от построения игры. Вообще просто, если геймовер, то останавливаешь канал с той песней и запускаешь другую. При рестарте – в начале кода лучше написать остановку вообще всех звуков. SoundMixer.stopAll().

  2. Alexandrn

    Спасибо тебе человеческое, Жень, в том и радость, что хоть что-то получается с кодом, ну а опыт приходит с годами, методом проб и ошибок (вода камень точет и ты ды и ты пы :) ).
    Если единственное преимущество as 3.0 над 2.0 это 3d объекты, то пожалую 2.0 лучше, хотя я уже как-то постепенно привык к выпендрёжам 3.0.
    Когда я поставлю треки в кадры, смогу ли управлять также громкостью и временем запуска?
    SoundMixer.stopAll() это собственно то, о чём я так мечтал, видел же в уроках, но вылетело из головы.
    На счёт подгрузки внешних файлов, я предполагал, что быстрее будет компилировать флешку, а то по несколько минут ждать печально как-то. А раз бестолку, тогда остаётся только уменьшение веса самого фла документа.

    Оо, unity и там C# изучаешь, вот молодец, а я пока и заморачиваться не берусь, хотя по C# было задание в универе что-то делать, я поковырялся в проге и завис, отложил в долгий ящик. На флешке то игру второй год пошёл как делаю, и всё ещё никак не доделаю. Когда её начал, думал за две недели что-то слеплю и напоказ, а оно как закрутилось. Да, да, помню твой урок :) , где всё лишнее из игры убрать, та я и так многое поубирал, и кол-во уровней сократил в 1,5 раза, а работы всё не убавляется. Не, конечно, были моменты, когда я её забрасывал и неделями делал другие игры, да и занимался в среднем по 2-3 часа в сутки (а хочется 6-8).
    А ты свой дудлик доделал? :)

    И ещё пара вопросов:
    можно ли программно во флеше проиграть отдельный кусочек клипа (то есть задать ему: проиграй мне клип Васю с 5 кадра по 35 кадр, а стопов в клипе Вася нет!)?
    можно ли программно замедлять и ускорять проигрывание клипов и запускать ползунок таймлайна в обратную сторону?

    • admin

      У as3.0 преимущество в легкой реализации классов. Можно создавать библиотеки и легко подключать к любым проектам. Типа движки, фреймворки, скрипты управления звуком и т.д. На ас2.0 это было … не припомню чтобы это вообще было. Наверно надо было копировать кусок кода и вставлять его в свой код. А в ас3.0 написал одну строчку import и подключаешь сразу целую архитектуру со скриптами. Вот основное преимущество, а не 3d. Но многих тупые вещей всё равно мне не понять. Тот же дебилизм 0.2 + 0.2 = 0.4, а 0.4 + 0.2 = 0.600000000000000001. в ас2.0 такого не было. Я когда дудл делал, столкнулся с этим. Думаешь написать условие if (x==0.6) а ничего не будет работать, потому что там не 0.6.

      Про треки в кадрах. Громкостью управлять не сможешь. Разве что общей громкостью, скорее всего, через SoundMixer. Временем управлять косвенно сможешь, если у тебя звук в кадре загружен в положение Stream, а не Start, и ты будешь выбирать номер кадра. Зная Fps можно рассчитать и какой кадр какому времени соответствует. Только зачем всё это? Лучше нарезать звуки на нужный размер, формат, время. Так же, тот файл на я.диске весил аж 56 мегабайт. и там всего 4 песни. это ооооочень много! для игр хватает 96 kbps, 128 вообще верх. для звуков ещё меньше. и лишнего тоже ничего быть не должно. Не знаю как во флеше формат влияет на оптимизацию. В Юнити wav работает быстрее и не грузит процессор, а mp3 весит гораздо меньше, но грузит процессор. Обычно звуки делают wav, т.к. их много и часто вызываются и они короткие, то это сохранит ресурсы производительности. А фоном пуская mp3 песни, чтобы занимала меньше размера. Как на флеше обстоят дела – не знаю. :)

      А юнити довольно удобен. С# там упрощенный. Собирать игры легко. Они будут работать. НО!!! это будут ооочень не оптимизированные игры! Вот по уроку на ютюбе собрал Flappy bird. Потом читаю хабрахабр, офф. докуменцатию, форумы, и так куча всего про то, что делать не нужно, что влияет на физику, загрузку процессора и получается всё игра собрана неправильно. Хоть и работает. Но самое обидное тут даже не это. Я до сих пор не пойму как научить юнити работать плавно. Ни в компе, ни в телефоне ровно ничего не работает. есть подлагивания раз в секунду, или чаще, или реже. хотя фпс может быть и 30 и 60 и 200 и 3000. один фиг. причем лагает что просто фон, если его тупо передвигать, что физ объекты с применением силы, которые лагают ещё больше. Как схитрить с физ. объектами я уже придумал, просто скрыть из виду и внешне двигать копию изображения. А вот как просто передвигать что-то по экрану плавно не знаю. 2 недели уже читаю/смотрю всё что могу найти.
      Такое ощущение что юнити для игр раннеров не подходит. Причем что меня удивило, официальные примеры пипец какие лаганутые!…

      Про дудлик. Не доделывал. :) Смысла как-то нет. Это был как очередной урок. Но меня расстроили лаги. Те же что и в юнити( Но, после обновлений флеш плеера, тот же файл дудла работает всё более плавно. Хочу попробовать его портануть на андроид и посмотреть что будет.

      И ещё пара ответов:
      Можно для запуска с пятого. vasya.gotoAndPlay(5); А для стопа в ентерфрейме написать if (vasya.currentFrame == 35) { vasya.stop(); } Опять же звук должен быть Stream.
      Про замедления ничего сказать не могу. Можно менять fps самой флешки, а вот отдельных клипов без понятия. О_о Вот звук, скорее всего, можно изменить через SoundTransform или SoundMixer.
      Ползунок таймлайна в обратную можно. Код будет примерно такой. В начале, к примеру, ставишь i=40;
      А в энтерфрейм пишешь такой такой код
      i – -;
      clip.gotoAndStop(i);
      И каждый кадр clip будет менять активный кадр на предыдущий. 39,38,37 и т.д. Конечно, ещё надо условий добавить, типа – что делать если кадр уже 1, и другие тонкости.

  3. Alexandrn

    Ооо, Жень, спасибо тебе за такой подробный и интересный ответ рассказ!!!

    Мои скромный знания пополнятся очередной порцией доступно-разжеванной (для такого чайника как я) ценной информацией в программировании. Хотя всё больше убеждаюсь, что до программирования мне ещё ой как далеко (таких не берут в смаконавты, то есть в команду разрабов )) ), может конкретно порисовать и поанимировать что-то да выйдет, хотя если мастер глянет со стороны, то и художник я самоделкин. Так разобрал анимацию с костяшками, капризная до ..опы, то части разлетаются по всему экрану, как после взрыва, то каким то чудесным образом запоминаются положения скелетов, которые уже поудалял, но всё же я её укротил.
    А у тебя не было такого во флеше, когда мувики, которые не используешь на сцене (они лежат только в файле в библиотеке) тупо просто из них исчезают все объекты, остаётся только пустой слой в мувике. Приходится накидывать мувы на сцену в не подключаемый кадр, как в клодовку, в которую не будешь заглядывать. Вот в таком случае не понятно, как работать из классов. Возможно, что такая хрень только в 5 флеше творится.
    А не приходилось ли, Жень, тебе делать полупрозачную панель, а за ней кнопку. Но выходит так, что кнопка не активна, так как панель её заслоняет собой, хоть ты ей 1% альфы задашь. И требуется, что бы кнопка всё же была за панелью, но при этом активировалась. В играх видел, такое возможно. Обманка с прозрачной копией кнопки тут не проходит, потому, как кнопка совершает хаотичекие движения по экрану.
    Ещё раз 1000 и 1 спасибо!!! :)

    • admin

      https://yadi.sk/d/sDmyUhYrhbAj4
      Я сам в себе убеждаюсь, что мне до программирования далеко :D Наверно мне не стать true-программистом, пока я не полюблю классовую систему написания кода :D

      “мувики, которые не используешь на сцене (они лежат только в файле в библиотеке) тупо просто из них исчезают все объекты, остаётся только пустой слой в мувике.”

      Никогда такого не было!:) Возможно в настройках экспорта или самого флеша у тебя стоит настройка, что использовать только, то что загружено изначально. Не знаю. Других вариантов даже нет. У меня во всех флешах всегда работало правильно.

      Полупрозрачную панель бывало делал, но реализовать не мог) Ухищрялся делать так: Поверх всего был клип прозрачный, который будет кнопка. А под альфа-панелью отдельный клип с картинками. Просто они синхронно двигаются) А сейчас методом перебора параметров подобрал нужную команду, чтобы работало :D Вот она:
      alfapanel.mouseEnabled = false;

      Кстати, портанул на андроид дудла в разным вариантах :) Если выбрать режим рендеринга GPU, то работает вполне гладко :) Даже без растровой графики :) Если поставить галки chacheAsBitmap, то ещё, наверно, лучше, но сложно отследить. Учитывая, что я прочитал про оптимизацию в юнити, часть этого можно применить и во флеше. В любом случае мне больше нравится работа флеша в телефоне, чем работа юнити. О_о Ещё, конечно, посмешила меня оф. документация юнити – говорят, для лучшей оптимизации – надо самому писать физ. движок xD и шейдеры самому, и всё самому. На..на тогда, спрашивается, нужен этот юнити. :) Главная фишка, конечно, кроссплатформенность.

  4. Alexandrn

    Именно она! Всего одна маленькая строчка кода и жизнь становится лучше )).
    Заработало, но в моём примере не сразу, долго сидел шаманил. Не чувствует мышь кнопки и всё тут. На отдельном примере получилось, а в игре что-то как-то путано. Потом разобрался, в конкретном муви кнопка под альфапанелью работает, да. Но выйдя на большую сцену под клипом, внутри которого альфапанель кнопка не прощупывалась, Поставил эту строку кода и на родителя и внутри родителя на альфапанель, вот тогда заработало. Уффф.. Я так смотрю, на нахождение и устранение багов уходит львиная доля разработки игр.
    Жень, а что дают конкретно эти строчки в начале
    import flash.events.Event;
    import flash.display.MovieClip;
    import flash.events.MouseEvent;
    import flash.display.SimpleButton;
    , если что с ними, что без них работает одинаково? Или не одинаково?
    Дудлик портанул!? Недоделанный? Портировал на юнити, эире, как это, сложно портировать вообще? Код переделывается чисто орфографически под платформу или ещё и добавлять чего надо?
    Жаль что нет нормальных флеш плееров на разные платформы телефонов, а то работало б всё без портаций.

    • admin

      А ты как хотел, баги они такие :D Я ещё много времени трачу на тестирование. Пытаешься залезь во все места в игре и найти возможные “дыры”.
      import flash. конкретно дают подсветку кода. Если у нас есть переменная типа var clip:MovieClip; и мы пишем “clip.” , то у нас выпадет меню возможных вариантов свойств или функций для этого типа переменной. Если удалить строчку импорта, то вариантов никаких не будет, но можно самому написать по памяти. Влияет ли как-то удаление этих строк при компиляция я не знаю. Приложение будет работать и без них. Но помню как только вышел новый as3.0 и книга Колина Мука, то без строчки импорта вообще ничего не работало. И нужно было сначала писать её, чтобы потом писать всё остальное. Это вообще была огромная ..па, потому что фиг его знает что нужно загрузить, чтобы управлять движением, событием клавиатуры и т.д. Хоть сейчас сделали нормально, пишешь код и импорты сами пишутся. Но и без них работает. Я думаю флеш сам их дописывает, исходя из кода.

      Дудл портанул какой был) Портировал через Air. На самом деле это просто оказалось. В самом флеше выход ставишь не Flash Player 11.4, а AIR 3.4 for Android. и настраиваешь параметры. Я по этому видео сделал: https://www.youtube.com/watch?v=2yJeilj7T9E

      Но я не переделывал управление на тачскрин, поэтому дудл просто прыгает. Кнопки меню забитые на мышь, работают и на тач, даже переделывать не надо. Ну, и отображение видимой области не такое как в исходнике. Надо писать код для всех разрешений экранов. Но для меня это не суть, я хотел посмотреть как плавно работает игра на андроиде. Хотя не факт, что этот способ лучше, чем писать на самом AIR. Там огромный код просто выйдет.

      Лучше делать игру сразу правильно:
      http://gamespoweredby.com/blog/2013/12/recommendations-for-adobe-air-mobile-developers/
      http://www.youtube.com/watch?v=DWpy4BpoU0o
      http://www.youtube.com/user/flashgamm/

      Потерял ссылку на презентацию с разрешениями экранов и портированием :(

  5. Alexandrn

    “Я ещё много времени трачу на тестирование. Пытаешься залезь во все места в игре и найти возможные “дыры”.”
    И я тоже так делаю, ищу эти “бреши” и так похоже ещё долго искать, потому как игру сделал с нелинейным прохождением. И, даже, когда кажется что проверил уже всё на 100%, ошибки и недоделки продолжают выявляться.
    За ссылки спасибо, Женя!!! Очень познавательно. А про портирование видео к сожалению многое не ясно было, потому как на турецком парень говорит, (хоть и всё показывает) :)

  6. Alexandrn

    Жень, а у меня вся игра на мыши, значит без проблем должно портануться?
    А на чём потом проверить порт на андроид можно, есть какой-то сайт для пробы?

    • admin

      Не знаю насчёт проблем портации. У меня была только 1 проблема. У меня к дудлу был подключен профайлер отдельным классом. Чтобы отслеживать fps. И при публикации приложения .apk он выдавал ошибку из-за этого. Когда закомментировал строчку с подключением профайлера, то всё стало публиковаться замечательно. То ли AIR не поддерживает классовую структуру, то ли ещё что. Странно на самом деле. Я находил статьи где портирование занимает тонну сложного кода! А я портировал вообще ничего не делая :D Проверить можно на любом телефоне с Андроидом :) Во флеше даже есть встроенный эмулятор андроида, но я не разбирался как он работает.
      ВОт дудл. https://yadi.sk/d/vYFRmWdMhe7pB Можешь скачать на телефон, установить и посмотреть как он у тебя будет работать. :) В принципе могу завтра сделать и управление дудлом. Если кнопки заскриптованные на мышь, работают точно так же на тач, то нужно всего лишь в игре сделать 2 прозрачные кнопки. Левая половина экрана (кнопка) при нажатии будет двигать дудлика влево, а правая – вправо :) Кстати, да, может только у меня такой умный телефон, что нажатие мышки равносильно тачу. Надо бы и на других устройствах с андроидом смотреть. Но у меня только один телефон есть.

  7. Alexandrn

    Дудлик ставится только на РУТированый андроид? У меня к сож. на телефоне рута нет. ):
    Женя, а видео с игр какой прогой пишешь? Что-то у меня фрепс перестал вообще включаться.

  8. admin

    У меня какой был андроид на такой и ставил) может он и рутированный. В общем, через диспетчер файлов открывал файл и устанавливал)

    Видео пишу через прогу oCam Screen Recorder 13.0. Очень классная :) Не знаю пишет ли она полноэкранные игры…

  9. Alexandrn

    Ага, поставил дудлика на тел. через File Commander. Кнопки в меню все работают, а вот в самой игре- нет. Герой просто сам прыгает вверх, 14000 очков набрал и выключил пока :) Модель телефона Сони икспериа.

    • admin

      во, отлично)) Кнопки в меню как раз сделаны были на клик мыши) А управление в игре на стрелки клавиатуры) Поэтому они и не работают, я специально расположил плиты рандомно в центре, чтобы дудл всё время прыгал вверх и можно было отследить плавность приложения :) Вот если переделать управление на мышку и написать код для изменения отображаемой области для каждого разрешения экрана, то вообще будет прекрасно :) ) Конечно, ещё надо правильно спланировать эти области видимости. На эту вещь я и потерял ссылку :( Надо поискать в ранних сохранениях закладок.

  10. Alexandrn

    Но музыку включить не удаётся и регулировать громкость ни туда, ни сюда не получается. Удаётся выбрать любого др. персонажа. А какое разрешение экрана в дудле? Переменная счётчика считает пройденный путь? По факту к чему прилеплена она, когда плиты опустились на столько-то, то плюсуем стоко-то, а?! :)

    • admin

      Музыки там и не было :D Я могу двигать регулятор, но на него сложно попасть пальцем, т.к. маленький. Изначально во флеше разрешение 380х500. У меня на телефоне ширина остаётся, а по высоте добавляет невидимые области. Фактически на телефоне 380х700. Выровнять поле со счетчиком через table.y = 0 не удалось. Переменная счетчика считает путь, всё правильно.
      Вот новый вариант https://yadi.sk/d/zKw82jKbhgCGe
      Добавил музыку. Регулятор сделал большего размера (невидимый круг внутри). Сделал управление дудлом через MOUSE_EVENT. и задатки выстрела через кнопку fire. Без вылета пулек.

      Выводы: 1. На телефоне очень тормозят кнопки! У меня была кнопка fire в виде Button, и при нажатии на неё в телефоне начинала лагать игра. Как только меняешь на клип, то всё гладко. Итого: кнопки нужно делать через клипы.
      2. Как изменить разрешение экрана в ходе флешки вот это вопрос. Или хотя бы подстроить свои картинки под экран телефона. Чтобы всё адекватно отображалось на всех разрешениях. Хотел сказать, что в юнити проще, но.. Если графика не пиксельная, то гораздо проще :) А с пиксельной много возни и в юнити.
      3. MOUSE_EVENT не лучший вариант, потому что не работает мультитач. Т.е. Если нажать на кнопку fire и держать и попробовать сдвинуть дудла, то он не сдвинется с места. Т.е. пока не отпустишь кнопку выстрела, ничего не сделаешь. Оно и логично, курсор мыши всё таки один) Если в игре не нужен мультитач, то и мышка сойдёт :)
      4. Нужно писать код для сворачивания игры. Т.к. если свернуть приложение, то музыка играет дальше :D

    • admin

      Нашёл ту ссылку!!!!!! :) )))) Вот:
      http://www.slideshare.net/IT_Share/citrus-game-engine

      И ещё 2 классных нашёл по теме мобильной)
      http://www.slideshare.net/flashgamm/zeptolab-14430557?next_slideshow=1
      http://www.slideshare.net/Apps4All/ss-20009701?next_slideshow=2

      Вообще, по мобильной тематике дофига всего есть :)

  11. Alexandrn

    Ага, попробовал эту последнюю версию Дудлика. Управление героем работает, кнопка файер тоже работает, музычка играет, звук регулируется. Когда герой упал где-то на нижние платформы внизу, но уже в невидимой зоне, игра не закончилась, но и героя вернуть назад не получилось, потому как не видно. А так прикольно :)
    А я делаю игру в разрешении экрана 720х480 .
    Ох, если с кнопками баттон такая беда на андройде, то это ппц, а у меня всё в баттонах, и переделка займёт ещё пол года, вот блин, знал бы раньше. Не зря ты исходник с кнопками показал, как правильно сделать замену баттону клипом и с активацией руки. :(
    По ссылочкам прошёлся, почитал, Жень :) ) А что, действительно стоит начать показывать игру как можно большому кол-ву народу, даже если она ещё далека до завершения?

    • admin

      “Когда герой упал где-то на нижние платформы внизу, но уже в невидимой зоне, игра не закончилась, но и героя вернуть назад не получилось, потому как не видно.”

      Всё правильно, я сделал чтобы плиты ниже экрана были с запасом.:) И игра не закончится даже если он улетит вниз. Этот момент я не программировал даже)
      Про кнопки. Возможно, если событие будет через тач или мультитач, то кнопка будет работать нормально. А может нет..

      Про стоит показывать не знаю. Я думаю так, если игра почти клон другой игры, то можно. По пути создания будут говорить что делаешь не так, где красиво, где нет, что подправить и т.д. Но это может так же и затормозить процесс и растянуть ещё больше. В основном это для привлечения аудитории игры сразу в момент разработки. Как только игра будет готова у тебя уже будет народ, который захочет поиграть. :) А если игра новая, то есть вероятность, что идею просто своруют и сделают быстрее. И потом фиг докажешь в суде, что она твоя.

      Смотрел видос про авторские дела в играх. Офигел, но даже расположение кнопок меню!!!!!!!!!! можно засудить. маразм блин..

      Вот видос про клонирование игр:
      http://www.youtube.com/watch?v=t6evwI_q6EI

  12. Alexandrn

    Ну воооот, не было печали :) Мало- создать игру, главное её защитить!!!
    Что ж, пожалуй ты прав, доделаю и сразу на продажу, а там посмотрим, если кого зацепит, заберут без претензий. Моя игра вроде как не клон, персонажи мои, а вот принципы действия позаимствованы из разных игр и жанров. Такая смесь получается из файтинга, экшена, квеста, QTE и головоломки.

  13. Влад

    Здравствуйте, у меня проблемма . Сделал все как на видео, ток звук повторяется эхом.
    Код: var timerEat=0;
    var music:Sound= new s1();
    var trans:SoundTransform = new SoundTransform(1,0);

    stage.addEventListener(Event.ENTER_FRAME,goo);
    function goo(event:Event)
    {
    timerEat++;
    if (timerEat>=15)
    {
    music.play(0,0,trans);
    }
    }
    Почему так происходит ???

    • admin

      Здравствуй:) По твоему коду так и должно быть: Первый раз музыка воспроизводится в 15 кадр, потом такая же в 16, 17, 18 и т.д. Вот и получается бесконечное эхо. Что ты хотел сделать этим кодом?

  14. Влад

    Прост когда timerEat>= 15 должен был проигрываться звук 1 раз. Все спасибо , уже разобрался, понял свою ошибку.

  15. Тимка

    почему у меня жалуется на var song:Sound = new music(); ?
    у меня в первом кадре прелоадер, а всё остальное во 2 кадре, и, почему-то, даже в 1 кадре жалуется:
    Монтажный кадр 1, слой “Слой 1″, кадр 2, строка 201 1180: Вызов предположительно неопределенного метода music.

    • admin

      И правильно делает. А в каком месте по твоему тебе надо написать, что у тебя ошибка в коде?
      Насколько видно из “1180: Вызов предположительно неопределенного метода music.” Скорее всего, ты пытаешься подключить песню по названию, а не по связыванию с AS3.0. Либо написал с ошибкой, либо не там где надо.
      Есть вариант кривого прелоадера, и надо указывать загрузку ас3 во 2 кадр, а не первый.

      • Тимка

        я понял в чём дело, я решил указать класс этой музыке не music, а Music(т.е. с большой буквы) и, вроде всё получилось

  16. Alexandrn

    Привет, Женя! С наступившим Новым Годом!
    Вопрос по звукам. Делаю кнопку включения/отключения звука. По сути понимаю, что нужно управлять звуковым каналом trans.volume, это когда мелодия продолжает играть, а сам звук выводим в ноль. А потом снова в нужное звучание.
    Но не могу разобрать, как же управлять каналом. Он то не реагирует на изменения, то не включает звук вообще. Пытался из этого твоего урока чисто убрать мячик и оставить мелодию и кнопку, не получается. Помоги, пожалуйста.
    П.с. Выложил игру на фгл(спустя полтора годы работы :) ), через десять дней получил оценки от сайта: все шестерки и одна 5- за сложное управление. Хотя вся игра на мышке. И игра, в общем-то квест. Допущена для просмотра спонсоров. Ну и с такими оценками шансы маленькие. Буду дорабатывать управление и графику, вставлять подсказки и кнопку выкл. звука. Пока висит там, по нику моему можно узнать какая :)

    • admin

      Привет, Александр :) Благодарю, и тебя с наступившим новым годом :)
      Про “Делаю кнопку включения/отключения звука”. А зачем тебе играть мелодию дальше если звука нет?
      Если тебе надо убрать сразу все звуки, то на то есть команда SoundMixer.stopAll();

      Про trans.volume правильно, но, зная этот идиотский ас3.0, скорее всего сначала надо очистить канал, а потом снова создавать kanal:SoundChannel = song.play(5000,1, trans);, возможно с использованием var.
      Надеюсь к этом времени ты уже разобрался со звуком:)

      П.с. Ты молодец, на фгл загнал уже игру :)

  17. Alexandrn

    Спасибо,! Теперь уже со старым новым годом, Жень :)
    SoundMixer.stopAll(); останавливает все звуки, но при возвращении назад мелодии играют снова, хотя. Попробую по Колину Муку приостановку звуков как пауза. Это то, что ты мне раньше показывал про позицию по времени, только я тогда не врубился, что там вставлять. А что фгл?! Спонсоров, что интересуют флешки осталось единицы, а портировать на андройд нужно уйму времени для переделок. Уже хочется приступить к разработке новой игры сразу с учетом под дроид.

  18. Alexandrn

    Я поначалу мелодии цеплял на переменные, а короткие звуки – в кадры, что приводило в некоторых местах некоторых уровней к проигрыванию всех коротких звуков сразу. Я поменял звуки из кадров на переменные, проблема не исчезла. Лишь только когда я удалил сами звуки и загрузил по новой, то все получилось.
    Надежда была продать игру и создать портфолио из удачных работ, чтоб не стыдно было попроситься в команду разрабов. Я бы мог к примеру предлагать концепцию игры и делать графику, персонажей, фон, мувики, возможно даже музыку и звуки. Самому делать игру всю просто нет времени. А с кодом заморочек хватает.
    П. с. Жень, ты чего редко стал сюда заходить? Надоело или дел полно?

    • admin

      Не то чтобы я стал редко заходить, сколько стал редко отвечать) Так же и комменты в ютюбе. Блог у меня не первостепенный сейчас. От него “выхлоп” околонулевой по ютюбовским меркам. Блог у меня пока для души :) Не та тема, на которую стоит тратить время чтобы делать видео, только если как рекламный плацдарм для продвижения своих игр, либо платных обучающих курсов.
      Допустим тратить месяц, чтобы доделать уроки по дудлу, чтобы просто получить комментарии и 5000 просмотров за год.. (от партнерки это будет в районе 2$ может быть) ну это глупо уже как-то. Если только делать платные уроки, но тут с законодательством не так всё просто, налогами, ИП, и т.д. Удобнее было бы использовать youtube red, но она доступна тока очень раскрученным каналом с аудиторией 300к+.

      Дел полно это тоже. Как появилась новая девушка, сразу графики полетели к чертям :D Девушка, решение семейных вопросов, отдых, игрули. Вот и уходило всё время. Ещё Unity 5 осваивал. Сделал там флеппи бёрд, но мне не нравится движение объектов дерганое.. Если бы не это, уже наклепал бы игр в маркет. Бесят эти дергания не могу. Как прошлые версии флеш плеера… Поэтому от юнити пока отскочил временно, но, вероятно вернусь. И размер файлов тоже дурацкий. На флеппи бёрд, где всего один атлас, размер apk 9 Мб был в пятом юнити, сейчас с обновлениями уже 19 Мб. Это ещё урезая всякие излишества типа теней и т.д. Вот как-то так) Музыку я ещё сочиняю, купил в том году цифровое пианино, прям кайфую :) Но тут тоже не всё так просто, не устраивают vst-библиотеки пианинок. Сейчас поставил ivory для cubase, но настроить так чтобы “Ах” не могу, то верха звучат криво, то низы. А делать для каждой ноты свои настройки не особо хочется.:)

Добавить комментарий для Влад Отменить ответ

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">