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

Огнеметчик 17.05.2009 01:25

Не срабатывают функции сеттер и геттер, не могу понять почему
 
Есть у меня простой класс: две приватные переменные и геттер и сеттер для каждой из них:

Код 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);

, то здесь корректно выводятся значения переменных. С сеттерами та же ситуация.

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

silin 17.05.2009 01:29

ты объявляешь t как спрайт, а у него нет defaultX

Код AS3:

var t: Test = new Test(10,20);


Kuruki 17.05.2009 01:30

переменные и функции класса Test не видны через тип Sprite.
Код AS3:

var t:Test= new Test(10,20);


Огнеметчик 17.05.2009 01:51

Точно! Спасибо всем!

willis83 17.05.2009 02:34

я человек тёмный, и приведите мне пример зачем прятать переменные в классе чтобы доставать их через геттеров??? Уже вроде не новичёк в AS3, но не пойму зачем переменную делать private чтобы потом её вытягивать через get. Намного проще объявить её пабликом и работать с ней как со свойством класса.... ну тупой я ..... чё уж тут сделать?

iNils 17.05.2009 03:54

Цитата:

и приведите мне пример зачем прятать переменные в классе чтобы доставать их через геттеров
1. Что бы выполнить ряд операции связанные с изменением значения, типа рассылка событий, изменение связанны данных.
2. Сделать свойство доступным только для чтения или записи.

Но лично я всегда делаю доступ через гет/сет. Вернее это делает генератор в ФД :)

ramshteks 17.05.2009 09:11

Цитата:

Сообщение от iNils (Сообщение 820512)
1. Что бы выполнить ряд операции связанные с изменением значения, типа рассылка событий, изменение связанны данных.
2. Сделать свойство доступным только для чтения или записи.

Но лично я всегда делаю доступ через гет/сет. Вернее это делает генератор в ФД :)

расскажите как?)
А то я задолбался в ручную их прописывать)

iNils 17.05.2009 14:25

http://www.flashdevelop.org/wikidocs...res:Generation

ramshteks 17.05.2009 16:53

весьма признателен)

AL.exe 17.05.2009 22:16

Хех, надо прописать для FDT подобный шаблон :)


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

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