Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 19.03.2013, 10:36
stasuss вне форума Посмотреть профиль Отправить личное сообщение для stasuss Найти все сообщения от stasuss
  № 1  
Ответить с цитированием
stasuss
 
Аватар для stasuss

Регистрация: Jun 2011
Сообщений: 19
По умолчанию Области видимости

Всем привет!

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

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

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

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

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

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

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

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

Старый 19.03.2013, 12:01
yasha005 вне форума Посмотреть профиль Отправить личное сообщение для yasha005 Найти все сообщения от yasha005
  № 2  
Ответить с цитированием
yasha005
[+1 16.03.13]
[+1 22.03.13]

Регистрация: Dec 2012
Сообщений: 100
Код AS3:
package
{
	public class Класс
	{
		public var СвойствоКласса:*;
 
		public function МетодКласса():void
		{
			var ПеременнаяМетода:*
			var ФункцияМедота:Function = function():void
			{
				var ПеременнаяВложеннойФункции:*;
			}
		}
	}
}
ПеременнаяВложеннойФункции видна только внутри ФункцияМедота;
ФункцияМедота видна только внутри МетодКласса, а так же внутри самой себя если рекурсивный вызов;
ПеременнаяМетода видна внутри ФункцияМедота и МетодКласса;
СвойствоКласса видна в МетодКласса, но не видна в ФункцияМедота;

Старый 19.03.2013, 12:04
caseyryan вне форума Посмотреть профиль Отправить личное сообщение для caseyryan Найти все сообщения от caseyryan
  № 3  
Ответить с цитированием
caseyryan
 
Аватар для caseyryan

Регистрация: Jun 2012
Адрес: Новосибирск
Сообщений: 6,644
Записей в блоге: 4
Совет: пишите в нормальной IDE типа FlashDevelop, а не в flash ide. И будет все ок с просмотром полей классов в подсказках.
Цитата:
ПеременнаяВложеннойФункции видна только внутри ФункцияМедота;
попахивает 1с )

Старый 19.03.2013, 12:48
yasha005 вне форума Посмотреть профиль Отправить личное сообщение для yasha005 Найти все сообщения от yasha005
  № 4  
Ответить с цитированием
yasha005
[+1 16.03.13]
[+1 22.03.13]

Регистрация: Dec 2012
Сообщений: 100
Тут ещё один момент есть:

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

Создать новую тему Ответ Часовой пояс GMT +4, время: 15:40.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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