ScrollRect. Дубль 2.

апреля 24, 2008

Как показывает практика, многие избегают использования scrollRect (я писал об этой чудесной возможности в одной из статей) по той простой причине, что не понимают, как работать с координатами. Действительно, после использования маски с клипом, где каждый участник процесса имеет свои понятные иксы и игреки, переход на scrollRect бывает труден.

Сегодня я еще раз попробую обратить вас в свою веру )).


Основная, бесспорная причина, по которой стоит использовать scrollRect вместо прямоугольных масок – производительность.
10 масок убьют CPU намного быстрее, чем 10 scrollRect-ов. Даже в хелпе сказано, что при использовании scrollRect используется попиксельное копирование участка клипа, а не полная его перерисовка.
Вторая причина – (вытекает из первой) можно маскировать НЕ внедренные шрифты, которые, как мы знаем, пропадают при маскировании обычным способом.

Также для меня лично плюсом является то, что мне не надо плодить новые клипы, только для того чтобы замаскировать контент.

Теперь о том, как это работает.

В процессе участвует MovieClip и объект Rectangle.
Когда к клипу применяется scrollRect – то на экран выводится только тот участок клипа, который КАК бы лежит под заданным прямоугольником. Координаты прямоугольника при этом задаются в системе координат маскируемого клипа – то есть от его точки регистрации. Хотим увидеть квадрат 20х20 левого верхнего угла клипа – задаем
mc.scrollRect = new Rectangle(0,0,20,20);

Заметьте, если вы начинаете сдвигать координату прямоугольника – координаты клипа остаются неизменными, хотя визуально кажется, будто он движется под маской. Еще раз напомню – происходит попиксельное копирование участка клипа.


Пример 1. Левый клип замаскирован scrollRect-ом. Перемещая рамку над правым – меняем x и y scrollRect-а.

 


Пример 2. Прокрутка большого клипа в окне заданного размера.
Координаты Rectangle изменяются в зависимости от координат мыши.

 


Пример 3. Комбинация перемещения клипа + перемещение scrollRect дает забавный эффект.
Попробуйте перевесить картину )

 


Пример 4. Покрутите ручки сами.Некоторые свойства Rectangle:

 

x, y – координата левого верхнего угла прямоугольника;
width, heigth – ширина, высота прямоугольника;
left – координата левой стороны. Изменяя это свойство мы меняем сразу и width, и x;
right -координата правой стороны. Изменяя это свойство мы изменяем также и width;
top – координата верхней стороны. Изменяя это свойство мы меняем сразу и height, и y;
bottom -координата нижней стороны. Изменяя это свойство мы изменяем также и height;Покрутив ручки MovieClip вы увидите разницу между перемещением клипа и перемещением прямоугольника scrollRect.
Интересный факт. Изменяя width прямоугольника мы меняем _width клипа (это логично). Но если мы при scrollRect начнем изменять непосредственно _width (_height) клипа – то клип начнет искажаться, тогда как scrollRect останется при своем _width.
Крутите ручки – экспериментируйте.

Popularity: 22% [?]

Entry Filed under: ActionScript,Math,Полезное

4 комментария

  • 1. devx  |  апреля 24, 2008 at 9:54

    спасибо. раньше избегал скролРекта, теперь буду пользоваться.

  • 2. Nicolas Prof  |  апреля 24, 2008 at 12:34

    Отличная статья, но все равно в многих случаях от маски не откажешься. К примеру какие то эффекты появления. А вот по поводу перемещения графики под маской это хорошее решение :)

  • 3. murejib  |  апреля 24, 2008 at 13:14

    Нет я не призываю отказаться от масок )))
    Я призываю отказаться от использования прямоугольных масок в пользу scrollRect )

    Конечно когда нужна круглая маска – то нужна маска )) Пока scrollOval не появится ))

  • 4. qzack  |  апреля 25, 2008 at 8:37

    правильно. отлично. спасибо.




МЕТА

Метки

2d 3D ActionScript adobe ae after effects animation animator_at_work AS2.0 AS3.0 astro bones bug bugfix debug deep linking draw drawing extension Flash flash CS4 flex fscommand fx html IK Math mindstream music-video NB opensource security swfaddress TextField traps uafpug useful utils video Новости анимация кинематика кости поток сознания туториал

Календарь

Апрель 2008
Пн Вт Ср Чт Пт Сб Вс
« Мар   Май »
 123456
78910111213
14151617181920
21222324252627
282930  

Архив

Ссылки

Радио