Принципы объектно-ориентированного программирования. Основы ActionScript
Принципы, свойства и методы объектно-ориентированного программирования. Настройки языка программирования ActionScript: параметры отступов, табуляции, кодировки. Возможности языка Flash-сценария (скрипта), редактирование текста. Суть объектной модели.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | лабораторная работа |
Язык | русский |
Дата добавления | 04.06.2009 |
Размер файла | 65,4 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Введение
Языком программирования во Flash является язык ActionScript, который позволяет в деталях определять действия, выполняемые при воспроизведении Flash-ролика. Выполнение того или иного сценария запускается при возникновении определенного события. Допустим, вы создаете кнопку и хотите использовать сценарий ActionScript, чтобы останавливать воспроизведение ролика, когда пользователь щелкнет по кнопке мышкой. В этом случае событием является щелчок мышкой, а действием - остановка воспроизведения ролика. Язык ActionScript освоить достаточно просто, поскольку в нем используются логически построенные фразы. Например, команда для остановки воспроизведения ролика выглядит следующим образом:
stop();
Итак, язык ActionScript достаточно прост, однако необходимо помнить, что он очень чувствителен к синтаксису своих элементов. К примеру, ниже приведена команда для перемещения к определенному кадру на временной шкале:
gotoAndPlay(2);
Заметьте, что при написании этого оператора используются заглавные буквы (А и Р), а все слова пишутся вместе без пробелов. Научиться программировать на языке ActionScript относительно легко, однако при написании кода необходимо в точности соблюдать правила синтаксиса, поэтому при разработке сценариев ActionScript уделяйте синтаксису языка особое внимание.
Освоив элементы и синтаксис языка ActionScript вы сможете использовать всю мощь Flash при разработке роликов. Flash позволяет создавать сценарии, которые выполняются (по событию) при вводе пользователем определенных данных или информации. Вы также можете создавать сценарии, чувствительные к таким переменным, как дата и время. Изначально Flash предлагает вам набор встроенных функций (сценарии, синтаксис которых напоминает осмысленные фразы на английском языке); по мере роста ваших навыков работы с ActionScript вы сможете создавать и вызывать свои собственные функции. Во Flash MX 2004 используется язык ActionScript 2.0, более близкий к языку JavaScript
чем предыдущие версии ActionScript. Разрабатывая сценарии и включая их в свои документы, вы сможете полностью реализовать все возможности Flash.
1. Принципы объектно-ориентированного программирования
В основе принципов объектно-ориентированного программирования лежит понятие объекта. В программировании объект обладает теми же характеристиками, что и объекты действительности/которыми являются, к примеру, ваша собака или компьютер. Объекты реального мира и объекты в программировании обладают двумя основными характеристиками: состоянием и поведением. К примеру, состояние собаки может быть описано ее именем, окрасом шерсти, породой и наличием (или отсутствием) чувства голода. В качестве поведения собаки можно рассматривать лай, принесение хозяину убитой дичи и виляние хвостом.
Все объекты в реальном мире и мире программирования обладают поведением и состоянием. Объекты в программировании моделируют объекты действительности и поэтому также характеризуются определенным состоянием и поведением. Состояние объекта в программировании описывается значениями одной или нескольких переменных. Последние представляют собой элементы данных, обладающих идентификаторами. Поведение объекта в программировании реализуется при помощи методов, то есть функций, связанных с объектом. Все свойства (состояние) и действия (поведение) объекта выражаются переменными и методами в его пределах. Объект, который описывает гоночную машину, будет включать в себя переменные, определяющие такие его свойства, как скорость, направление движения и цвет машины. Эти переменные называются переменными экземпляра, поскольку они характеризуют состояние конкретного объекта, а согласно терминологии объектно-ориентированного подхода конкретный объект называется экземпляром. Помимо переменных объект, описывающий машину, будет обладать методами, предназначенными для изменения скорости и включения фар. Эти методы формально называются методами экземпляра, поскольку они позволяют просмотреть или изменить состояние конкретного экземпляра.
Панель команд
Рис 1. Внешний вид панели команд ActionScript
Панель команд позволяет управлять документом, создавать и редактировать сценарии для объекта
или кадра. Чтобы ее отобразить, выделите объект на рабочем поле или кадр на временной шкале, затем выберите в меню пункт Window, подведите указатель мыши к пункту Development Panels и выполните команду Actions (Команды). Панель команд включает в себя следующие элементы:
- Toolbox (Раздел инструментов). Содержит список всех встроенных функций ActionScript, распределенных по папкам;
- Skript pane (Область сценария). В эту область вы можете вводить код сценария;
- Skript Navigator pane (Раздел навигации по сценариям). Содержит ссылки на все сценарии в активном ролике;
- Current Skript tag (Закладка текущего сценария). Указывает на сценарий, редактируемый в настоящее время;
- кнопка Pin Script (Добавить закладку). Добавление на панель команд закладки для выбранного сценария;
- меню Options (Параметры). Содержит команды, которые позволяют управлять элементами панели команд и форматировать сценарий;
- кнопка Reference (Справка). Служит для получения дополнительной информации об элементе;
- кнопка Add Statement (Добавить выражение). Позволяет вам добавлять элемент ActionScript в текущий сценарий;
- кнопки Find (Найти) и Find and Replace (Найти и заменить). Позволяют вам искать фрагменты кода в активном сценарии;
- кнопка Insert Target Path (Вставить ссылку на объект). Позволяет вам вставлять в сценарий ссылки на конкретные клипы;
- кнопка Check Syntax (Проверить синтаксис). Проверка синтаксиса текущего сценария;
- кнопка Auto Format (Автоформат). Оформление кода сценария с автоматическим определением отступа перед каждой строкой кода;
- кнопка Show Code Hint (Показывать подсказки). Отображение подсказки по синтаксису команд при вводе кода в область сценария;
- меню Debug Options (Параметры отладки). Позволяет добавлять в сценарий или удалять из него контрольные точки, указывающие Flash останавливаться на заданной строке кода;
- меню View Options (Параметры просмотра). Позволяет вам управлять отображением кода в области сценария.
2. Свойства и методы объектно-ориентированного программирования
Объекты во Flash описываются двумя основными параметрами: свойствами и методами. Свойства объекта определяют его характеристики. Например, дом представляет собой объект, а его свойствами являются такие характеристики, как цвет, стиль, а также число окон и дверей. На языке ActionScript соответствующую информацию можно записать следующим образом:
house.color = "green";
house.style = "ranch";
house.windows = "12";
house.doors = "2";
В этом примере слово house (дом) представляет собой уникальное имя экземпляра объекта, описывающего дом, а переменные color (цвет), style (стиль), windows (окна) и doors (двери) определяют его свойства. Вы можете представить себе экземпляр как копию элемента библиотеки. При создании клипа соответствующий объект помещается в библиотеку Flash. Вернувшись в режим редактирования сцены, вы можете перетащить клип из библиотеки на рабочее поле (теоретически вы перетаскиваете из библиотеки символ, созданный с использованием типа символа-клипа). При размещении клипа на рабочем поле он становится экземпляром исходного элемента библиотеки. При выборе экземпляра символа на рабочем поле панель инспектора свойств позволяет вам присвоить ему уникальное имя. В предыдущем примере идентификатор house является уникальным именем экземпляра символа, которое было определено на панели инспектора свойств.
Присвоение экземпляру символа уникального имени дает вам дополнительные возможности управления соответствующим объектом. Например, вы можете поместить два экземпляра одного клипа на рабочее поле, присвоить каждому из них свое собственное уникальное имя (например, housei и house2) на панели инспектора свойств и затем определить различные свойства для каждого из этих экземпляров. Соответствующий код будет выглядеть следующим образом:
house"!, color = "green"; house2. color = "blue";
housei.style = "ranch"; house2.style = "tudor";
house"!, windows = "12"; house2.windows = "8";
housei.doors = "2"; house2.doors = "4";
Фактически вы можете создать целый город, используя один элемент библиотеки. Преимущества такого подхода очевидны. Вы можете создать Flash-ролик, содержащий 100 различных экземпляров одного и того же клипа; при этом Flash сохранит в ролике только одну копию символа, и будет отображать эту копию, изменяя ее свойства.
Bo Flash большинство объектов характеризуется определенным набором свойств. Например, объект MovieClip (Символ клип) обладает такими свойствами, как прозрачность, координаты и видимость. Вы можете задавать общие свойства клипа по мере его создания, определяя параметры отображения этого клипа на рабочем поле. Методы определяют возможности объекта выполнять те или иные задачи. Так, к методам объекта, описывающего проигрыватель DVD, можно отнести воспроизведение, запись и остановку воспроизведения. На языке ActionScript эти методы могут быть записаны следующим образом:
playO;
record();
stopO;
Некоторые из методов содержат в скобках список параметров. Например, следующая команда позволяет поместить считывающую головку в кадр б на временной шкале и остановить воспроизведение ролика:
gotoAndStop(6);
Ссылка на метод конкретного объекта требует указания идентификатора этого объекта в коде
ActionScript:
myDVD.gotoAndStop(6);
ActionScript является языком программирования. Как и при изучении любого иностранного языка, все его слова и синтаксис могут сначала показаться странными; однако чем дольше вы работаете с языком, тем проще он становится.
3. Настройки ActionScript
Выберите в меню пункт Flash (Professional) (Mac) или Edit (Win) и выполните команду Preferences (Настройки). Перейдите на вкладку ActionScript и установите следующие параметры:
- Automatic Indentation (Автоматический отступ). Обеспечивает автоматическую вставку отступа перед строками кода в соответствии с логикой используемых команд;
- Code Hints (Подсказки). Включает отображение подсказок по синтаксису при вводе кода;
- Tab Size (Размер табуляции). Указывает число пробелов, задающих интервал табуляции;
- Delay (Задержка). Определяет задержку перед отображением подсказки по синтаксису вводимого кода. Значение задержки (от 0 до 4) в секундах;
- Open/Import (Открыть/Импортировать) и Save/Export (Сохранить/Экспортировать). Выбор кодировки (по умолчанию или UTF-8), которая будет использоваться при выполнении соответствующих операций (кодировка UTF-8 является оптимальной);
- Text (Текст). Выбор шрифта и размера текста кода ActionScript;
- Syntax Coloring (Выделение цветом). Выбор схемы выделения цветом элементов ActionScript;
- Language (Язык). Кнопка ActionScript 2.0 позволяет изменить дополнительные настройки использования ActionScript. Щелкните мышкой по кнопке
- Reset To Defaults (Восстановить значения по умолчанию), чтобы восстановить настройки, используемые во Flash по умолчанию. Нажмите ОК.
4. Основы ActionScript
ActionScript - язык создания Flash-сценария (скрипта). Вы можете использовать ActionScript для управления объектами в клипах, создавать навигацию, другие интерактивные элементы. В конечном итоге, создавать высоко качественные клипы и сетевые приложения.
ActionScript предоставляет новые расширенные возможности для создания интерактивных веб-сайтов со сложными играми, формами, опросами, общением в реальном времени и т.п. ActionScript имеет много новых возможностей и особенностей синтаксиса, которые делают его похожим на ядро языка программирования JavaScript. Совершенно не обязательно знать JavaScript, чтобы научиться и использовать ActionScript. Но если вы его знаете, то ActionScript покажется Вам знакомым. Они имеют следующие некоторые различия:
1). ActionScript не поддерживает специфичные для браузеров объекты, такие как Document, Window и Anchor.
2). ActionScript полностью не поддерживает все JavaScript предопределенные объекты.
3). ActionScript поддерживает синтаксические конструкции, которые отсутствуют в JavaScript (например tellTarget и ifFrameLoaded команды и слеш ("/") синтаксис.
4). ActionScript не поддерживает некоторые синтаксические конструкции JavaScript, такие как switch, continue, try, catch, throw и statement метки.
5). ActionScript не поддерживает JavaScript конструкцию Function.
6). В ActionScript, eval команда может только выполнять ссылки на переменные.
7). В JavaScript, неопределенное toString есть undefined. Во Flash 5, для совместимости с Flash 4, неопределенное toString есть " ".
8). В JavaScript, численное undefined результируется в NaN. Во Flash 5, для совместимости с Flash 4, численное undefined является 0.
9). ActionScript не поддерживает Unicode; поддерживаются ISO-8859-1 и Shift-JIS кодировки.
5. Редактирование текста
Можно набирать скрипты непосредственно в панели команд (Actions) в экспертном режиме (Expert Mode). Можно также выбирать элементы из всплывающего меню, или списка инструментов, точно так же, как во Flash 4.
Dot (точечный) синтаксис
Можно использовать Dot (точечный) синтаксис, чтобы получать и устанавливать свойства и методы объектов, включая имена муви-клипов и переменных. Можно использовать Dot синтаксис вместо слеш (/) синтаксиса, как во Flash 4. Слеш синтаксис больше не предпочтителен, но еще поддерживается Флеш-Плеером.
Типы данных
Flash 5 ActionScript поддерживает следующие типы данных: string (строка), number (число), boolean (булеан), object (объект) и movie clip (муви-клип). Множественность типов данных позволяют использовать различные типы информации в ActionScript. Например, возможно создание массивов и ассоциативных массивов.
Локальные переменные
Можно объявлять локальные переменные, которые действуют только в пределах списка команд или обращения к функции. Это позволяет оптимальнее загружать память и многократно использовать одни и те же имена переменных. Во Flash 4 все переменные определялись на время действия всего клипа, даже временные переменные, типа счетчиков циклов, остались в клипе до его завершения.
Функции определяемые пользователем (User-defined functions)
Можно определять функции с параметрами, которые возвращают значения. Это позволяет многократно использовать одни и те же блоки кода в скриптах. Во Flash 4, можно было многократно использовать код через call команду, но нельзя было передавать туда параметры или возвращать значения.
Предопределенные объекты
Можно использовать предопределенные объекты для доступа и манипулированием некоторыми типами информации. Вот несколько предопределенных объектов:
- Объект Math - набор встроенных математических констант и функций, таких как E (Константа Эйлера) cos (Косинус), atan (Арктангенс).
- Объект Date - позволяет получить информацию о дате и времени системы, на которой запущен Флеш-Плеер.
- Объект Sound - позволяет добавлять звуки к клипу и управлять ими во время проигрывания клипа. Например, можно регулировать громкость (setVolume), или баланс (setPan).
- Объект Mouse - позволяет скрывать стандартный курсор, чтобы можно было использовать какой-то другой.
- Объект MovieClip - позволяет управлять клипом без использования такой команды как tellTarget. Можно вызвать такие методы как play, loadMovie или duplicateMovieClip из имени образца (instance name), используя dot (точечный) синтаксис (например, myMovieClip.play()).
6. Объектно-ориентированное программирование во флэш
Уровень флэш-кодеров растет и, естественно, что есть желание программировать, используя объектно-ориентированные приемы. Но информация об объектной модели флэш очень скудна (как и о JS, кстати), и по этому вопросу есть много путаницы. Поэтому предоставляю вашему вниманию то понимание, которое сложилось у меня на данный момент. Так же хочу отметить, что все объекты флэш (Number, MovieClip, Sound, Mouse и так далее) так же используют объектную модель. Поэтому знание объектной модели флэш позволяет настраивать и создавать новые методы встроенных объектов флэш.
Суть объектной модели в Action Script (как и в JS) в том, что любой объект имеет ссылку на свой прототип, как бы 'лекало', содержание которого (параметры и методы) объект наследует.
Небольшой пример
a = {} //создаем новый пустой объект.
a.__proto__ = {a:"a"} // вместо существующего прототипа подставляем новосозданный объект с параметром а равному строке 'а'.
b = {} // создаем второй объект.
b.__proto__ = a // в качестве прототипа подставляем первый объект.
trace(b.a) // делаем проверку на наличие параметра прототипа у второго объекта.
a.__proto__.a = "c" // меняем значение поля у прототипа первого объекта.
trace(b.a) // тестируем изменения во втором объекте.
__proto__ - это ссылка на прототип объекта.
Если бы мы изменили поле у первого объекта, то мы бы смогли наблюдать полиморфизм и его наследование. То есть прототип первого объекта остался бы прежним, но значение одноименного поля у первого объекта изменилось. И это изменение тут же наследовал второй объект.
Вместо цепочки наследований можно делать деревья со сложной структурой, когда поля и методы одного объекта наследуют сразу несколько объектов.
Остановимся на механизме наследования. Важно понять, что методы и параметры объектов не копируются из прототипа. Просто при работе с объектом происходит поиск вызываемого параметра или метода. Поиск производится как в параметрах и методах самого объекта, так и в полях прототипа (а также в прототипе прототипа, и так далее). Это происходит всегда. Только чаще прототип пуст и его полей мы не видим. Поэтому, как только мы меняем объект-прототип, мы меняем объекты-наследники.
Второй момент объектной модели флэша, который нужно понять, это работа с конструкторами. Хоть в нашем предыдущем примере мы обошлись без конструктора, конструктор был задействован автоматически.
Конструктор - это функция. Любая функция во флэш может быть использована в качестве конструктора.
Используя конструкцию данного вида, мы создаем новый объект.
any_new_object = new constrictor_name();
Любая функция имеет ссылку на некий объект, который будет прототипом для объектов, которые будут созданы функцией. Изначально данный объект пуст. Изменяя его или подставляя уже готовый объект, мы сможем создавать объекты с нужным прототипом.
//*************************************************************************
function constructor_one()
{
this.a = "a"
this.b = "b"
this.method = function()
{
trace("one")
}
}
//*************************************************************************
one = new constructor_one();
Теперь изменим прототип конструктора.
constructor_one.prototype.new_param = "new_param";
Создадим второй объект.
two = new constructor_one();
trace(two.new_param) // трейсится 'new_param'
Второй объект имеет дополнительный параметр 'new_param', наследованный от прототипа.
Проверяем первый объект на наличие нового поля и убеждаемся что оно также присутствует.
Мы так же можем не просто модифицировать прототип конструктора, но и подставлять его на готовые объекты. Но наследоваться новые прототипы будут только в вновь создаваемых объектах.
Попробуем сделать подмену прототипа у конструктора. Вернемся к моменту, когда был создан первый объект
function constructor_one()
{
this.a = "a"
this.b = "b"
this.method = function()
{
trace("one")
}
}
//*************************************************************************
one = new constructor_one();
constructor_one.prototype = {param:'any_value'}; // делаем подмену прототипа
Создадим второй объект. И проверим первый и второй объект на наличие параметра 'param'.
two = new constructor_one();
trace(one.param)
trace(two.param)
Первый объект имеет то же количество полей, что и при создании. И поля 'param' он не имеет.
Почему же изменяя прототип конструктора, созданные до этого объекты, наследуют изменения, а при подмене нет? Все просто. В первом случае мы модифицируем объект, на который имеют ссылку все вновь созданные объекты и конструктор. При подмене же конструктор уже имеет ссылку на другой объект-прототип и ничего уже существующими объектам не наследуется. Казалось бы, элементарно, но эта тонкость создает путаницу у начинающих.
Повторюсь. Передача ссылки на объект-прототип от конструктора к создаваемому объекту происходит в момент создания объекта.
Чтобы 'синхронизировать' прототипы двух созданных нами объектов, нам нужно скопировать ссылку с прототипа второго объекта на первый объект.
one.__proto__ = two.__proto__;
Такой вопрос. Где лучше создавать методы и параметры объектов. В прототипах или в конструкторах. Ответ - в прототипах. Методы и параметры не дублируются в каждом объекте. Их легче менять и не тратится лишняя память.
Для работы с объектами и с прототипами у нас есть еще одно ключевое слово constructor. Мы можем им пользоваться, например, тогда когда мы не знаем какой конструктор у объекта, и мы хотим создать другой объект, используя тот же конструктор.
three = new two.constructor();
И естественно, есть ключевое слово this. Но я думаю, если вы читаете данную статью, вам значение данного слова объяснять не нужно.
Простой пример меняющий акцию 'play' на 'stop', и наоборот.
MovieClip.prototype.stop_old = MovieClip.prototype.stop;
MovieClip.prototype.play_old = MovieClip.prototype.play;
MovieClip.prototype.stop = MovieClip.prototype.play_old;
MovieClip.prototype.play = MovieClip.prototype.stop_old;
А вот классный приметр который убыстряет работу метода split объекта String почти в десять раз:
st.OldSplit = st.split;//Creat Link to old split function
//*************************************************************************
st.split = function(str)
{ //Creat new split function
if(str.length>1)return this.OldSplit(str);
if (str == "" || str == null) return this.toCharArray();
var result = new Array();
var d = this.length;
var n = 0;
var tmpStr = "";
var ch;
while(n<d)
{
//ch = this.charAt(n++);
ch = substring(this ,++n, 1);
if(ch==str)
{
result.push(tmpStr);
tmpStr="";
}else{
tmpStr += ch;
}
}
result.push(tmpStr);
return result;
}
//*************************************************************************
st.toCharArray = function()
{
var st = this;
var arr_result = new Array();
for (var s=0;s < st.length;s++)
{
arr_result.push(substring(this, s+1, 1));
}
return arr_result;
}
Подобные документы
Использование объектно-ориентированного программирования - хорошее решение при разработке крупных программных проектов. Объект и класс как основа объектно-ориентированного языка. Понятие объектно-ориентированных языков. Языки и программное окружение.
контрольная работа [60,1 K], добавлен 17.01.2011Исследование принципов объектно-ориентированного программирования на базе языка программирования С++. Разработка программного комплекса для ведения учёта памятников города. Описание процессов сортировки, поиска, формирования статистики по памятникам.
курсовая работа [782,4 K], добавлен 26.05.2014Анализ объектно-ориентированного программирования, имитирующего способы выполнения предметов. Основные принципы объектно-ориентированного программирования: инкапсуляция, наследование, полиморфизм. Понятие классов, полей, методов, сообщений, событий.
контрольная работа [51,7 K], добавлен 22.01.2013Понятие объектно-ориентированного программирования, характеристика используемых языков. Практическая разработка средств объектно-ориентированного программирования в задачах защиты информации: программная реализация на языке С++, а также Turbo Pascal.
курсовая работа [275,9 K], добавлен 22.12.2011История создания языка Java. Основные принципы объектно-ориентированного программирования. Структура, особенности синтаксиса и примеры прикладных возможностей использования языка Java, его преимущества. Перспективы работы программистом на языке Java.
курсовая работа [795,9 K], добавлен 14.12.2012Характеристики и свойства языков программирования. Исследование эволюции объектно-ориентированных языков программирования. Построение эволюционной карты механизмов ООП. Разработка концептуальной модели функционирования пользовательского интерфейса.
курсовая работа [2,6 M], добавлен 17.11.2014Применение объектно-ориентированного программирования для написания нескольких модулей программы. Вычисление алгебраического уравнения методом половинного деления. Применение метода Эйлера в теории численных методов общих дифференциальных уравнений.
курсовая работа [398,1 K], добавлен 26.02.2015Приемы и правила объектно-ориентированного программирования с использованием языка С++. Общие принципы разработки объектно-ориентированных программ. Основные конструкции языка С++. Разработка различных программ для Windows с использованием WIN32 API.
учебное пособие [1,6 M], добавлен 28.12.2013Использование скриптового языка программирования для разработки web-приложений (сценариев). Изучение основ объектно-ориентированного программирования в языке PHP. Ознакомление со специальными методами для работы с классами. Назначение интерфейсов.
контрольная работа [25,1 K], добавлен 14.03.2015Анализ методов объектно-ориентированного программирования на примере численных. Детальная характеристика модулей и связь их в одну общую программу. Принципы интегрирования по общей формуле трапеции и решение дифференциального уравнения методом Эйлера.
курсовая работа [511,6 K], добавлен 25.03.2015