Как правильно расширить класс AS3 Point? - PullRequest
5 голосов
/ 26 января 2012

Мне понадобилось немного больше информации о моих баллах, поэтому я решил добавить предыдущий X, предыдущий, чтобы я мог получить deltaX и deltaY.Теперь, это нормально работает, если я создаю простой автономный класс.

Однако я думаю, что я хотел бы расширить класс flash.geom.Point, чтобы воспользоваться другими функциями и вычислениями, которые он предлагает..

Поэтому я расширил Point и изменил сеттеры x и y по мере необходимости.Когда я компилирую, я получаю сообщение об ошибке, что эти установщики не отмечены для переопределения, когда они должны быть.Поэтому я переопределяю, но затем я получаю сообщение об ошибке, которое говорит, что они не переопределяют никакую функцию.

Любая подсказка, где я облажался?

Ответы [ 2 ]

5 голосов
/ 26 января 2012

Класс Point не реализован с использованием методов get / set, скорее он содержит только открытые переменные: public var x : Number и public var y : Number.См. Документацию здесь .

Поскольку вы не можете переопределить какие-либо общедоступные методы получения или установки, вы не можете обнаружить, когда кто-либо, использующий ваш класс, записывает эти переменные.Что вы можете сделать, это удалить extends Point и добавить переменную экземпляра Point в UpdatablePoint.Затем измените ваши методы получения и установки для x / y с super. [X / y] на myPointInstance. [X / y].

Если вам нужно предоставить больше функциональности из класса Point, вы можете легко обернутьЭто.Скажем, вы хотите использовать метод equals из Point, просто создайте копию сигнатуры этого метода и сделайте так, чтобы его тело содержало: return myPointInstance.equals(p);

2 голосов
/ 26 января 2012

Точка не имеет public function set x или public function set y.

Таким образом, вы не можете переопределить их, поскольку они не существуют. Точка очень низкого уровня, я думаю, что Adobe не добавила эти функции, чтобы избежать увеличения перегрузки.

...