ГлавнаяРегистрацияВход Приветствую Вас Гость | RSS
   
Меню сайта
Разделы новостей
mp3player
Главная » 2007 » Июль » 8 » Прототипы
Прототипы
16:04
Источник: www.webarchive.ru

Во Флэш существует ряд встроенных объектов, таких как 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.

Категория: Flash | Просмотров: 493 | Добавил: VVS | Рейтинг: 0.0/0 |
Всего комментариев: 0
Имя *:
Email *:
Код *:
Поиск
Форма входа
Наш опрос
Чего Вам не хватает на сайте?
Всего ответов: 21
Друзья сайта
Статистика
Возраст