Сегодня: Пятница, 29.03.2024, 11:10 (МСК)| Здравствуйте, Гость| Мой профиль | Регистрация | Вход | RSS

Что такое matte painting?

Моделирование в Maxon Cinema4D

Роботы и экзоскелеты

Google Chrome. Таким должен быть браузер

Программы — виртуальные гитаристы
Главная » РАЗРАБОТКА КОМПЬЮТЕРНЫХ ИГР

Территория Flash. Основы ActionScript 2.0. Выпуск 4

30.07.2010
… в доме, который построил Джек

Мы продолжаем изучать основы ActionScript2. Напомню, что сейчас рассматриваются основные типы данных, и мы остановились на object. На самом деле я специально разбил описание типа object на две части. В первой я просто показал пару завлекательных примеров, а во второй, которую вам предстоит прочитать, мы несколько внедримся в основы объектно-ориентированного программирования. На всякий случай напомню, что данный небольшой цикл материалов рассчитан на начинающих.  


Тип object. Продолжение


В прошлом выпуске мы весьма поверхностно прошлись по типу object и привели несколько стандартных примеров. Ну а теперь давайте посмотрим на все более глобально. Как сейчас называется программирование в современных средах разработки? Правильно, объектно-ориентированным (ООП). И при этом мы уже начали рассматривать объекты, и постепенно стали понимать, что это такое. На самом деле, объект — это совокупность переменных и подпрограмм, представленная в виде единой структуры, объединенной некоей общей концепцией. Переменные, как мы уже упоминали, являются ничем иным как свойствами объекта, с помощью которых можно менять его состояние, а подпрограммы — методами, за счет которых мы можем управлять его (объекта) поведением. 
При этом стоит отметить один важный момент, заключающийся в том, что объекты создаются на базе шаблонов, называемых классами и некоторые свойства наследуют от них. 
Чтобы вам было более иллюстративно представить, возьмем пример из обычной жизни. Допустим, какой-нибудь музыкальный инструмент — гитару. Она имеет свои индивидуальные свойства и методы, которые можно к ней применить, при этом относится к классу струнных щипковых, который содержит в себе информацию о способе звукоизвлечения и т.п., эти свойства гитарой наследуются. К этому же классу струнных щипковых относится и множество других различных музыкальных инструментов типа банджо, мандолины и т.п. Но вместе с тем сам класс струнных щипковых является подклассом струнных, т.е. в данном случае «струнные» являются суперклассом. В общем, такие цепочки могут быть абсолютно любыми по структуре и длительности, иметь множество ответвлений. Не совсем понятно?
Кот серый с зелеными глазами, вредный (индивидуальные свойства и методы), относится к одной из пород домашних кошек (свойства породы — свойства класса), которые относятся к семейству кошачьих (свойства и особенности строения животных — свойства надкласса), которые в свою очередь относятся к млекопитающим и так далее. 
В общем, если вы знаете произведение под названием «Дом, который построил Джек», то это и есть классический пример наследования в объектно-ориентированном программировании. 
Причем не только в нем, поскольку по примерно такому же принципу разветвленных цепочек разработано очень многое, например, те же структурированные базы данных, или же, когда вы начнете рассматривать структуру XML-файлов, то столкнетесь примерно с такой же картиной. Дело в том, что само объектно-ориентированное программирование не является чем-то искусственным или неестественным для нашего мышления, наоборот оно его во многом повторяет.


Что такое классы?


Как вы поняли классы — это шаблоны, на базе которых создаются объекты. Например, чтобы вывести новую породу собаки или новый сорт картофеля вам не нужно повторять все этапы эволюции, а стартовать от какого-нибудь близкого класса. Точно также и в программировании, для создания нового объекта вы используете конструктор соответствующего ему класса. Это не только минимизирует код, но и оптимизирует саму программу. Заложенное автоматизированное наследование в данном случае повышает эффективность работы алгоритмов, значительно защищает от путаницы и ошибок. Сама структура получается стройной, понятной и организованной. В принципе, в ActionScript классы задаются по-другому, если сравнивать его с теми же С++ и Java. Здесь как всегда — все в более свободном стиле. 
На данном этапе это пока все, что вам необходимо знать о классах.


Тип object. Продолжение


Многим может показаться, что тип object относится к одноименному классу Object (обратите внимание на то, что названия классов пишутся с заглавной буквы, а типов — со строчной), являющемуся прародителем всех объектов и классов в ActionScript. Но это не совсем верно. Правильнее будет сказать, что все экземпляры класса Object принадлежат к типу object, но вместе с тем, не все объекты напрямую относятся к одноименному классу. 
Еще один важный момент: Object следует причислять к динамическим классам, что подразумевает возможность изменения их свойств в процессе воспроизведения фильма либо добавление новых свойств. К динамическим классам также относятся: Array, MovieClip, TextField и Button. Если же вы сталкиваетесь со статичным (простым) классом, то свойства добавлять там уже нельзя. 


Тип movieclip


Вот тут то и начинается, что называется свистопляска. На вопрос: какое основное специфическое отличие Adobe/Macromedia Flash от других продуктов, многие часто отвечают — специальная оболочка вывода графического интерфейса Flash Player. Это правильный ответ, но не совсем открывает саму суть. 
Правильный ответ должен быть таким: основной структурный элемент флэша — это клип. Конечно, вы можете нарисовать или создать с помощью стандартных компонент любую примитивную программную графическую оболочку и функционально она ничем не будет отличаться от того, что вы можете написать на С++, Delphi или Java. Но все равно вы это все делаете в рамках некоего клипа (фильма), мало того, этот клип может включать в себя множество других клипов, которые можно располагать в различных кадрах на разных слоях. 
В различных кадрах и на разных слоях вводится и программный код. Это вносит очень много путаницы и тут стоит напомнить, что ActionScript изначально был создан всего-лишь как специализированный обслуживающий язык, и хотя мы можем наблюдать нечто на базе ECMA-262, никто не исключал специфику самой программной оболочки флэша. 
В этом проявляется основное расхождение с другими языками и вообще с ECMA-платформой. 
И, кстати, даже с первых версий флэша можно сказать, что ActionScript там был изначально предназначен для работы с клипами, а стандартное программирование стояло на втором плане. В других языках вы не встретитесь с понятиями схожими с «клипами» во флэше. Ведь клипы — это не просто объекты, а визуальные динамически изменяющиеся элементы, в которых может быть множество слоев, существует привязка к временной шкале, кадрам, системе координат, имеется множество уникальных методов и свойств. То есть, создатели ActionScript изначально решали очень специфическую задачу. 
Многие могут подумать, что movieclip — это тоже самое, что и object, но на самом деле это не так, поскольку есть разница. Например, при вызове клипа вы имеете в виду конкретный элемент (например, swf-фильм) с конкретным же именем, а не некую область памяти, как это есть в объектах. Объекты существуют пока на них есть ссылки, клипы — до тех пор, пока их не удалят из временной диаграммы. Естественно, к клипам не применимо использование таких операторов как new и delete, вместо них используются createEmptyMovieClip и removeEmptyMovieClip, также возможна загрузка клипов из библиотеки либо каких-либо других источников. 
Клипы больше связаны с визуальной частью флэша, в то время как объекты могут быть созданы и для внутреннего использования в рамках кода. В общем, отличий достаточно много, хотя, если посмотреть на все в общем, то можно отметить некую схожесть при работе с клипами и работе с объектами. Причем клипы могут располагаться как свойства объектов, а объекты как свойства клипов. Это вносит еще больше путаницы.
В следующем выпуске мы более подробно рассмотрим movieclip’ы, и подробно поговорим о классах, а сейчас сделаем некоторые промежуточные выводы…


Промежуточные выводы


В последних версиях флэша можно наблюдать лавирование между двумя радикально отличающимися направлениями: профессиональным программированием и реализацией простого языка, понятного дизайнерам, а не программистам. В первом случае дальнейшее развитие было очевидно — приближение к Java, что, в принципе, мы и имеем в ActionScript3 и Adobe Flex 2. А для второго варианта ActionScript2 уже является чрезмерно достаточным. Хотя тут опять же следует отметить турбулентность в стане разработчиков. Ведь, версии ActionScript’ов (1,2 и 3-я) практически не совместимы между собой. Именно такой ценой во флэш было внедрено профессиональное программирование. 
Поэтому, если вы читаете сейчас в интернете одно из частых объявлений типа «на долгосрочные серьезные проекты требуются разработчики Flex (не Flash), желательно твердое знание Java», то это говорит о том, что ActionScript3 — это уже чистое программирование, а Flash с его ActionScript2 — это другая отдельная «тусовка». 

Кристофер

Перепечатка материалов или их фрагментов возможна только с согласия автора.







Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Ассоциация боевых роботов
Рекомендуем...
Новости

Разделы

Опросы

Какой язык программирования вы считаете наиболее актуальным сегодня?
Всего ответов: 329

Друзья

3D-кино






Найти на сайте:








Об авторе       Контакты      Вопрос-ответ        Хостинг от uCoz