Хакер №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