Хакер №024. Спецвыпуск

       

Хакер №024. Спецвыпуск


FLASH MX - инструмент креативщика



Ivan Dembicki

Спецвыпуск Xakep, номер #024, стр. 024-096-3

- вначале задали две функции valueSet и valueGet;

- в valueSet мы присваиваем значение аргумента переменной value и свойству _visible галочки;

- в valueGet просто возвращаем значение переменной value;

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

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

КОНТАЧИТЬ С МУВИКАМИ СТАЛО ЛЕГЧЕ!

Ты помнишь, сколько чудных мгновений доставляла задача организации взаимодействия двух роликов. Эти чудные мгновения превращались в часы, если требовалось передать разные данные из разных объектов независимо друг от друга. А все из-за того, что исполнялась только последняя fs команда в кадре, остальные гибли, как здравые мысли с утра после вчерашнего.

В МХ такая задача решается на раз при помощи объекта LocalConnection. При его помощи можно наладить взаимодействие между разными роликами в проекте. И что особо порадовало, LocalConnection работает без проблем независимо от расположения принимающего ролика: он может находиться и в другом фрейме, и даже в другом окне браузера.

Но в хелпе нет описания LocalConnection. Как нередко случается у Макромедии, сделать-то они сделали, а в официальные документы включить не успели. Так что описание ищи у них на сайте по ключевым словам "LocalConnection". Ниже я прокомментирую их пример:

Для организации взаимодействия в ролике-отправителе создается объект-отправитель, например, на нажатие кнопки:

my_button.onRelease = function() {

// создаем объект:

out_lc = new LocalConnection().

// и затем оправляем:

out_lc.send("lc_name", "methodToExecute", userMessage.text);

};

Здесь заслуживают интереса параметры функции send.

- "lc_name" - уникальный идентификатор соединения. Соединение с таким именем может быть только одно.

- "methodToExecute" - имя функции, которая будет вызвана в ролике-получателе.

- userMessage.text - аргумент, с которым будет вызвана функция methodToExecute.

В ролике-получателе создается объект-получатель, функция обработки получаемой информации и открывается соединение:

incoming_lc = new LocalConnection();

incoming_lc.methodToExecute = function(param) {

sentMessage.text = param;

};

incoming_lc.connect("lc_name");

НА ЛЕТУ

А вот еще новая фишка function.apply(), смотрим примеры:

_root.createEmptyMovieClip("my_mc", 1)

function function1() { trace(this + " function function1 called, argument: "+arguments[0]);}

function function2() { trace("function function2 called, argument: "+arguments[0]);}

function function3() { trace("function function3 called, argument: "+arguments[0]);}

for (i=1; i<=3; i++) {this["function"+i].apply(this, [i]);}

Назад на стр. 024-096-2  Содержание  Вперед на стр. 024-096-4


 

Содержание раздела