|
Модераторы: SoWa |
|
AlDev |
|
||||||||||||||||||||||||||||||||
Опытный идиотъ Профиль Группа: Участник Клуба Сообщений: 1927 Регистрация: 17.4.2005 Где: Irk, rus Репутация: 8 Всего: 50 |
начал писать небольшой manual.
Итак, что такое ООП и как оно реализовано во Flash. Простите за возможные неточности в формулировках определений. Достаточно часто Flash-еры, особенно начинающие, когда им в ответ на вопрос дать ссылку на класс, начинают спрашивать, что это такое? И разве это ActionScript? А как этим пользоваться? Попробую ответить на все эти вопросы. Итак, что вообще такое ООП? как мне сказал Yandex:
© Yandex Словари итак, сам принцип такого программирования основывается на понятиях класса и объекта. Что такое класс и что такое объект? итак, допустим есть такое понятие - девушка. У девушки есть параметры: имя, рост, вес, возраст, размер груди, размер талии ну и прочее .Что умеют девушки? ну пусть, например, они умеют ... визжать. Добавим ещё такой параметр, как громкость визжания. Визжать - это действие. Возьмём какую-нибудь конкретную девушку, например, Ксюшу. Рост у Ксюши пусть будет 160, вес - 50, возраст - 17, размер груди - '90', рахмер талии - '60', прочее - '90', громкость визжания - 50, ну и имя, будет "Ксюша". Так вот девушки - это класс, а Ксюша - объект класса "девушки". Таким образом класс представляет собой некоторый набор методов и свойств, присущих всем объектам данного класса. Итак, теперь всё это в применении к Flash. Открываем Flash, нажимаем Ctrl + N, выбираем type - ActionScipt File. Объявление класса начинается с ключевого слова class, далее идёт имя класса. Сам код класса содержится между { и } Итак, объявляем класс - девушки.
у любого класса есть конструктор - метод класса, одноименный с ним, вызывающийся при создании объекта данного класса. Добавим конструктор в наш класс:
файл с кодом класса сохраняем как girl.as. Важная особенность - имя класса должно совпадать с именем файла. Теперь создаем новый Flash-документ, открываем actions для первого frame-а и пишем в нём:
что мы сделали? var указывает на то, что идёт объявление перемменной с именем my_friend, после имени переменной поставлено двоеточие, а после него написано название нашего класса. Это двоеточие явно указывает, что это объект класса girl. Некоторые примеры с указанием типа:
нигде не будет выдваться ошибка. На самом деле типы - это фича, доступная только при компилляции:
Но смысл указывать типы есть. Это может очень помочь при отладке кода. Сохраняем этот файл в той-же папке, где сохранили girl.as и нажимием Ctrl + Enter. В окошке output видим надпись: "'create girl". Вернёмся к нашим девушкам. Итак, нам требуется объявить некоторые свойства класса. Возвращаемся к файлу girl.as и пишем:
писать var при объявлении переменных - обязательно. Комментарии пишуться так-же, как и при написании обычного кода в Actions.
как установить значения переменных для объекта класса? вернёмся к нашему fla-файлу:
ещё один способ писать без обращения к my_girl:
с одной стороны это, конечно, удобно. with указывает, что идёт работа с объектом my_girl. Минус - большая затрата ресурсов при таком синтаксисе. Получение значения переменной класса происходит тоже очень просто:
теперь остановимся поподробнее на переменных класса. 1. modifiers modifiers - это модификаторы доступа к перемнной класса. Возможны 3 варианта: private public static private указывает на то, что переменная доступна только внутри данного класса и в классах, наследующих от данного класса. О наследовании поговорим попозже. Итак, пример:
мы сделали переменную weight private, пробуем установить ей значение и получить его:
выдаётся ошибка. Удобно? Ещё как! public - это аттрибут, который ставится по-умолчанию. С переменными public можно творить всё, что угодно, откуда угодно. Очень неплохо, когда это прописывается явно. Облегчается читабельность исходника. Пример:
третий модификатор - static. Он указывает на то, что переменная не относитя к экземплярам объекта, а относится к самому классу. С первого раза фраза кажется непонятной, но на самом деле это очень удобно для написания различных классов, которые являются хранилищем методов и свойств. Обращение к таким переменным идёт через имя класса: Например у класса Math:
PI - свойство класса. 2. Обращение к переменным класса внутри самого класса. Итак, например, мы хотим передавать значение веса и имени при вызове конструктора класса. Тогда пишем:
перед именами - this ---------------------------------------- в ближайшее время допишу: 3. Привязка переменной к классу 4. get/set 5. methods 6. наследование 7. eval & classes 8. packages 9. classpaths 10. include? 11. dynamic classes attachments 12. toString(), valueOf(), etc... what's that? 13. intrinsic и interface дополнения буду писать здесь и у себя: http://batsuev.com/wp/flash/flash-oop/ Это сообщение отредактировал(а) Alex Batsuev - 7.9.2005, 18:43 |
||||||||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||||||||
ProgrammerBOTANIK |
|
|||
Опытный Профиль Группа: Участник Сообщений: 706 Регистрация: 27.4.2004 Репутация: нет Всего: 0 |
Меня порадовало, спасибо!
Добавлено @ 11:53 !!! -------------------- Сострадание со стороны жизни выражается в смерти |
|||
|
||||
Caramel |
|
|||
Эксперт Профиль Группа: Завсегдатай Сообщений: 4190 Регистрация: 7.8.2004 Где: Дюссельдорф Репутация: нет Всего: 142 |
Меня тоже))))
|
|||
|
||||
Jlekc |
|
|||
Опытный Профиль Группа: Участник Сообщений: 520 Регистрация: 10.2.2005 Где: Leopolis Репутация: нет Всего: 4 |
есе уже начали разбераться, то вопросик:
чот не оч понимаю в чем разница между intrinsic и interface -------------------- |
|||
|
||||
AlDev |
|
||||
Опытный идиотъ Профиль Группа: Участник Клуба Сообщений: 1927 Регистрация: 17.4.2005 Где: Irk, rus Репутация: 8 Всего: 50 |
http://www.kirupa.com/developer/oop2/AS2OO...sStructure8.htm
|
||||
|
|||||
Jlekc |
|
|||
Опытный Профиль Группа: Участник Сообщений: 520 Регистрация: 10.2.2005 Где: Leopolis Репутация: нет Всего: 4 |
как все реализовываеться я знаю, я спрашиваю в чем разница?
единственный вариант использовать intrinsic для реализации екземпляров класа с помошью прототипной модели, но зачем? Есе использования intrinsic class подразумевает использование AS2 -------------------- |
|||
|
||||
AlDev |
|
||||
Опытный идиотъ Профиль Группа: Участник Клуба Сообщений: 1927 Регистрация: 17.4.2005 Где: Irk, rus Репутация: 8 Всего: 50 |
http://novemberain.com/livedocs/Help/Actio...f/00001372.html
http://novemberain.com/livedocs/Help/Actio...f/00001373.html разница: intrinsic используется для контроля типов для встроенных классов и объектов и для классов, написаных на AS1. interface - для as2 классов. или я опять что-то не так понял? |
||||
|
|||||
Jlekc |
|
|||
Опытный Профиль Группа: Участник Сообщений: 520 Регистрация: 10.2.2005 Где: Leopolis Репутация: нет Всего: 4 |
хмм, может быть использовано при объявлении переменных. вот это действительно интересно.
этот недостаток в интерфейсах иногда раздражал -------------------- |
|||
|
||||
DeMoNN |
|
|||
Бывалый Профиль Группа: Участник Сообщений: 179 Регистрация: 21.3.2008 Репутация: нет Всего: 2 |
класс!
Спасибо! |
|||
|
||||
Правила форума "Flash" | |
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, AlDev, SoWa. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | ActionScript 1,2 | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |