Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Слежение за глобальной переменной (http://www.flasher.ru/forum/showthread.php?t=173104)

Ja-Ja 23.12.2011 16:32

Слежение за глобальной переменной
 
Задача - есть 10 мувиков, все они в одном классе. По клику мышки увеличивается один из них а другой, если есть выделенный - должен уменьшиться (своего рода выбор). Я решил это реализовать при помощи слежения за изменением глобальной переменной. Может кто то уже решал подобные задачи, подскажите каким образом нужно здесь быть?

goodguy 23.12.2011 16:37

Пусть этот мувик шлет событие щелчка по нему. И по щелчку запускается цикл, изменяющий другие мувики.
Глобальная переменная - не верное решение. Настанет момент, когда какой-то мувик ее изменит, и не понятно будет какой и в какой момент. Вот тогда настанет полнейшая задница

Jewelz 23.12.2011 17:23

попробуйте binding, хорошая вещь

Код AS3:

public class Movie1
{               
        [Bindable] public var size:Number;
}


Код AS3:

import mx.binding.utils.BindingUtils;
public class Movie2
{
        private var _size:Number;
        private var movie1:Movie1;
 
        public function GameModel1()
        {
                BindingUtils.bindProperty(this, "_size", movie1, "size");
        }
}

или можно привязать хендлер (BindingUtils.bindSetter), который будет срабатывать при изменении св-ва, а там уже можно менять как угодно свое значение

BindingUtils можно взять из swc флекса

но для этого варианта нужно чтобы ссылка была у всех на всех, что, видимо, не очень хорошо

Inet_PC 23.12.2011 17:32

Код AS3:

попробуйте binding, хорошая вещь

Как сказать...

Ja-Ja 23.12.2011 17:49

Пробую сделать по первому способу через цикл.... в as2 был очень удобный оператор преобразующий тип строку в movieclip - eval. Что то есть подобное в as3?

TanaTiX 23.12.2011 17:54

Чур меня, чур из строк мувики клепать. Хотите переменную - нет проблем. Создаете сеттер. При изменении свойства, изменяете предыдущий (если есть или соответствует условию) выбранный элемент(ы), присваиваете новое значение и изменяете новый элемент. Все по индексу.

Inet_PC 23.12.2011 17:55

Одна тема, один вопрос.

Ja-Ja 23.12.2011 18:16

Спасибо всем я разобрался! В общем нужно переходить на написания не кадры. ОЧень непривычно для меня.

dimarik 24.12.2011 03:07

Цитата:

Сообщение от Jewelz (Сообщение 1053308)
попробуйте binding, хорошая вещь
Код AS3:

BindingUtils.bindProperty(this, "_size", movie1, "size");


И тут пришел рефакторинг. Все литералы теперь рефакторим глазками. А поиск по Ctrl+G теперь не работает.

Нужно помнить, что если предполагаете удаление this, необходимо использовать параметр useWeakReference установленным в true. Иначе он (this) останется живым через ссылку в ChangeWatcher, который, соответственно останется в листенером в цепочке других ChangeWatcher, заканчивая листенером последнего экземпляра ChangeWatcher в chain(в зависимости от chain, см. доку к bindProperty).


Часовой пояс GMT +4, время: 08:32.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.