Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Написание сет, гет функций для x (http://www.flasher.ru/forum/showthread.php?t=177727)

ЗлОй ПрОграММер 06.04.2012 23:09

Написание сет, гет функций для x
 
Можно ли как нибудь для класса переопределить функции для получения координаты экземпляра по оси x
делаю так но выдаются ошибки
Код AS3:

override public function set x(value: Number): void
{
        x = value;
}
 
override public function get x(): Number
{
        return x;
}

Добавлено через 17 минут
нашёл как это сделать, вот код может кому и понадобиться
Код AS3:

override public function set x(value: Number): void
{
        super.x = value;
}
 
override public function get x(): Number
{
        return super.x;
}


strangedk 06.04.2012 23:30

Хорошо что получилось. а если не секрет, зачем такие ухищрения?

GBee 06.04.2012 23:32

Цитата:

Код AS3:

override public function set x(value: Number): void
{
        x = value;
}


Так адская рекурсия.

strangedk 06.04.2012 23:36

Цитата:

Сообщение от GBee (Сообщение 1073510)
Так адская рекурсия.

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

Код AS3:

override public function set x(value: Number): void {
    if (x != value)
        x = value;
}


ЗлОй ПрОграММер 06.04.2012 23:38

Цитата:

Хорошо что получилось. а если не секрет, зачем такие ухищрения?
мне нужно узнавать когда экземпляр меняет свою координату по x и отправлять данные другому пользователю

Цитата:

Так адская рекурсия.
ну вот не догадался сам)

Inet_PC 06.04.2012 23:45

Цитата:

Даже такую адскую рекурсию можно предотвратить если всегда валидировать данные, и проверять на изменение:
Код AS3:

override public function set x(value: Number): void {
    if (x != value)
        x = value;
}


Ээ, а Вы сами проверяли? Это все еще рекурсия бесконечная.

strangedk 06.04.2012 23:45

Цитата:

Сообщение от ЗлОй ПрОграММер (Сообщение 1073514)
мне нужно узнавать когда экземпляр меняет свою координату по x и отправлять данные другому пользователю

Лично я против таких "умных" объектов. И считаю что все изменения должен и отслеживать и передавать их родитель.

Если их будет например 100, то я боюсь представить какой хаос будет происходить в передаче данных.
Плюс - например не передавать координаты того объекта, который вышел за определенные пределы.

В общем, ваша идея безусловно хороша. Но всё же лучше бы это делать в родителе.

Добавлено через 7 минут
Цитата:

Сообщение от Inet_PC (Сообщение 1073516)
Ээ, а Вы сами проверяли? Это все еще рекурсия бесконечная.

Ну лично у меня это вообще не запустилось.
Не думаю что у кого-то запустится, но пробуйте, может там не в strict mode или еще как-то

Я думаю что пожелание валидации и проверки на изменение - совсем не лишнее

ЗлОй ПрОграММер 06.04.2012 23:55

Цитата:

Лично я против таких "умных" объектов. И считаю что все изменения должен и отслеживать и передавать их родитель.

Если их будет например 100, то я боюсь представить какой хаос будет происходить в передаче данных.
Плюс - например не передавать координаты того объекта, который вышел за определенные пределы.
В общем, ваша идея безусловно хороша. Но всё же лучше бы это делать в родителе.
Экземпляра всего 2 по плану должно быть) причём только один из них передаёт данные, а другой будет получать; В родителе только будет функция которая передаёт данные, а если из родителя следить за изменением по оси X то придётся создавать лишнее событие ENTER_FRAME и в нём писать ещё проверки изменялись ли координаты или же нет.

strangedk 06.04.2012 23:57

Проверил, запустилось, и .... зависло))

Да, в этом случае даже валидация не поможет. Но думаю что дело в изначально неверном случае, а не в проверке.

Добавлено через 3 минуты
Цитата:

Сообщение от ЗлОй ПрОграММер (Сообщение 1073519)
Экземпляра всего 2 по плану должно быть) причём только один из них передаёт данные, а другой будет получать; В родителе только будет функция которая передаёт данные, а если из родителя следить за изменением по оси X то придётся создавать лишнее событие ENTER_FRAME и в нём писать ещё проверки изменялись ли координаты или же нет.

тогда думаю еще правильнее, поставить проверку в функции которая передает данные. И если они такие же как и предыдущие - то просто не отправлять. Может сэкономить ресурсы.

Не нужно создавать ничего лишнего. Если родитель меняет координаты своего child'a, то он всегда может узнать какими они были до этого. И если новые координаты такие же как и старые - то просто не менять их.

ЗлОй ПрОграММер 07.04.2012 00:09

Цитата:

Не нужно создавать ничего лишнего. Если родитель меняет координаты своего child'a, то он всегда может узнать какими они были до этого.
Сам child управляется с помощью клавиш(т.е. управление в классе прописано), так что кроме как создавать ENTER_FRAME в родителе вариантов не вижу


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

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