Форум 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=166922)

fantomasdnb 06.09.2011 21:52

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

package  {
 
        import flash.display.MovieClip;
        import rus_farWest;
 
        public class map extends MovieClip
        {
 
                public var citiesShown:Boolean = false;               
 
 
                public function map()
                {
                        //код бла бла бла
                }
 
 
                //код бла бла бла
        }
 
}

и

Код AS3:

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

в главном класе пишем:
Код AS3:

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

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

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. Если надо чтоб слушатели срабатывали или не срабатывали то в главном мувике можно что-то типа такого заюзать:
Код AS3:

this.mouseChildren = false;

Правда сработает абсолютно на всех детей главного мувика.

З.Ы.
Цитата:

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

Newred 07.09.2011 00:27

Код AS3:

public static var citiesShown:Boolean = false;

вызываем в нужном классе
Код AS3:

map.citiesShown // false


GBee 07.09.2011 03:49

Цитата:

Сообщение от Newred (Сообщение 1028902)
Код AS3:

public static var citiesShown:Boolean = false;

вызываем в нужном классе
Код AS3:

map.citiesShown // false


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


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

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