ООП во FLASH 5


Содержание


myButton._x=20, myButton._y=20;

Координаты в пикселах. Первая проблема, вы будете смеяться, что ежели позднее понадобится использовать эту кнопку на карте, координаты которой исчисляются широтой и долготой? (Смех за кадром.) Хорошо, а как насчёт игрушки с мозаичной структурой, где всё, вместо пикселов, измеряется отдельными частями (tile[x,y])? О, да, конечно, игра - это серьёзная проблема... Возможно, вы всё ещё в сомнениях, вероятно делали когда-то нечто подобное без проблем. В таком случае ситуация хуже, чем предполагалось. Ладно, а как вам такое: что будет, если, по непонятным причинам, понадобится поместить кнопку за пределами экрана? Разумеется, на черта вам это делать, а как насчёт того чувака, что сидит за вашим рабочим столом по понедельникам и вечно с бодуна? Не следует доверять лицам, использующим ваши классы, они всегда делают это не так, как нужно. Все они, как один, подлецы, извращенцы, злобные ублюдки и байстрюки. Сказать что-либо в их защиту крайне трудно, но объективности ради признаем, что напакостить они могут и случайно, к примеру, во вторник, после кофе, когда будут просто перемещать окошки... Так почему бы не обезопасить себя? Сделать это легко: заведите метод для изменения x, вместо проверок x на корректность всякий раз, как вы его меняете и заставьте его правильно работать.

Есть ещё одна причина для корректного измерения: вполне возможно у нашей кнопки окажутся друзья-товарищи, которым небезразлично её положение. Например, тень. Этот объект может быть отделён от кнопки (при соприкосновениях одна кнопка не должна отбрасывать тень на другую, так что приходится использовать раздельные уровни). Если установить x методом, вместо того, чтобы его переназначать, "тень" будет сразу же узнавать об изменениях. Существует ещё множество других ситуаций, когда требуется объединить несколько клипов в один "объект", а посему, при задании таких вещей, как позиция объекта, лучше хранить опции открытыми.

Итак, вышеописанная процедура избавляет от всех тех мерзких вещей, которые происходят, если устанавливать значения напрямую. Это, так сказать "кнут". А вот и "пряник". Как, к примеру, сделать значение доступным только для чтения? Ну, обычно мы отмечаем про себя, что вот данное значение устанавливать нельзя, или, когда это особенно важно, пишем прямо на боку монитора чёрным маркером. Между тем, если использовать методы getter/setter, жизнь облегчается, просто не создавайте метода, задающего значение (или создайте метод, сообщающий об ошибке, тут на выбор, кому как нравится).




Начало  Назад  Вперед



Книжный магазин