Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > ActionScript 1,2 > сlasses in Flash |
Автор: AlDev 7.9.2005, 11:04 | ||||||||||||||||||||||||||||||||
начал писать небольшой manual. Итак, что такое ООП и как оно реализовано во Flash. Простите за возможные неточности в формулировках определений. Достаточно часто Flash-еры, особенно начинающие, когда им в ответ на вопрос дать ссылку на класс, начинают спрашивать, что это такое? И разве это ActionScript? А как этим пользоваться? Попробую ответить на все эти вопросы. Итак, что вообще такое ООП? как мне сказал Yandex:
http://slovari.yandex.ru/art.xml?art=gl_natural/245/245_592.HTM&encpage=gl_natural&mrkp=http%3A//hghltd.yandex.com/yandbtm%3Furl%3Dhttp%253A//encycl.yandex.ru/texts/gl_natural/245/245_592.HTM%26text%3D%25EE%25E1%25FA%25E5%25EA%25F2%25ED%25EE-%25EE%25F0%25E8%25E5%25ED%25F2%25E8%25F0%25EE%25E2%25E0%25ED%25ED%25EE%25E5%2B%25EF%25F0%25EE%25E3%25F0%25E0%25EC%25EC%25E8%25F0%25EE%25E2%25E0%25ED%25E8%25E5%26reqtext%3D%2528%25EE%25E1%25FA%25E5%25EA%25F2%25ED%25EE%253A%253A133775%2B%2526/%25281%2B1%2529%2B%25EE%25F0%25E8%25E5%25ED%25F2%25E8%25F0%25EE%25E2%25E0%25ED%25ED%25EE%25E5%253A%253A26584%2B%2526%2B%25EF%25F0%25EE%25E3%25F0%25E0%25EC%25EC%25E8%25F0%25EE%25E2%25E0%25ED%25E8%25E5%253A%253A9501%2529//6%26%26isu%3D2 итак, сам принцип такого программирования основывается на понятиях класса и объекта. Что такое класс и что такое объект? итак, допустим есть такое понятие - девушка. У девушки есть параметры: имя, рост, вес, возраст, размер груди, размер талии ну и прочее .Что умеют девушки? ну пусть, например, они умеют ... визжать. Добавим ещё такой параметр, как громкость визжания. Визжать - это действие. Возьмём какую-нибудь конкретную девушку, например, Ксюшу. Рост у Ксюши пусть будет 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/ |
Автор: ProgrammerBOTANIK 7.9.2005, 11:53 |
Меня порадовало, спасибо! Добавлено @ 11:53 !!! |
Автор: Caramel 7.9.2005, 16:03 |
Меня тоже)))) |
Автор: Jlekc 7.9.2005, 16:43 |
есе уже начали разбераться, то вопросик: чот не оч понимаю в чем разница между intrinsic и interface |
Автор: AlDev 7.9.2005, 18:38 | ||||
http://www.kirupa.com/developer/oop2/AS2OOPClassStructure8.htm
|
Автор: Jlekc 8.9.2005, 12:11 |
как все реализовываеться я знаю, я спрашиваю в чем разница? единственный вариант использовать intrinsic для реализации екземпляров класа с помошью прототипной модели, но зачем? Есе использования intrinsic class подразумевает использование AS2 |
Автор: AlDev 8.9.2005, 13:40 | ||||
http://novemberain.com/livedocs/Help/ActionScriptLangRef/00001372.html
http://novemberain.com/livedocs/Help/ActionScriptLangRef/00001373.html разница: intrinsic используется для контроля типов для встроенных классов и объектов и для классов, написаных на AS1. interface - для as2 классов. или я опять что-то не так понял? |
Автор: Jlekc 8.9.2005, 13:50 |
хмм, может быть использовано при объявлении переменных. вот это действительно интересно. этот недостаток в интерфейсах иногда раздражал |
Автор: DeMoNN 7.12.2008, 23:38 |
класс! Спасибо! |