Портал для веб-мастера
Вход пользователей
Поиск статей
WoWeb.ru » Статьи » Flash » Первые шаги

Flash :: Знакомьтесь: прототипы.

Во Флэш существует ряд встроенных объектов, таких как MovieClip, String, Array, Color.
Каждый из них имеет свои методы и свойства исчерпывающим образом описанные в руководстве, прилагаемом к программе. Но разве вам никогда не хотелось поиграть с ними в Доктора Франкенштейна? Например, сделать так, чтобы любой мувик получил возможность программного отражения по горизонтали и вертикали, ну что-то типа ball.flipX(). Другими словами, чтобы любой мувик автоматически наследовал ваш flipX() метод.

На самом деле это сделать не просто. А очень просто! Достаточно знать правильный синтаксис, и вы сможете добавлять собственные методы к прототипам встроенных объектов. Например, вот код добавляющий метод flipX() к классу MovieClip:

MovieClip.prototype.flipX = function () {
    this._xscale = -this._xscale;
};

Ухххуу!! Теперь вы можете флипнуть (отразить) любой мувик простым вызовом ВАШЕГО метода:

mc.flipX();

А вот и метод flipY() для сравнения:

MovieClip.prototype.flipY = function () {
    this._yscale = -this._yscale;
};

В общем виде добавление метода к встроенному объекту происходит так:

BuiltinObject.prototype.method = function () {
    // ну а здесь пошел наш код
};

 

Перезаписываем встроенные методы.

Вы можете не только добавлять новые методы к встроенным объектам, но и перезаписывать уже встроенные методы.

Для перезаписи (переназначения) метода используется тот же синтаксис что и при добавлении нового. Например, метод Array.push() выполняется очень-очень медленно. А мы возьмем и заменим его следующим кодом:

Array.prototype.push = function (data) {
    this[this.length] = data;
};

Вышеупомянутый код используется для добавления data в конец текущего массива. Заметьте, что ключевое слово this используется для обращения к текущему объекту из метода.

Расширяем функционал статических встроенных объектов.

Расширение некоторых встроенных объектов отличается от вышеописанного. «Статичные» объекты (Math, Key, Mouse) не имеют прототипированных свойств, поэтому вы должны добавлять методы непосредственно к объекту. Например, вот как вы должны записать функцию Math.distance() для нахождения дистанции между двумя точками:

Math.distance = function (x1, y1, x2, y2) {
    var dx = x2 - x1;
    var dy = y2 - y1;
    return Math.sqrt (dx*dx + dy*dy);
};

Вот общий синтаксис:

StaticObject.method = function () {
    // code
};

Не используйте следующий синтаксис:

StaticObject.__proto__.method = function ()

Использование _proto_ в этом контексте добавляет метод к Object.prototype.

Автор: Robert Penner · Добавлена: 2002-11-08
Просмотров: 4425 · Рейтинг: 3.8

Всего комментариев: 1
[1] maks(блейд) 2009-03-15, 3:25 PM
Автор продолжай в том же духе Спам

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

Категории раздела
Flash
Apache
WWW
PhotoShop
Веб-дизайн
Раскрутка и реклама
Базы данных
3D графика
Хостинг
Истории веб-мастеров
Web-технологии
Сетевая безопасность
Программирование для Web
Операционные системы

Новые статьи
Лучшие статьи
Популярные статьи
Комментируемые статьи
Разделы сайта
Скрипты
Статьи
Шрифты
Флэш исходники
HTML шаблоны
Партнерки
Клипарты
Смайлы
Фоны
Гифы
Иконки
Опрос сайта
Есть ли у вас свой сайт?
Всего ответов: 141159
Наша кнопка
WoWeb.ru - портал для веб-мастера