| « Поставить закладку » « Сделать стартовой » | |||
|
|||
|
Глоссарий
Что здесь надо изменить: Очень старо, глупо и неточно, надо бы обновить или переписать! Описания должны быть более короткими, с одним примером и в сравнении с JAVA, при необходимости...
Класс (Class)В JAVA, сначала создается дизайн для объекта, а уже потом на основе этого дизайна создается объект. Дизайн - это класс, а объекты - экземпляры. В ActionScript функция может быть использована, как шаблон дизайна или может быть запущена напрямую. Технически в ActionScript нет классов, но класс это нечто вроде кастрированной функции, такая функция может быть использована только в качестве шаблона (template). Таким образом, если используете функцию ТОЛЬКО, как шаблон, то можете думать о ней, как о классе. Проводя параллель с Flash, можно сказать, что символы в библиотеке, это ваши классы (то есть ещё не использованные шаблоны). Каждый раз, когда вы перетаскиваете один из них на вашу "рабочую площадку", он становится экземпляром (то есть новым объектом, созданным с помощью нового шаблона). Вы не можете видеть их в конечном SWF файле, если вы не "вытащили" их из библиотеки на рабочую площадку (кстати, они даже не экспортируются, до тех пор, пока вы не перетащите их на рабочую площадку или пока не установите для них привязку к библиотеке). Пример: // ********** Class School ********** function School( name ) { this.name = name; } school1 = new School( "UTOO" ); // экземпляр, названный school1 school2 = new School( "FLU" ); // экземпляр, названный school2 school3 = new School( "TukU" ); // экземпляр, названный school3 В данном куске кода school1.name is "UTOO" school2.name is "FLU" school3.name is "TukU" (University of Tuktoyuktuk!) а в этом примере мы решили ни о чём не "спрашивать"
Экземпляр (Instance)Экземпляр - объект, созданный из шаблона. Шаблон, это функция, которую часто называют классом. Во Flash, всё, что у есть вас в конечном SWF файле, всё это экземпляры чего-нибудь из библиотеки (только не говорите, что делаете фон из больших прямоугольников, не являющихся символами). Ключевой момент: каждый экземпляр может иметь различные свойства, как во
Flash, где экземпляры могут быть масштабированы, раскрашены и озаглавлены
по-разному или иметь разные function Point( x, y ) { this.x = x; this.y = y; } pt0 = new Point( 5, 7 ); // pt0 теперь экземпляр класса Point' pt1 = new Point( 3, 9 ); // каждый из них имеет разные свойства each pt2 = new Point( 9, 1 ); // как видите, pt2.x равен 9,а pt2.y равен 1
Аргументы (Arguments)Аргументы - это то, что передаётся в функции через круглые скобки. Всё, что
передаётся таким образом, выровнено один к одному с аргументами, определёнными в
функции. Всегда старайтесь давать "говорящие" имена с обеих сторон. Помните, что
ситуация подобная той, что приведена в примере ниже, не приравняет function Point( x, y ) { this.x = x; this.y = y; } var y = 30; p = new Point( y ); // так "x" будет равен 30, а "y" нулю thisthis - относится к созданному экземпляру, а не к классу, из которого он был
создан. А как во Flash? Допустим, у вас есть мувиклип под названием В ActionScript всё работает точно так же. function Graphic1 ( x, y, name, xScale, yScale, rotation ) { this.x = x; this.y = y; this.name = name; this.xScale = xScale; this.yScale = yScale; this.rotation = rotation; } instance0 = new Graphic1( 100, 100, "mc0", 100, 100, 45 ); instance1 = new Graphic1( 444, 222, "mc1", 200, 200, 30 ); Как видите, теперь есть два экземпляра, каждый со своими свойствами. Вы
можете сопоставить каждый проходящий аргумент с именем каждого аргумента в
классе
Область видимости (Scope)Массив аргументов (Agruments array)Ещё немного об аргументах. В ActionScript вы можете оперировать сразу несколькими аргументами, различающимися в функции. Вы спросите: "А зачем нам это?" Ну, скажем, у вас есть класс, который хранит имена людей. Так как полное имя человека содержит фамилию, имя и отчество, ваш класс скорее всего будет выглядеть вот так: function setName( first, middle, last ) { this.firstName = first; this.middleName = middle; this.lastName = last; } person0 = new setName( "John", "Hopkins", "University" ); ... никаких проблем. Хотя постойте! А как же быть с теми, чьи отчества нам не известны? Вот незадача! Ну да ладно. Мы можем оперировать двумя аргументами, если нет отчества и тремя, если оно есть. Просто проверим, обработано ли последнее значение перед тем, как вписать отчество: function setName( last, first, middle ) { this.lastName = last; this.firstName = first; if (middle <> null) { this.middleName = middle; } } person0 = new setName( "university", "John", "Hopkins"); person1 = new setName( "Catraz", "Al" ); person2 = new setName( "Kahaule", "Al" ); person3 = new setName( "Krisnia", "Harry" ); Замечательно! Работает!.. Но как же быть с именами японцев и других "алиенов",
которые пишут имя в конце, а фамилию в начале? Наверное, вы попробуете поменять
"имя" на "фамилию". Теперь самое время вспомнить французов, а заодно и их
ближайших родственников :))) Такие, как Жан Пьер Жозе деБрюйи или ещё лучше вот
такое имя Гастон Бернар Жозе Рене даЛак ауФонтен Баге деБрюйи. Похоже, у нас
появились проблемы. Непонятно, сколько имён мы передаёт в arguments[0] arguments[1] arguments[2]... Заметьте, что объект "аргументы" доступен только внутри функции, что логично, так как прошедшие аргументы, локальны по определению. Теперь вы можете сотворить что-нибудь вроде: // поставим отчество после фамилии и имени function setName( family, given ) { this.familyName = family; this.givenName = given; if (arguments[2] <> null) { this.middleName = new Array(); for( var i = 2; i < arguments.length; i++) { this.middleName[i-2] = arguments[i]; } } } person0 = new setName( "Robin", "Sean", "Debreuil" ); person3 = new setName( "Debreuil", "Summer" ); person4 = new setName( "Debreuil", "Jean", "Pierre", "Josheph" ); person5 = new setName( "Debreuil", "Gaston", "Bernard", "Josheph", "Rene", "d'Lac", "au'Fontaine", "Baguette" ); trace( person5.middleName.toString() ); // возврат будет выглядеть так: // Bernard, Josheph, Rene, d'Lac, au'Fontaine, Baguette Если ваш Ну хорошо, а как обстоит дело с Flash? Какова альтернатива? Вот вы создаёте
новый символ в библиотеке, передаёте ему аргументы, например,
Прототип (prototype)Прототип - место, откуда класс получает дополнительные методы/свойства. Его уровень тот же, что и у класса. __proto__ __proto__ - место, откуда объект наследует методы. Одним уровнем выше класса.
calleecallee - это часть объекта
А вот
supersuper - (java) указывает на то, от чего унаследован текущий класс.
Используется, чтобы указать, какой конструктор наследник должен использовать,
вызывая конструктор-родитель (его можно вызвать только первым и всего один раз).
Также часто используется для получения метода или свойства, наследуемого,
перезаписанного наследником. Вообще очень похож на Рубрика: Flash
Создаем контекстно-зависимое WPF-приложени....
Подробнее... |
Рубрика: Windows 7
| Добавлено: 05.12.2008
Windows Vista SP2: что внутри и что важно?.
Подробнее... |
Рубрика: Windows Vista
| Добавлено: 05.12.2008
Вышел MySQL 5.1.30, первый стабильный рели....
После публикации 29 тестовых версий анонсирован первый стабильный релиз MySQL 5.1, пригодный для промышленной эксплуатации и обеспечивающий увеличение производительности для "тяжелых" SQL запросов, по сравнению с MySQL 5.0, примерно на 15-20%. Главные новшества появившиеся в MySQL 5.1:
Подробнее... |
Рубрика: MySQL
| Добавлено: 28.11.2008
Остальные статьи: |
Цитата дня (все,добавить):
|
Realcoding.NET
© 2003-2008 |
Контакты |
Реклама на сайте
|