Как показывает практика, многие избегают использования 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.
Крутите ручки – экспериментируйте.