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

stasuss 19.03.2013 10:36

Области видимости
 
Всем привет!

Вопрос явно банальный, но я что то даже не знаю где ответ искать.. Видать я что то невнимательно прочитал когда, первый раз знакомился с actionscript 3.

Дело в том что я разбираюсь сейчас с as3isolib. Но дело не в ней.

Есть у меня главный класс и класс отрисовывающий все в изометрии. Главный класс создает рисующий класс и вызывает функцию из него для загрузки карты. НО ничего не добавляется на сцену (IsoScene). Но если добавлять объекты в конструкторе рисующего класса, или вызывать эту функцию из него самого, то все окей.

Вот и вопрос. Судя по всему тут что то завязано на областях видимости.. Но не пойму что. Функцию надо бы вызывать снаружи, ибо надо подготовить все для загрузки карты, поэтому засовывать ее вызов в конструктор рисующего класса, мне не катит..

Подскажите почему при вызове извне ничего не добавляется, а при вызове из самого класса, все окей.

IsoScene это public переменная в рисующем классе. Хотя это наверное не важно.

И таки да, функция успешно вызывается сама по себе, но вот видать переменная со ссыкой на сцену куда то не туда указывает и поэтому добавленые объекты теряются. Я кстати и this пробовал в этой функции, но не помогает.

Добавлено через 35 минут
вообщем то все заработало 0_0. только я не понял почему. хотя у меня flash ide между делами зависла и пришлось ее перезапустить, может в этом дело было...

yasha005 19.03.2013 12:01

Код AS3:

package
{
        public class Класс
        {
                public var СвойствоКласса:*;
 
                public function МетодКласса():void
                {
                        var ПеременнаяМетода:*
                        var ФункцияМедота:Function = function():void
                        {
                                var ПеременнаяВложеннойФункции:*;
                        }
                }
        }
}

ПеременнаяВложеннойФункции видна только внутри ФункцияМедота;
ФункцияМедота видна только внутри МетодКласса, а так же внутри самой себя если рекурсивный вызов;
ПеременнаяМетода видна внутри ФункцияМедота и МетодКласса;
СвойствоКласса видна в МетодКласса, но не видна в ФункцияМедота;

caseyryan 19.03.2013 12:04

Совет: пишите в нормальной IDE типа FlashDevelop, а не в flash ide. И будет все ок с просмотром полей классов в подсказках.
Цитата:

ПеременнаяВложеннойФункции видна только внутри ФункцияМедота;
попахивает 1с )

yasha005 19.03.2013 12:48

Тут ещё один момент есть:

Например если нужно, чтобы СвойствоКласса было видно внутри ФункцияМедота, то его нужно передать в качестве праметра в МетодКласса и затем этот параметр уже использовать внутри ФункцияМедота.


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

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