« Поставить закладку » « Сделать стартовой »

« Форумы » « Блоги » « Статьи » « Новости » « Файлы » « Realcoding IRC » « Site map » « Поиск »


Главная Главная
Анонсы Анонсы
Форумы Форумы
Каталог Каталог
Поиск Поиск
Опросы Опросы
Книжный магазин Книжный магазин
Реклама на сайте
Публикации Публикации
Партнеры Партнеры
Карта Карта сайта
Рассылки Рассылки
RSS экспорт
Настройки Настройки
О нас пишут О нас пишут
Контакты Контакты
Гостевая книга Гостевая книга


ПнВтСрЧтПтСбВс
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31        
    Популярное
Свой спамер на Delphi

Функция AccessResource

Когда изменяются папки

Безопасность ваших PHP скриптов

Массив из элементов - как с ним бороться или как с ним дружить

Роль администратора базы данных (АБД)

Первоначальная настройка MySQL

Поле редактирования

Работа с базами данных в Borland C++ Builder

Обработка строк в РНР




    Архив файлов



    Сообщества

    Документация

    Кто на сайте
Вы не зарегистрированы.
Имя:

Пароль:

Запомнить

Регистрация позволит Вам пользоваться дополнительными сервисами.
Сейчас на сайте:
Гостей: 160
Пользователей: 1
  • admin

  • Статьи:: Интернет технологии :: Flash :: Глоссарий



    отправить ссылку другу версия для печати  Обсудить на форуме

    Глоссарий



    Что здесь надо изменить: Очень старо, глупо и неточно, надо бы обновить или переписать! Описания должны быть более короткими, с одним примером и в сравнении с 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
    

    В данном куске кода School, это класс, а school1, school2, и school3 - экземпляры класса School. Согласно общепринятым правилам кодирования, имена классов начинаются с заглавной буквы, так что вы можете легко отличить их от экземпляров, имена которых обычно начинаются со строчных букв. (Наверное, так получилось из-за того, что классы более "важны")

    school1.name is "UTOO"
    school2.name is "FLU"
    school3.name is "TukU" (University of Tuktoyuktuk!) 
    

    а в этом примере мы решили ни о чём не "спрашивать" School напрямую, потому что School, это класс и следовательно, это не реальный объект, только шаблон. Ведь мы же не станем пытаться найти _x координату чего-либо в библиотеке.

     

  • Экземпляр (Instance)

    Экземпляр - объект, созданный из шаблона. Шаблон, это функция, которую часто называют классом. Во Flash, всё, что у есть вас в конечном SWF файле, всё это экземпляры чего-нибудь из библиотеки (только не говорите, что делаете фон из больших прямоугольников, не являющихся символами).

    Ключевой момент: каждый экземпляр может иметь различные свойства, как во Flash, где экземпляры могут быть масштабированы, раскрашены и озаглавлены по-разному или иметь разные _x и _y координаты.

    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)

    Аргументы - это то, что передаётся в функции через круглые скобки. Всё, что передаётся таким образом, выровнено один к одному с аргументами, определёнными в функции. Всегда старайтесь давать "говорящие" имена с обеих сторон. Помните, что ситуация подобная той, что приведена в примере ниже, не приравняет x к нулю, а y к 30:

    function Point( x, y )
    {
        this.x = x;
        this.y = y;
    }
    
          var y = 30;
    p = new Point( y ); // так "x" будет равен 30, а "y" нулю
     
  • this

    this - относится к созданному экземпляру, а не к классу, из которого он был создан. А как во Flash? Допустим, у вас есть мувиклип под названием Graphic1 (почему бы нет?), вы использовали его на рабочей площадке дважды и дали экземплярам имена mc0 и mc1. Если вы используете слово this внутри мувиклипа Graphic1, то оно будет обращаться к экземпляру mc0 (если это mc0), и к экземпляру mc1, (если это mc1). Если вы используете trace ( this._x ); в окне мувиклипа Graphic1, то вы отследите _x расположение каждого клипа.

    В ActionScript всё работает точно так же. this обращается к текущему экземпляру, а не к классу. Если рассмотреть пример на Flash'е, то:

    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 );
    

    Как видите, теперь есть два экземпляра, каждый со своими свойствами. Вы можете сопоставить каждый проходящий аргумент с именем каждого аргумента в классе Graphic1 (обратите внимание, что пробелов в именах функций быть не может!). Само по себе это конечно ещё не создаёт мувиклипа. Это просто несколько экземпляров класса в ActionScript, ничего конкретного. Двигаемся дальше, ребята. Поехали!..

     

  • Область видимости (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" );
    

    Замечательно! Работает!.. Но как же быть с именами японцев и других "алиенов", которые пишут имя в конце, а фамилию в начале? Наверное, вы попробуете поменять "имя" на "фамилию". Теперь самое время вспомнить французов, а заодно и их ближайших родственников :))) Такие, как Жан Пьер Жозе деБрюйи или ещё лучше вот такое имя Гастон Бернар Жозе Рене даЛак ауФонтен Баге деБрюйи. Похоже, у нас появились проблемы. Непонятно, сколько имён мы передаёт в setName(). К счастью в каждой функции есть встроенный объект под названием (как вы, наверное, уже догадались) "аргументы" (arguments). Это объект (а не группа), хранящий прошедшие аргументы в форме:

    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
    

    Если ваш setName остаётся вообще без аргументов, то можно прикупить их или покопаться в Monty Python, кстати, не забудьте взять чек. Если вы думаете, что проблема уже решена, то вспомните об именах китайцев. У них последовательность такова: фамилия, имя, имя. Наверное, в этом случае вам придётся разрешить пробелы в именах (обычно они пишутся в кодировке Unicode, которую Flash 5 не поддерживает). Ну а как быть, например, с "артистом, которого звали 'Принц'"? Нравится он вам или нет, но как не восторгаться огромным списком таких имён во всех базах данных мира! Интересно, придуман ли для этого уже новый символ в Unicode?

    Ну хорошо, а как обстоит дело с Flash? Какова альтернатива? Вот вы создаёте новый символ в библиотеке, передаёте ему аргументы, например, _x, _y и _level в зависимости от того, куда вы его помещаете. Такие параметры, как _xScale не установлены (и получают значения по умолчанию, в нашем случае - '100'). Однако, если дублировать экземпляр символа, то вся информация экземпляра передаётся новому экземпляру, как будто вы передаёте одну и ту же функцию (createInstanceOfSymbol) и нескольким аргументам, число которых будет зависеть от того, как именно вы решили всё это построить.

     

  • Прототип (prototype)

    Прототип - место, откуда класс получает дополнительные методы/свойства. Его уровень тот же, что и у класса.

    __proto__
    

    __proto__ - место, откуда объект наследует методы. Одним уровнем выше класса.

     

  • callee

    callee - это часть объекта arguments, который есть у любой функции. Вы обращаетесь к нему вот так: arguments.callee. Он возвращает текущую функцию (а не <строка> текст текущей функции, как это реализовано в JavaScript). Это логично, так как во Flash нельзя оценить скрипт в самом начале. Немного похоже на this, не так ли? Но this указывает на текущий экземпляр, а не на текущую функцию. Кстати, доступ к arguments.callee есть только в пределах функции.

    arguments.caller не поддерживается в ActionScript (это выражение обращается к объекту, который вызвал текущую функцию), JavaScript от него уже тоже отказывается.

    А вот arguments.length в ActionScript поддерживается. Это выражение обращается к числу прошедших аргументов. Его не будет видно в петле (loop'е) 'for in' объекта arguments, а вот callee будет там виден, так что будьте внимательны. (Откровенно говоря, я думаю, что и callee тоже не должен быть виден и похоже, что в этом разработчики JavaScript со мной солидарны).

     

  • super

    super - (java) указывает на то, от чего унаследован текущий класс. Используется, чтобы указать, какой конструктор наследник должен использовать, вызывая конструктор-родитель (его можно вызвать только первым и всего один раз). Также часто используется для получения метода или свойства, наследуемого, перезаписанного наследником. Вообще очень похож на __proto__ в ActionScript.




  • Рубрика: Flash




    Создаем контекстно-зависимое WPF-приложени....

    Windows 7

    Начинаем цикл публикаций, призванных помочь начинающим программистам в создании контекстно-зависимых приложений для Windows 7. Об этом много говорили на PDC да и мы неоднократно писали о этом новом классе приложений. Пользователи Windows 7 build 6801 могли заметить появление в гаджете погоды опции автоматического определения местоположения компьютера. И сегодня у вас появилась уникальная возможность попробовать себя в создании подобных приложений.


    Подробнее... | Рубрика: Windows 7 | Добавлено: 05.12.2008

    Windows Vista SP2: что внутри и что важно?.

    Windows Vista

    В связи с началом программы Customer Preview Program (CPP) для Windows Vista® Service Pack 2 (SP2) хотелось бы вкратце рассказать об основных особенностях этого пакета, а также призвать вас к его загрузке и тестированию. Windows Vista SP2 представляет собой традиционный пакет сервисных обновлений, включающий все накопительные обновления безопасности, выпущенные с момента релиза SP1 в марте 2008 года. Кроме того, Windows Vista SP2 добавляет поддержку новых типов устройств и развивающихся стандартов, которые обретут популярность уже в ближайшее время, и включает все хотфиксы, обнаруженные через программу улучшения качества ПО (CEIP).


    Подробнее... | Рубрика: Windows Vista | Добавлено: 05.12.2008

    Вышел MySQL 5.1.30, первый стабильный рели....

    MySQL

    После публикации 29 тестовых версий анонсирован первый стабильный релиз MySQL 5.1, пригодный для промышленной эксплуатации и обеспечивающий увеличение производительности для "тяжелых" SQL запросов, по сравнению с MySQL 5.0, примерно на 15-20%. Главные новшества появившиеся в MySQL 5.1:


    Подробнее... | Рубрика: MySQL | Добавлено: 28.11.2008

    Остальные статьи:

    Тестирование параллельных программ
    Архитектура AMD64 (EM64T)
    Платформа 2009. Определяя будущее
    Windows Vista Bridge Sample Library - упра...
    Оптимизация 64-битных программ
    Подгрузка через AJAX HTML-кода, содержащег...
    Обзор нового релиза самой мощной Ajax библ...
    Firebug 1.3 и 1.4 alpha — что нового и инт...
    Релиз Microsoft Silverlight 2.0. Что новог...
    XML документация в C#
    Курсоры в MySQL 5
    Microsoft опубликовала подробности о сесси...
    Microsoft делится подробностями о том, что...
    Тестируем новый javascript от нового брауз...
    MySQL Query Cache
    Использование провайдеров компиляции в As...
    Чего мы ждем от C# 4.0
    Delphi 2009 и C++Builder 2009
    Джоэл Спольски и Джеф Этвуд запустили новы...
    Поиск кода Google /* что нового? */


    Цитата дня (все,добавить):

    Портал фрилансеров

    работа на дому


        Рубрикатор

    Программирование

    C/С++
    Обучение
    Windows API
    XAML
    Моделирование
    Паттерны
    Visual Basic 7 .NET
    WxWidgets
    Функции WinApi
    Функции С++
    Разработка под Mac OS
    Eiffel
    Visual Studio 2008
    UI дизайн
    Алгоритмы
    Конкурсные статьи
    Turbo Pascal
    Visual Studio
    CASE-средства
    Visual Studio 2005
    Без VCL
    Delphi
    Тех. документация
    Тестирование
    Software Testing
    ООП
    TCP/IP
    Google Android
    Windows Installer
    .NET Framework
    Драйвера
    C# C Sharp
    Справка
    Проектирование
    Информ. системы
    Visual Basic
    Assembler
    Оптимизация кода
    Gtk+
    Компоненты
    Реинжиниринг
    Управление проектами
    Extreeme programming
    Lotus Notes
    Алгебраическое проектирование


    Интернет технологии

    PHP
    Perl
    ASP
    WAP
    Cookies
    SSI
    CGI
    Web Servers
    VB Script
    DNS
    CSS
    XML
    Html
    Java Script
    Java2ME
    Firewall
    Flash
    .htaccess
    Apache
    VRML
    Протоколы
    Поисковые системы
    Технология JAVA
    Учебник по PHP
    Учебник по JavaScript
    Учебник по XML
    Java Q&A
    AJAX
    DHTML
    XHTML
    Dreamweaver
    Web 2.0
    Python
    Вебмастеру
    Cisco
    Ruby on Rails
    Silverlight

    Базы данных

    Access
    InterBase
    MySQL
    Oracle
    ADO .NET
    Основы SQL
    Учебник по Access 2002
    MS
    Microsoft FoxPro
    Доступ к данным
    XML в MS SQL Server 2000
    ODBC и MyODBC
    Обучение
    Caché
    DB2
    PostgresSQL
    Sybase
    Теория
    Хранилища данных
    Безопасность
    Реляционные данные
    MySQL и mSQL

    Остальное:

    Разное
    Обзоры книг
    Безопасность
    Графика и дизайн
    Юмор
    Linux
    Фракталы
    Microsoft Axapta
    Многоядерность
    Сети
    Microsoft Office
    Работа
    MS-DOS
    Криптография
    Графика и игроделание
    Новости SDK
    Системы защиты
    Учебник по AutoCad
    CVS
    Windows XP
    Windows Server 2003
    Windows Vista
    Windows 7
    Мероприятия