PDA

Просмотр полной версии : Использование переменной главного класса в дочернем


fantomasdnb
06.09.2011, 21:52
Всем привет. Перерыл форум с похожими вопросами, но ничего полезного к сожалению не нашел... И так.
Есть главный класс:

package {

import flash.display.MovieClip;
import rus_farWest;

public class map extends MovieClip
{

public var citiesShown:Boolean = false;


public function map()
{
//код бла бла бла
}


//код бла бла бла
}

}


и


package
{
import flash.display.MovieClip;
import flash.events.MouseEvent;


public class rus_farWest extends MovieClip
{
//переменные тратата

public function rus_farWest()
{
this.x = Xp;
this.y = Yp;
this.addEventListener(MouseEvent.CLICK, clickEvent);
this.addEventListener(MouseEvent.MOUSE_OVER, overEvent);
this.addEventListener(MouseEvent.MOUSE_OUT, outEvent);
}

private function clickEvent(event:MouseEvent):void
{
};

public function overEvent(event:MouseEvent):void
{
};

private function outEvent(event:MouseEvent):void
{
};
}
}


собственно мне нужно использовать переменную citiesShown в rus_farWest. и не смотря на то, что она паблик, почему-то выдает ошибку, я думал этого достаточно. Что нужно сделать?

2Sun
06.09.2011, 21:59
в главном класе пишем:

private static var _instance:Main = null;
public static function getInstance():Main { return _instance; }
public static function getStage():Stage { return getInstance().stage; }


вызываем соответственно вот так:

Main.getInstance().// тут переменные или функции

GBee
06.09.2011, 22:00
http://www.flasher.ru/forum/showthread.php?t=166727 соседняя тема

2Sun ой ой ой.

gloomyBrain
06.09.2011, 22:10
@fantomasdnb - я могу ответить Вам на Ваш вопрос. Но скажите сначала, что Вы хотите сделать? Потому как ответ зависит от контекста

fantomasdnb
06.09.2011, 22:24
GBee, я видел эту тему, но не увидел там ни единого куска кода или чего-то внятного или полезного.

gloomyBrain, на сцене лежит штук 20 разных мувиклипов, которые по нажатию на них, ведут себя по-разному, в зависимости от citiesShown. И чтобы не создавать в каждом отдельном классе свою переменную, хочу обращаться к одной общей.

dimarik
06.09.2011, 23:40
Был тут у нас один, тоже странное пытался всем доказать.

Dukobpa3
06.09.2011, 23:42
Этот вопрос скорее всего можно решить другим методом.

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

2. Если надо чтоб слушатели срабатывали или не срабатывали то в главном мувике можно что-то типа такого заюзать:
this.mouseChildren = false;
Правда сработает абсолютно на всех детей главного мувика.

З.Ы.
GBee, я видел эту тему, но не увидел там ни единого куска кода или чего-то внятного или полезного.
Стоит разделять не видел и не было ;)

Newred
07.09.2011, 00:27
public static var citiesShown:Boolean = false;
вызываем в нужном классе
map.citiesShown // false

GBee
07.09.2011, 03:49
public static var citiesShown:Boolean = false;
вызываем в нужном классе
map.citiesShown // false

А если она изменится? :quiet: