Deprecated: Function set_magic_quotes_runtime() is deprecated in /var/www/weblon/data/www/weblon.ru/eda04dfec913e1568e51ed751ae9267b/sape.php on line 219 Deprecated: Function set_magic_quotes_runtime() is deprecated in /var/www/weblon/data/www/weblon.ru/eda04dfec913e1568e51ed751ae9267b/sape.php on line 225 Знакомьтесь: прототипы :: Flash :: WebLon.Ru - Web design для начинающих, дизайн для чайников, статьи по интернет бизнесу, обучение, публикации для вебмастера
шаблоны сайтов, готовый дизайн сайта, бесплатные шаблоны, логотипы, статьи, уроки Photoshop
Главная Карта сайта Связь
WebLon.ru
Шаблон №0001
 
weblon.ru        weblon.ru        weblon.ru        weblon.ru        weblon.ru        weblon.ru        Weblon RSS
     
 

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

 
   
     
 

 
   

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