Сухой остаток.

При выполнении проекта у вас должен получиться три файла:
music.swf - основной файл нашего проекта
music.htm - html-страница, загружающая файл music.swf. При публикации вашего проекта, этот файл формируется автоматически.
help.swf - файл со справкой
Размер файла music.swf у меня не превышает 70 килобайт. Это очень не плохо, если учесть, что в нем хранится двадцать четыре музыкальных фрагмента, несколько десятков графических объектов и несколько сотен строчек программного кода. Этот файл даже при модемном соединении будет загружаться около 20 секунд.

При выполнении данного проекта мы познакомились:

  • с основами нотной грамоты;
  • разработали одну из системы кодирования звука;
  • познакомились с основами объектно-ориентированного программирования, его реализацией во Flash MX, в частности познакомились с некоторыми методами работы со звуковыми, строковыми, звуковыми объектами.
  • мы научились импортировать звук во Flash и программно управлять им;
  • познакомились с различными приемами работы во Flash, в частности с программной задержкой, трехкадровым циклом, описанием и вызовом процедур, созданием ползунковых регуляторов и др.
  • в конце концов, мы создали достаточно интересную игру, обучающую основам нотной грамоты, игру в которую с интересом играет моя трехлетняя дочь.

Возможное развитие проекта

Тем не менее, данный проект несовершенен, и можно наметить различные шаги по его улучшению, изменению, добавлению новых возможностей. Рассмотрим некоторые:

Запись музыкального фрагмента.
Наиграв какую-нибудь мелодию, музыкант сможет прослушать ее еще раз, нажав на соответствующую кнопку. Данную возможность достаточно легко реализовать. Судите сами, когда мы нажимаем на клавиши рояля, у нас формируется код нашей музыкальной фразы, он хранится в переменной xp. Необходимо, чтобы в некоторой переменной, например temp, сохранялся также код длительностей. Останется, нажав на соответствующую кнопку, передать эти две переменные в третий ключевой кадр и наслаждаться своей музыкой.

Улучшенный нотный стан.
Возможно, это мелочь, но при просмотре нот, которым не хватает линий на нотном стане, например ноты соль второй октавы, ноты до первой октавы, возникает путаница. Трудно определить ее высоту. В нотной грамоте для таких нот подрисовывают дополнительные линии и это можно относительно просто реализовать. Нужно создать символ с дополнительными линиями и если встречается такая «бездомная» нота, в третьем ключевом кадре дублировать этот новый символ и располагать его рядом с основными линиями нотного стана.

Внешняя загрузка музыкального кода
Flash позволяет загружать данные из внешнего файла. В нем можно было бы разместить код музыкальных образцов. Тогда добавление нового музыкального фрагмента, или изменение старого, происходила бы в обычном Блокноте. При загрузке основного файла Flash поверял количество музыкальных фрагментов, записанных в таком текстовом файле, загружал их во внутренние переменные, создавал нужное количество кнопок для запуска образцов. Мне кажется, что это может стать действительно полезной функцией в проекте.

За границей листа
При игре на рояле, ноты выстраиваются на нотном стане одна за другой, постепенно уходя за край листа, что достаточно неудобно. Имеет смысл, начиная с какой-нибудь ноты очищать нотный стан и начинать формировать его заново.

Необходимость предзагрузчика.
Не смотря на то, что финальный файл относительно не велик, человеку, загружающему его через интернет, придется несколько секунд быть в неведении, что загружается, как долго загрузка будет продолжаться. Для большего комфорта используют различные «предзагрузчики». Это может динамическое поле, в котором отображается процент загруженного ролика или какая-нибудь замысловатая анимация, метафорически передающая процесс загрузки, и в визуальной форме показывающая долю загруженной информации.
Для реализации предзагрузчика во Flash существуют два свойства _framesloaded - количество загруженных кадров и _totalframes - общее количество кадров. По отношению этих величин можно судить о доли загруженной информации. Существуют и другие, более точные способы, отслеживающие количество загруженной информации побайтно. Информацию о реализации предзагрузчика можно найти в Интернете.

Более сложные правила игры.
Результатом игры в данном проекте может быть только результат: «У вас получилось». Значительно интересней будет, если за игру будут начисляться баллы. Это может быть доля правильно повторенных нот или какая-то другая система. Более сложные правила придадут игре драматизма.

Возможно, описанные здесь возможности будут реализованы мной в следующих версиях этой игры. А может, и нет, ведь это - учебный проект. Реализация дополнительных функций - это уже индивидуальная работа учеников.