![]() |
|
||||||||||
|
|||||
|
Регистрация: Dec 2013
Сообщений: 35
|
Теперь когда более-менее ясно про организацию классов, хотелось бы понять как между ними делать взаимодействие.
Я вроде правильно написал getter и setter? public class MainHiro extends GG { private var fnX:int= 0; private var fnY:int= 0; public function get get_set_gg_x():Number { return fnX; } public function get get_set_gg_y():Number { return fnY; } public function set get_set_gg_x(xy_mouse:Number) { fnX =xy_mouse; } public function set get_set_gg_y(xy_mouse:Number) { fnY =xy_mouse; } public function MainHiro() { addEventListener(Event.ADDED_TO_STAGE, onAddedToStage); } // private function fnGetXY(event:MouseEvent):void { get_set_gg_x=stage.mouseX; get_set_gg_y=stage.mouseY; } Как это сделать? |
|
|||||
|
DenDobrii, вы движетесь в верном направлении, но пропустили важную вещь - конвенции. Я ж вам уже писал, что имена свойств и методов(если вы выкладываете код, по крайней мере, хотя и для себя полезно не быдлокодить) должны полностью отражать суть и быть ясными и понятными даже людям далёким от программирования.
Например, если вы делаете игру про инопланетян, то вам нужен класс Alien, Spaceship, Space. В классе Alien приватные поля _health:int, _readyState:int, _dead:Boolean, и методы getHealth(), isDead(), getReadyState() - это полоса готовности пришельца, допустим, к стрельбе или удару, подобно кончающимся силам живого человека, hit(), takeDamage(), - эти для ударов других пришельцев нашим, тоесть для ударов других экземпляров или наследников класса Alien.
__________________
There is no thing in this world that is not simple. |
|
|||||
|
Регистрация: Dec 2013
Сообщений: 35
|
ZackMercury, спасибо за конвенции. Я их не пропустил
|
|
|||||
|
.
|
Если это не акцессоры, то я сильно против таких методов, которые суть акцессоры. Если это акцессоры, то очень фигово называются.
Негативное мнение вызвано необходимостью отладки и поддержания проекта. В хороших IDE корректно покажется текущее значение геттера с произвольной цепочкой вложенности просто при наведении курсора мыши на имя вызываемого геттера в редакторе. |
|
|||||
|
Можно и геттерами, можно и простыми методами. Кажется, в Муке было что-то нехорошее сказано в пользу геттеров и сеттеров, вот я и использую методы.
__________________
There is no thing in this world that is not simple. |
|
|||||
|
Цитата:
В ас3 геттеры / сеттеры не идеальны. Они хороши, если надо в сеттере передать всего один параметр. А если больше? Не всегда удобно |
|
|||||
|
caseyryan, в аксессоры вряд ли придётся передавать более, чем 1 параметр. Для этого есть обычные методы.
В целом, я согласен с dimarik.
__________________
There is no thing in this world that is not simple. |
|
|||||
|
Можно например сделать setPosition(x:int, y:int), или setSize(width:int, height:int). Но сеттеры и геттеры должны писаться по единому стандарту. Если есть getHealth(), то сеттер должен быть setHealth(value:int)
В джаве это стандарт. АС3 конечно не джава, но это говорит о том, что стандарт все-таки вполне нормальный и общепринятый. Ничего плохого в этом нет. Плохо - это когда название метода вообще не информативно Цитата:
|
|
|||||
|
По вашему getPosition должен возвращать либо экземпляр объекта, либо объект класса Point, а getSize - объект класса Rectangle, так штоли?
Как сделать setSize и getSize с двумя параметрами так, чтобы не было лишних действий/затрат памяти? Всё-таки создание экземпляра Point довольно затратная операция, а получать размеры скорее всего придётся в каждом кадре. Вот именно, два параметра - значит нет getТоЖеСамое, либо он затратный.
__________________
There is no thing in this world that is not simple. |
![]() |
![]() |
Часовой пояс GMT +4, время: 21:48. |
|
|
« Предыдущая тема | Следующая тема » |
|
|