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

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

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

Регистрация: Jun 2006
Сообщений: 55
По умолчанию Не срабатывают функции сеттер и геттер, не могу понять почему

Есть у меня простой класс: две приватные переменные и геттер и сеттер для каждой из них:

Код AS3:
package classes
{
	import flash.display.Sprite;
 
	public class Test extends Sprite
	{
		private var _x: uint;
		private var _y: uint;
 
		public function Test(x:uint, y: uint)
		{
			_x = x;
			_y = y;			
		}
 
		public function get defaultX():uint {
			return _x;
		}
 
		public function set defaultX(x: uint):void {
			_x = x;
		}
 
		public function get defaultY():uint {
			return _y;
		}
 
		public function set defaultY(y: uint):void {
			_y = y;
		}
 
	}
}
Кроме того, в этом классе есть функция, которая рисует в этом спрайте фигуру, но я ее выводить тут не стал, она работает корректно.

Дальше я создаю экземпляр этого класса, привязываю к нему листенер события маус_даун и пытаюсь использовать свои сеттеры и геттеры, для этого в конструкторе основного класса пишу:

Код AS3:
var t: Sprite = new Test(10,20);
t.addEventListener(MouseEvent.MOUSE_DOWN, mouseDown);
trace(t.defaultX);
trace(t.defaultY);
И в этом коде флэш спотыкается о строчки с трейсами, говорит: "1119. Обращение возможного неопределенного свойства defaultX через ссылку со статическим типом flash.Display:Sprite". Но при этом, если я в функции mouseDown, которая у меня срабатывает при нажатии на спрайт, пишу код:
Код AS3:
trace(event.target.defaultX);
trace(event.target.defaultY);
, то здесь корректно выводятся значения переменных. С сеттерами та же ситуация.

Что делаю не так, где может быть проблема?

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

блогер
Регистрация: Mar 2003
Адрес: Моск. обл.
Сообщений: 5,269
Записей в блоге: 6
ты объявляешь t как спрайт, а у него нет defaultX

Код AS3:
var t: Test = new Test(10,20);

Старый 17.05.2009, 01:30
Kuruki вне форума Посмотреть профиль Отправить личное сообщение для Kuruki Найти все сообщения от Kuruki
  № 3  
Ответить с цитированием
Kuruki

Регистрация: Jan 2008
Сообщений: 669
переменные и функции класса Test не видны через тип Sprite.
Код AS3:
var t:Test= new Test(10,20);

Старый 17.05.2009, 01:51
Огнеметчик вне форума Посмотреть профиль Отправить личное сообщение для Огнеметчик Найти все сообщения от Огнеметчик
  № 4  
Ответить с цитированием
Огнеметчик

Регистрация: Jun 2006
Сообщений: 55
Точно! Спасибо всем!

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

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

Старый 18.05.2009, 01:53
Gaen вне форума Посмотреть профиль Отправить личное сообщение для Gaen Найти все сообщения от Gaen
  № 6  
Ответить с цитированием
Gaen
strange mood
 
Аватар для Gaen

модератор форума
Регистрация: Jul 2004
Адрес: Питер
Сообщений: 1,653
Записей в блоге: 1
Отправить сообщение для Gaen с помощью ICQ Отправить сообщение для Gaen с помощью Skype™
Цитата:
Сообщение от willis83 Посмотреть сообщение
я человек тёмный, и приведите мне пример зачем прятать переменные в классе чтобы доставать их через геттеров??? Уже вроде не новичёк в AS3, но не пойму зачем переменную делать private чтобы потом её вытягивать через get. Намного проще объявить её пабликом и работать с ней как со свойством класса.... ну тупой я ..... чё уж тут сделать?
Мне часто приходилось писать классы-контейнеры для графики с особым поведением. Размеры графики чаще всего были больше размеров видимой области (маски). Соответственно нужно было переопределять width и height, чтобы геттеры возвращали размеры маски, а сеттеры растягивали маску и не искажали при этом внутреннюю графику.
__________________
тонкий тролль, осеянный благодатью

Старый 17.05.2009, 03:54
iNils вне форума Посмотреть профиль Отправить личное сообщение для iNils Посетить домашнюю страницу iNils Найти все сообщения от iNils
  № 7  
Ответить с цитированием
iNils
Негуру
 
Аватар для iNils

администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,883
Записей в блоге: 7
Цитата:
и приведите мне пример зачем прятать переменные в классе чтобы доставать их через геттеров
1. Что бы выполнить ряд операции связанные с изменением значения, типа рассылка событий, изменение связанны данных.
2. Сделать свойство доступным только для чтения или записи.

Но лично я всегда делаю доступ через гет/сет. Вернее это делает генератор в ФД
__________________
(и)Нильс.ru | Плагины для FlashDevelop

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

Регистрация: Jul 2007
Сообщений: 805
Отправить сообщение для ramshteks с помощью ICQ Отправить сообщение для ramshteks с помощью Skype™
Цитата:
Сообщение от iNils Посмотреть сообщение
1. Что бы выполнить ряд операции связанные с изменением значения, типа рассылка событий, изменение связанны данных.
2. Сделать свойство доступным только для чтения или записи.

Но лично я всегда делаю доступ через гет/сет. Вернее это делает генератор в ФД
расскажите как?)
А то я задолбался в ручную их прописывать)

Старый 17.05.2009, 14:25
iNils вне форума Посмотреть профиль Отправить личное сообщение для iNils Посетить домашнюю страницу iNils Найти все сообщения от iNils
  № 9  
Ответить с цитированием
iNils
Негуру
 
Аватар для iNils

администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,883
Записей в блоге: 7
http://www.flashdevelop.org/wikidocs...res:Generation
__________________
(и)Нильс.ru | Плагины для FlashDevelop

Старый 17.05.2009, 16:53
ramshteks вне форума Посмотреть профиль Отправить личное сообщение для ramshteks Найти все сообщения от ramshteks
  № 10  
Ответить с цитированием
ramshteks
 
Аватар для ramshteks

Регистрация: Jul 2007
Сообщений: 805
Отправить сообщение для ramshteks с помощью ICQ Отправить сообщение для ramshteks с помощью Skype™
весьма признателен)

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

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

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


 


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


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