Передача ссылки на функцию многим объектам



Функция — это тоже объект, и с ней можно обращаться как и со всеми прочими объектами. А раз функция — объект, то на неё есть ссылка. Часто бывает удобнее раздать нескольким объектам ссылку на функцию, которой им следует пользоваться. Мы могли бы запросто создать по функции в каждом объекте, но когда нам везде нужны одни и те же действия — раздать объектам ссылки на одну функцию гораздо удобнее. Это делает программу логичнее, облегчает её поддержку и отладку.


spin = function ()
{
// функция работает с объектом через ссылку this
//
// вращаем
this.angle += this.spin;
this._rotation = this.angle;
};
for (var i = 0; i<30; i++) {
// создаём мувиклип (объект типа MovieClip).
// метод createEmptyMovieClip() возвращает ссылку,
// через которую мы работаем с клипом
var point = this.createEmptyMovieClip("point"+i, i);
point._x = 100;
point._y = 100;
var radius = 10+i; // радиус вращения
with (point) {
// рисуем в клипе закорючку
/* обратите внимание, переменной radius нет в объекте point
однако её значение автоматически находится во внешней
для этого блока with() области видимости */
lineStyle(4, 0, 100);
moveTo(radius, 0);
lineTo(radius, 1);
lineTo(radius-1, 1);
}
// записываем в объект point ссылку на функцию followMouse
// под именем onEnterFrame
point.onEnterFrame = spin;
// создаем свойства, управляющие вращением
point.spin = i/3; // скорость вращения
point.angle = 0; // изначальный угол поворота
}

Мы создаем в цикле 30 клипов и всем им даем ссылку на функцию spin в качестве обработчика onEnterFrame. Это избавляет нас от необходимости создавать одну и ту же функцию 30 раз.

Уникальное в блогах

  1. Новые декорации оформление оформление и дизайн мастерских и ремесленных в давние-придание времена
  2. Юбилей - 200ая публикация статей в международной блогопанораме!
  3. Спортивный и активный туризм снаряжение для него
  4. Учитель информатики предлагает графический редактор онлайн
This entry was posted in Кодинг and tagged , . Bookmark the permalink.

Leave a Reply

Your email address will not be published. Required fields are marked *

*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Я не робот.
сделано dimoning.ru