Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   [classes] доступ к public var из static function (http://www.flasher.ru/forum/showthread.php?t=92626)

$mival 02.03.2007 07:22

[classes] доступ к public var из static function
 
Интересно, а как осуществить доступ к public var из static function этого же класса.
static function вызывается из другого класса.

Tardos Mors 02.03.2007 09:18

никак, только если передать функции ссылку на экземпляр класса. Или сделать так, что функция сама найдет экземпляр своего класса (например при создании все экземпляры записывать в массив)

etc 02.03.2007 10:43

А это не этот же класс. Экземпляры сами по себе, стат. свойства сами по себе.

$mival 04.03.2007 12:15

попытался разобраться сам - не получилось.
предлагаю попробовать на примере:
есть класс "classes.player":

Код:

class classes.player
{       
        public function moving()
        {
                var her:MovieClip = arguments[0];
               
                her.onEnterFrame = function()
                {
                        if (Key.isDown(Key.UP))
                        {
                                classes.scene.moving(); // сдесь пытаюсь вызывать метод др. класса ("classes.scene") //
                        }
                }
        }
}

и класс "classes.scene":
Код:

class classes.scene
{

        public var i:Number = 0;
       
        public static function moving()
        {
                i++;
                trace(i);
        }
}

что в этом случае нужно исправить? Операции над "i" нужно выполнять только в пределах класса "classes.scene".

заранее благодарен.

etc 04.03.2007 12:24

Ну для начала классы должны иметь имя Player и Scene, а не player и scene.

Во-вторых, экземпляра класса scene не существует, стат. метод не имеет доступа к свойствам экземпляров классов. И вообще, зачем тут статика?
Судя по всему, нужно применять синглтон в данном случае. Т.е. экземпляр scene может быть только один и ссылка на него хранится в статическом свойстве scene. Стат. метод moving использует эту ссылку для изменения переменной в экземпляре scene.

$mival 04.03.2007 12:28

по первому понятно.
второе: то есть нам нужно завести экземляр класса scene, объявить в этом классе public static var, в котором будет храниться ссылка на экземпляр, и использовать эту ссылку в public static function moving?

etc 04.03.2007 12:30

Именно.
При этом экземпляров не может быть более одного. Это и есть синглтон.

$mival 04.03.2007 12:47

интересно.
немного не по теме:
вообще мне приходится сталкиваться с множеством проблем при работе с классами.

__etc, мог бы ты порекомендовать какую-нибудь литературу, желательно в электронном виде, по этой тематике?

etc 04.03.2007 12:50

Наврядли, потому как у меня подобной вообще нету :)
Ну Мука можно почитать (в бумажном виде)…

$mival 04.03.2007 13:00

тогда хотелось бы разрешить текущую проблему.
как ссылку на экземпляр класса "scene" запихать в статическое свойство "scene"? точнее откуда её вобще взять эту ссылку?

UPD: благодарю, уже разобрался.


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

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