Всякие разные штуки сомнительной полезности сделанные в свободное от работы время.
Урок 0.
Полезные ссылки.
http://www.wikipedia.org
http://community.adobe.com/help/search.html
http://www.adobe.com/livedocs/flash/...riptLangRefV3/
http://www.hexosearch.com/se/search.aspx
Настраиваем среду разработки.
Скачать FlashDevelop и установить.
Скачать Flex SDK (Software Development Kit) и разархивировать в папку C:/flex/sdk.
Опционально: убедится в наличие JRE (Java Runtime Environment - как правило папка C:/Program Files/Java/jreX - X - версия рантайма).
убедится в наличие .NET framework 2.0 или старше (Start > Settings > Control Panel > Add or Remove Programs > найдите Microsofr .NET Framework X - версия фреймворка).
Перейти в папку C:/flex/sdk/runtimes/player/10/win запустить програму FlashPlayer.exe и открыть в ней любой файл с расширением .swf.
Запустить FlashDevelop > F10 > AS3Context > Flex SDK Location > указать папку, куда вы до этого распаковали SDK (C:/flex/sdk).
Объекты и объектно ориентированное програмирование.
AS3 - это исключительно объектно ориентированый язык со статической типизацией, но позволяющий и динамическую типизацию, синтаксически и исторически AS3 - это далекий родственник C++. Его более близкие родственники - семейство языков ECMAScript - динамические скриптовые языки, самый извесный из них - JavaScript. Если вы с ним знакомы, то наверняка найдете много общего.
Концепция объектов и объектно ориентированного програмирования появилась раньше C++, но практически, благодаря популярности этого языка первая рабочая версия которого называлась C с классами, ОО подход ассоциируется именно с ним. Известный предшественник - язык Smalltalk, а так же Lisp и Object Pascal
Java часто считается самой классической реализачией объектно ориентированого языка.
Почему возникла необходимость в объектах в програмировании? Если мы максимально обобщим цель и задачи програмирования, до управления компьютером, то, на первый взгляд существавание чего-либо кроме команд нам не понадобится. Представим, что компьютер, это послушный робот, который умеет выполнять наши команды и напишем ему простую програму (набор команд). Отправим его в магазин за мороженым:
Код:
goto store buy icecream goto home
Код:
function buyIcecream() { goto store buy icecream goto home } buyIcecream() // первая пачка мороженого buyIcecream() // вторая пачка мороженого
Код:
function buyIcecream() { goto store if (open) // условие, если оно выполняется, то можно купить мороженое и смело возвращаться домой { buy icecream } else // а если нет, то сообщить об ошибке и ждать указаний { error } goto home } buyIcecream()
Попробуем описать эту сущность:
Код:
object Store { open:Boolean // обратите внимание на : таким образом мы обозначили принадлежность icecreams:uint // к определенной разбовидности объектов. Boolean - правда / ложь. uint - целое положительное число }
Код:
object Store { open:Boolean icecreams:uint } object Grocery { open:Boolean icecreams:uint } function buyIcecream() { goto store if (Store.open) { buy icecream } else if (Grocery.open) { buy icecream } else { error } goto home } buyIcecream()
Код:
class Store { var open:Boolean // var - переменная, поскольку мы будем создавать много var icecreams:uint // различных объктов, нам нужно чтобы у каждого было изменяемое свойство } var store:Store = new Store(); var grocery:Store = new Store(); function buyIcecream() { goto store if (store.open) { buy icecream } else if (grocery.open) { buy icecream } else { error } goto home } buyIcecream()
Класс - это шаблон по которому создаются объекты.
Теперь попробуем реализовать нашу задумку на практике используя AS3 (материалы урока прилагаются)
Всего комментариев 40
Комментарии
10.05.2010 21:37 | |
Сумбурно и всё вперемешку..
Но - удачи! |
11.05.2010 00:19 | |
Нужно уложится в 5 уроков... вот, наверное поэтому и сумбурно
|
11.05.2010 14:03 | |
Да ладно все ок. Тем кто не знаком с ООП, будет намного проще понять на icecream'ах ))))
|
11.05.2010 16:06 | |
В последнем примере есть пару очепяток "Strore"
|
11.05.2010 20:25 | |
А это уроки ЧЕГО?
Если это уроки ООП применительно к ECMAScript, то надо написать и прототипное создание объекта. |
11.05.2010 21:07 | |
11.05.2010 21:49 | |
ВАУ!!! Ни разу не использовал goto, краем уха слышал что есть оно, но ни разу не видел. Урок очень хороший, даже супер.
|
11.05.2010 22:21 | |
Да, но это значит, что студентам нужно будет и про элементы control flow / flow charts, а там за ними еще и UML (а его тоже разных разновидностей) рассказывать... Хотя, наверное, да, нарисую.
Не-не-не Это "псевдокод". Goto есть но в байткоде, и вообще традиционно джампом называется. В AS его просто так не получишь, ну, можно извратится как-нибудь с компилятором наверное, но вообще, по-простому никак И я не уверен, что тот же джамп сработает, если он не на метку, а вообще на произвольную инструкцию Ну, шансы даже, что если и сработает - будет куча ексепшенов потом в связи с незаполнеными регистрами и т.п. Просто ну как еще описать програмирование предшевствовашее ОО, если там все сплош и рядом были именно goto? |
|
Обновил(-а) wvxvw 11.05.2010 в 22:24
|
11.05.2010 22:44 | |
Цитата:
Просто ну как еще описать програмирование предшевствовашее ОО, если там все сплош и рядом были именно goto?
|
12.05.2010 11:50 | |
wvxvw, а для чего, если не секрет все это? В преподаватели подался?
|
12.05.2010 13:15 | |
а мне понравилось, как на примере объяснили про объект и класс и в каком месте (в какой момент) их нужно использовать.
|
12.05.2010 14:13 | |
Ага, вот дали курс провести Подумал, почему бы заодно не выложить + когда несколько раз обдумаешь и напишешь самому понятнее становится чего рассказывать.
|
12.05.2010 16:23 | |
wvxwv - честно: это не годится для вступления никак.
напиши сначала план всех 5 часов. и определи начальный уровень. А то тут ты обясняешь каким-то псевдокодом и тут-же function buyIcecream() { goto store if (store.open) { buy icecream } else if (grocery.open) { buy icecream } определи для начала, что они уже изучили и объясняй в терминах пройденного, либо начни с азов. с синтаксиса. Расскажи что такое ф-ции/методы и переменные/свойства и не пиши непонятных buy icecream У тебя тут для 0 уровня - много непонятного, для более продвинутого слишком просто. А по времени тут на 2 часа для 0 и 5-15 минут для 0,5 уровня). Вообще основы хорошо у Мука описаны (про as2) Я знаю о чём говорю - приходилось обучать.. |
|
Обновил(-а) Котяра 12.05.2010 в 16:29
|
12.05.2010 18:23 | |
Цитата:
что такое function, что такое if/else, что за точки и скобочки?
По идее блок-схему должны все знать. А дальше уже реализация синтаксисом AS. Цитата:
Нет, вовсе не обязательно, есть языки, в которых наследование присутствует, а понятие прототипов как таковых отсутствует
PS А вообще я бы испугался еще бы на этапе "настраиваем среду разработки". Вместо того чтобы для простоты установить флеш-редактор и начать изучение приходиться устанавливать кучу непонятных программ и еще их согласовывать друг с другом. Брр... |
|
Обновил(-а) chingachgoog 12.05.2010 в 18:26
|
12.05.2010 19:55 | |
Не-не, не надо отбивать у людей сразу желание покодить. Кодить в том флеше который у них там сейчас установлен вообще не возможно. Представь класс с 13" CRT мониторами сделаными в прошлом веке и какими-то пеньками с Виндоус ХП, и на этом запускается ЦС3 (вобщем, ничего особо страшного, запускается, конечно... но разница есть). Кроме того, задача не ставится научить людей пользоваться графическим редактором, им нужно научится код писать. Делать это в ИДЕ - так они ж ненавидеть любой флеш после этого будут ФлешДевелоп он же за счет автокомплита и контекстной кодогенерации и снипетов дает как бы общее представление о том, как другие люди работают, и что другие люди чаще всего делают, но, главное, забирает всю рутинную работу, которая к обучению никакого отношения не имеет.
Вот, представь, тебя посадили с блокнотом, и сказали "напиши програму" - а ты даже не знаешь с чего начать, а в ФД - есть интерфейс с "подсказками" типа "создать класс" - ну, даже если ты не знаешь что ткаое класс - кликнул, посмотрел, и оп-па, уже какая-то програма написана, можно дальше разбираться. Кликнул на свойсто, открыл контекстное меню, а там "сгенерить сеттер / геттер" - не знаешь, что такое геттер / сеттер - ну так попробовал, посмотрел, что получилось. Худший вариант - чего-то не получилось, но так хоть есть общее представление, чего искать. А блок-схему, ну вот допилю тут фриланс какой-то дурацкий и нарисую EDIT: Сначала про сферических коней |
|
Обновил(-а) wvxvw 12.05.2010 в 19:57
|
12.05.2010 21:18 | |
Цитата:
Опять же автокомплит и т.п. "упростители жизни" не зря запрещены в серьезных учебных заведениях. Лучше уж в блокноте учить писать.
|
12.05.2010 21:18 | |
Установка FlashDevelop по уровню сложности ничем не отличается от Flash. Т.е. абсолютно - просто несколько раз нажать на Yes / Continue или чего там. Что нужно настроить - флеш плеер дебаггер чтобы был, и чтобы SDK был. Наличие или отсутствие установленого флеша на это как бы никак не повлияет, это все равно нужно.
Учиться писать в блокноте - маразм, и люди, которые пытаются к этому приучить - старые маразматики. Это все равно, что меня в институте учили макет книги делать - текст по буквочкам / по строчкам вклеивать. Я не могу сказать, что так уж много работал по специальности, лет 5-6 от силы, но никогда, то есть абсолютно никогда, умение приклеивать святотацкие вырезки из трудов по научному Коммунизму мне в жизни не пригодились. А вот если бы нас тогда в институте научили элементарно пользоваться Кварком (тогда второй уже был, и Корел Вентура была) - то это бы мне здорово потом жизнь облегчило. EDIT: Тут есть такой контингент называется "сразу после армии". Это такие люди, которые восновном отучились в школе, кто хорошо отучился - тот с аттестатом зрелости, кто не очень - ну это, как ПТУшник по-сути... Ну и потом на это все дело наложилось 3 года промывания мозгов в армии. Есть сознательные личности, которые и в армии чем-то полезным занимались, но подавляющее большинство выходят из этого заведения и вообще не знают, чего с собой делать... Ну и есть еще те, кто решил квалификацию сменить. И, как бы, не, синтаксис C++ / JavaScript они не знают Моя ошибка была в том, что я предположил, что какие-нибудь зачатки JavaScript'a все-таки есть. EDIT2: Да, это по поводу автоматов и тюрингов. Ну, как бы функция в AS3 это всегда метод, т.е. это объект со свойствами и контекстом который функцию выполняет, а функции первого порядка - это операторы, например... Но если я им сейчас скажу, что + это "настоящая" функция, а function foo() {} - это вообще-то метод, то я даже не знаю, как это потом разгребать |
|
Обновил(-а) wvxvw 12.05.2010 в 21:34
|
12.05.2010 23:16 | |
Цитата:
Это обоснованная учебным процессом реальность. Хотя может в нашей стране на это и смотрят сквозь пальцы, как и на пиратские программы.
Я не понаслышке знаком с методами обучения в серьезных (без всяких кавычек) учебных заведениях именно программистской направленности - МГУ-МЭИ-МФТИ - там вполне адекватные преподаватели. UPD Долго втыкал во фразу: Цитата:
Извесный предшевственник - язык Smalltalk, а так же Lisp и Object Pascal Java часто считается самой классической реализачией объектно ориентированого языка.
Цитата:
Известный предшественник языка Си - язык Smalltalk, а также, языки Lisp, Object Pascal и Java часто считаются
Известный предшественник языка Си - язык Smalltalk, часто считается самой классической реализацией объектно-ориентированного языка. Я не грамманаци, но это уж чересчур - особенно для урока ))) UPD2 Цитата:
AS3 - это исключительно объектно ориентированый язык со статической типизацией
скорее: AS3 - прототипно-ориентированный язык со статической типизацией, поддерживающий ООП парадигму и некоторую часть функциональной парадигмы (замыкания, динамические типы итп) (Paradigm Multi-paradigm: prototype-based, functional, imperative, scripting) Извини за назойливость, но нехорошо преподавать с ошибками, особенно фактическими. |
|
Обновил(-а) Котяра 12.05.2010 в 23:55
|
13.05.2010 02:44 | |
Интереса ради установил всё это дело по инструкции. В Windows 7 - FlashDevelop по умолчанию ставится в "Program Files (x86)/FlashDevelop" при попытки после установки запустить программу. последовательно вываливается около десяти окон с алярмами. Вариантов 2: континуэ или exit. Соответственно та же ерунда и при закрытии FlashDevelop. Не могу утверждать на 100%(не проверял), но очень сильно подозреваю что это из-за контроля учётных записей пользователей(UAC), так как если запускать программу "от имени Администратора", то всё работает на удивление справно.
Выводы: 1) Задать насильный запуск всегда от администратора. (Свойства-Совместимость-Уровень прав-Выполнять эту программу от имени администратора) 2) Во время установки не использовать системных папок Windows и установить например в "C:/flex/FlashDevelop" Затем, "Запустить FlashDevelop > F10 > AS3Context > Flex SDK Location > указать папку, куда вы до этого распаковали SDK (C:/flex/sdk)." Не сразу дошло что это клавиша "F10". В течении десяти минут где то искал такой пункт в меню. Но это уже, конечно, я затупил EDIT1: Забавная штука кстати. Недостатки перед средой разработки Adobe Flash CSX вероятно в том, что нет адекватного графического интерфейса(я по крайней мере найти пока не смог) Да и вообще не понятно очень многое, например как эмбдить шрифты и т.д. и т.п. Предполагаю, что работа с FlashDevelop чем то похожа на разработку "Flash JavaScript File" где каждый чих нужно описывать программно. Может конечно я сильно ошибаюсь, но первое впечатление такое. |
|
Обновил(-а) AzagThoth 13.05.2010 в 03:27
|
13.05.2010 20:04 | |
Psycho Tiger, если wvxvw не будет против, то я отвечу. Но в принципе мне кажется, что я написал достаточно для понимания...
|
08.12.2010 06:49 | |
А ещё уроки будут?
|
Последние записи от wvxvw
- Dired - текстовый проводник по файловой системе (29.06.2013)
- Навигация по HTML с WASD (09.06.2012)
- JavaScript, все не так плохо (07.06.2012)
- Что такое tarball и чем его пакуют (11.04.2012)
- Критика Presentation Model (18.02.2012)