ООП во FLASH 5


Содержание


s2.setLocation( s1.getLocation );

Конечно, это можно было бы сделать двумя командами, но что за нужда вникать в детали? Представьте, что копируете Rectangle, а не Location, вот вам уже и четыре команды. То ли дело, используя методы get и set State, можно копировать полное состояние чего-нибудь, например целого мувиклипа (x, y, rotation, alpha, ...)

Как видите, несколько выгодных позиций у нас уже есть, но избавляет ли это нас от необходимости использовать setX и setY? Если Location хранится в объекте Point, как тогда прямоугольник сохраняется в объекте Rectangle, здесь что, две версии? Суть в том, что всё по-прежнему сводится к x, y, ширине и высоте. Когда мы устанавливаем позицию, то вытаскиваем x и y из объекта Point и присваиваем их значения свойствам x и y. А ширина и высота, поступившие из объекта Size, присваиваются свойствам width и height. Объект Rectangle, устанавливающий все четыре свойства, может либо проделать это через объекты Location и Size, либо установить все свойства сам. И, конечно, всё ещё можно использовать методы setX и setY. Работает это примерно так:

// Методы setX( x ) { this.x = x; } getX( ) { return this.x; } setLocation( newLocation ) { this.x = newLocation.x; this.y = newLocation.y; } getLocation() { return new Point( this.x, this.y ); } setRectangle( newRectangle ) { this.x = newRectangle.x; this.y = newRectangle.y; this.width = newRectangle.width; this.height = newRectangle.height; } getRectangle() { return new Rectangle( this.x, this.y, this.width, this.height ); }

Несмотря на то, что этот код достаточно условный, он абсолютно реален. Или, возможно, реален "c некоторыми если".

<fla>
< Тут, наверное, должен был прилагаться какой-то исходник, но автор видимо постеснялся... ;)
(прим. переводчика)
>

Отлично, считайте это первыми шагами. Может показаться, что, мол, так много кода и так мало делает, но красоту ООП (которую умом не понять, аршином общим не измерить...) вы, возможно, оцените, лишь написав программу целиком. Код будет находиться в родительских классах и будет работать, как только вы его вызовете. И уж совсем замечательно то, что написать этот код можно один только раз и на всю жизнь. Ха! Ну ладно, ладно! По отношению к вселенскому обману я лишь слегка преувеличил, и всё-таки: тот же класс можно запросто использовать в другом проекте - всуньте его в этот проект, да и дело с концом! Впрочем, наверняка сразу придётся его модифицировать. Не будем ради красоты концепции скрывать правду...

А теперь о подклассах.

<<

   ООП во Flash 5 ( II )    >>




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



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