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

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

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

Регистрация: Jan 2008
Адрес: Украина, Славутич
Сообщений: 646
Отправить сообщение для willis83 с помощью ICQ
По умолчанию Не разберусь с областью видимости.

У меня есть скроллпэйн, определяется он в кострукторе рутового класса(или как он там называется), его содержимое довольно часто меняет размер, поэтому есть необходиомть в апдейтах скроллпейна, но функция которая вызывается для совершения апдейта ругается что "вашего скроллпейна я не наблюдаю"

Код:
public function main() { 
   var Area:ScrollPane = new ScrollPane(); 
   Area.source = fSource; 
   Area.setSize(860,490); 
   Area.x = 20; 
   Area.y = 200; 
   Area.addEventListener(Event.ENTER_FRAME, Updt)
   addChild(Area); 
};
private function Updt(event: Event):void {
   Area.update();
};
Вызов функции Updt работает нормально, но выдаёт ошибку 1120: Access of undefined property Area.

Не пойму почему он её не видит.... Также есть желание обращаться к этому скроллпейну из других классов и тоже не пойму как это сделать

Старый 08.02.2009, 21:28
r_r_f_r вне форума Посмотреть профиль Отправить личное сообщение для r_r_f_r Найти все сообщения от r_r_f_r
  № 2  
Ответить с цитированием
r_r_f_r

Регистрация: Sep 2008
Адрес: Москва
Сообщений: 224
Можно взглянуть тут

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

Регистрация: Jan 2008
Адрес: Украина, Славутич
Сообщений: 646
Отправить сообщение для willis83 с помощью ICQ
у меня на винте такое руководство лежит, я по нему и создавал. У них там всё нормально работает. Обращение идёт в пределах одного класса

Старый 08.02.2009, 21:44
silin вне форума Посмотреть профиль Посетить домашнюю страницу silin Найти все сообщения от silin
  № 4  
Ответить с цитированием
silin
 
Аватар для silin

блогер
Регистрация: Mar 2003
Адрес: Моск. обл.
Сообщений: 5,269
Записей в блоге: 6
var Area в конструкторе и Area в классе - это разные объекты

Старый 08.02.2009, 21:46
r_r_f_r вне форума Посмотреть профиль Отправить личное сообщение для r_r_f_r Найти все сообщения от r_r_f_r
  № 5  
Ответить с цитированием
r_r_f_r

Регистрация: Sep 2008
Адрес: Москва
Сообщений: 224
У вас тоже в пределах одного класса, и проблема в том что вы объявляете Area локально для метода, и соответственно она доступна только в конструкторе, для того чтобы была доступна во всём классе её нужно объявить в классе с указанием модификатора доступа.

Код AS3:
public var area:ScrollPane;
public function main() { 
   area = new ScrollPane(); 
   area.source = fSource; 
   area.setSize(860,490); 
   area.x = 20; 
   area.y = 200; 
   area.addEventListener(Event.ENTER_FRAME, Updt)
   addChild(area); 
};
private function Updt(event: Event):void {
   area.update();
};

Старый 08.02.2009, 21:50
willis83 вне форума Посмотреть профиль Отправить личное сообщение для willis83 Найти все сообщения от willis83
  № 6  
Ответить с цитированием
willis83
 
Аватар для willis83

Регистрация: Jan 2008
Адрес: Украина, Славутич
Сообщений: 646
Отправить сообщение для willis83 с помощью ICQ
Понял, спасибо. В руководстве про такое не пишут. Там области видимости посвящен всего один не большой абзац

Добавлено через 7 минут
А обращаться к этому скроллпэйну в пределах одного пакета, но из других классов я смогу?


Последний раз редактировалось willis83; 08.02.2009 в 21:57.
Старый 08.02.2009, 22:01
r_r_f_r вне форума Посмотреть профиль Отправить личное сообщение для r_r_f_r Найти все сообщения от r_r_f_r
  № 7  
Ответить с цитированием
r_r_f_r

Регистрация: Sep 2008
Адрес: Москва
Сообщений: 224
Классы принято называть с большой буквы свойства с маленькой, методы вотТак.
Сможете обращаться через ссылку на объект, т.е.

Код AS3:
var main:Main = new Main();
trace(main.area) //будет ScrollPane
но поскольку Main это документкласс, то нужно передавать ссылку на ScrollPane в метод которому он требуется.
Либо объявить его статиком:
Код AS1/AS2:
public static var area:ScrollPane
Тогда будет возможность обращаться через класс:
Код AS3:
Main.area
Если разработка ведётся в Flash IDE то нужно обращать внимание на import'ы

Старый 08.02.2009, 22:40
willis83 вне форума Посмотреть профиль Отправить личное сообщение для willis83 Найти все сообщения от willis83
  № 8  
Ответить с цитированием
willis83
 
Аватар для willis83

Регистрация: Jan 2008
Адрес: Украина, Славутич
Сообщений: 646
Отправить сообщение для willis83 с помощью ICQ
Спасибо!

Старый 09.02.2009, 11:30
Котяра вне форума Посмотреть профиль Отправить личное сообщение для Котяра Посетить домашнюю страницу Котяра Найти все сообщения от Котяра
  № 9  
Ответить с цитированием
Котяра
буду краток
 
Аватар для Котяра

модератор форума
Регистрация: Sep 2003
Адрес: Ближайшее Замкадье
Сообщений: 3,110
Записей в блоге: 28
Отправить сообщение для Котяра с помощью ICQ Отправить сообщение для Котяра с помощью Skype™
Код AS1/AS2:
public static var area:ScrollPane
Тогда будет возможность обращаться через класс:
Код AS3:
Main.area
лучше все-же использовать гет/сет
__________________
Отряд Котовскага

Старый 09.02.2009, 11:40
r_r_f_r вне форума Посмотреть профиль Отправить личное сообщение для r_r_f_r Найти все сообщения от r_r_f_r
  № 10  
Ответить с цитированием
r_r_f_r

Регистрация: Sep 2008
Адрес: Москва
Сообщений: 224
Это documentClass, на него что передавать ссылку потом, оно того не стоит, много статиков в руте всё равно совесть не даст делать, а вот передача ссылок может затянуться и можно сместить изучение паттернов на самую последнюю полку.

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

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

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


 


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


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