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

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

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

Регистрация: Apr 2003
Адрес: Ukraine, Kiev
Сообщений: 189
Отправить сообщение для sinya с помощью ICQ
По умолчанию базовый вопрос по AS3, область видимости экземпляра класса

Привет!
Потихоньку вникаю в тонкости написания классов, никак не могу понять следующее:

Почему в ф-ции основного класса, которая вызывается по событию, нельзя увидеть экзепляр другого класса и его метод, хотя он создается в ф-ции-конструкторе и там виден?
Я пробую так:
Код:
        public class main extends Sprite {
		public function main () { 		
			var myChar:charBoy = new charBoy();
			this.addChild(myChar);
			addEventListener (Event.ENTER_FRAME, onEnterFrame);
                        myChar.x += 5; //работает
		}
		private function onEnterFrame (event:Event):void {
			myChar.charMove();              //не работает
                        myChar.x += 5; //работает     //не работает
		}
	}
В ф-ции-конструкторе main() экземпляр myChar виден, а в ф-ции onEnterFrame - нет.
__________________
Платон мне друг, но истина в вине.

Старый 04.12.2008, 03:00
mre вне форума Посмотреть профиль Отправить личное сообщение для mre Посетить домашнюю страницу mre Найти все сообщения от mre
  № 2  
Ответить с цитированием
mre
 
Аватар для mre

Регистрация: Jul 2007
Адрес: Москва
Сообщений: 996
Потому что myChar - локальная переменная.
Ее область видимости - конструктор main.

Старый 04.12.2008, 03:32
sinya вне форума Посмотреть профиль Отправить личное сообщение для sinya Посетить домашнюю страницу sinya Найти все сообщения от sinya
  № 3  
Ответить с цитированием
sinya
 
Аватар для sinya

Регистрация: Apr 2003
Адрес: Ukraine, Kiev
Сообщений: 189
Отправить сообщение для sinya с помощью ICQ
а как сделать экземпляр myChar доступным в пределах всего конструктора main?
__________________
Платон мне друг, но истина в вине.

Старый 04.12.2008, 03:39
mre вне форума Посмотреть профиль Отправить личное сообщение для mre Посетить домашнюю страницу mre Найти все сообщения от mre
  № 4  
Ответить с цитированием
mre
 
Аватар для mre

Регистрация: Jul 2007
Адрес: Москва
Сообщений: 996
Код AS3:
public class Main extends Sprite 
{
	private var myChar:CharBoy = new CharBoy();
 
	public function Main() 
	{
		super(); 		
		addChild(myChar);
.......

Старый 04.12.2008, 04:41
Dr. No вне форума Посмотреть профиль Отправить личное сообщение для Dr. No Найти все сообщения от Dr. No
  № 5  
Ответить с цитированием
Dr. No

Регистрация: Dec 2008
Сообщений: 6
Доброго времени суток! Примажусь к теме с вопросом по видимости, чтобы не плодить темы сверх необходимости) :

Использую movieclip, слинкованный с классом. Среди прочего на нем есть ColorPicker, который хочу использовать и для долгосрочного хранения цвета. В конструкторе ColorPicker'у присваивается некий цвет (ColorPicker.selectedColor), к которому позднее обращаюсь.
Вот конструктор:
Код AS1/AS2:
 
public function Item(RawData:Object, i:Number):void {
//тут всякое.. потом
CP.selectedColor = Math.floor(Math.random()*0xFFFFFF);
 
//Отсюда и до конца конструктора CP.selectedColor выдает 0, хотя ColorPicker красится
// и выбирает рандомный цвет
trace(CP.selectedColor) // -   0;
}
Дебагер во время работы конструктора показывает две переменные:
selectedColor : 0;
_selectedColr : (нормальный цвет uint)

Если обратиться к CP.selectedColor позже, уже не из конструктора, то возвращается цвет, и в дебагере обе переменные равны.
Думаю, в конструкторе можно просто создать вспомогательную переменную с рандомым цветом в начале и пользовать ее.
Код AS1/AS2:
public function Item(RawData:Object, i:Number):void {
 
var col:uint = Math.floor(Math.random()*0xFFFFFF);
 
CP.selectedColor = col;
 
blabla = col; //и т.п.
}
Но хотелось бы узнать, отчего такое происходит, и что означают дублирующиеся свойства объекта с подчеркиванием. Господа, подскажите, пожалуйста.

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

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

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


 


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


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