2014-09-16 2 views
0

У меня есть класс под названием Element. Это в основном мой ultra-movieclip и почти все классы в подклассе игры. Element extends MovieclipПереопределение x getter в ActionScript 3.0

Код в игре построен вокруг мысли, что все Movieclips зарегистрированы в верхнем левом углу. Зарегистрируйте его где-то еще, и все начинает разваливаться.

Проблема в том, что в анимации и в этом случае верхний левый угол перемещается, но точка регистрации не указана, и вы попадаете в точку регистрации где-то посередине Movieclip. Это вызывает проблемы.

Итак, как я могу исправить эту проблему? Мы можем найти истинный верхний левый угол Movieclip, используя getBounds (this is the documentation for it), но с использованием getBounds снова и снова в коде будет казаться утомительным.

Моя идея - переопределить геттер x в классе Element. Таким образом, мы всегда можем знать, где находится верхний левый угол Element, без необходимости писать кучу сложного кода каждый раз!

И, ради аргумента, предположим, что просто создание нового геттера типа «trueX» откроет люк под моими ногами и погрузит меня в клетку голодных сусликов.

Я не могу понять, как переопределить геттер x! Как мы можем это сделать? Я пропустил невероятно простое решение проблемы, которая не имеет ничего общего с переопределением?

override public function get x():Number { 
    //I have no idea what I'm doing! 
} 
+0

Итак ... что не работает? Ваш код переопределения действителен (хотя он фактически ничего не сделает). Ищите советы о том, какой код следует переустановить? Вы хотите получить смещение истинного значения x для учета границ детей? Кроме того, вы действительно должны кормить этих сусликов .... – BadFeelingAboutThis

+0

если вы имеете в виду вращение и такое, вам нужно будет найти другой способ. Изменение хеттера x означает возврат неправильных значений для простой позиции x, что может также вызвать проблемы дальше по дороге. – BotMaster

ответ

0

Это должно быть все, что вам нужно сделать: (если я правильно понял ваш вопрос прямо)

override public function get x():Number { 
    return super.x + getBounds(this).x; 
} 
+0

ха-ха, вы правы, я решил накормить этих сумасшедших сусликов. и выкорчевать большую часть кода в моей программе ... – theseal53