|
|
|||||
Регистрация: Feb 2007
Сообщений: 30
|
Ошибка при использовании Scale9Grid
фла файл
файл Scale9.as package { import flash.display.*; import flash.geom.*; public class Scale9 extends MovieClip { public function Scale9():void { graphics.lineStyle(10,0x40A0A0,30); graphics.beginFill(0xFF0000); graphics.drawRect(50,50,100,100); graphics.endFill(); var grid:Rectangle = new Rectangle(60,60,90,90); scale9Grid = grid; } } } ArgumentError: Error #2004: Один из параметров указан неверно. at flash.display:: DisplayObject/set scale9Grid() at Scale9() at v_fla::MainTimeline/frame1() в чем проблема? |
|
|||||
Тут надо определить видимый размер скалируемого объекта и нарисовать вокруг него невидимый прямоугольник, но так что-бы прямоугольник выступал со всех сторон объекта ,хотя-бы на пару пикселей, а потом применять скале9грид с первоначальным размером объекта, так она всегда работает.
Пример http://www.murmadillo.tut.su/m/scale9gridTrue.rar |
|
|||||
http://onenterframe.ru/2009/06/14/smart9slice/ Тут интересный пример
__________________
"I am the terror that flaps in the night…!" |
|
|||||
Регистрация: Feb 2007
Сообщений: 30
|
Помог вот етот вариант
Всем спасибо ) |
|
|||||
Регистрация: Nov 2009
Сообщений: 16
|
К сожалению, scale9Grid пока работает так, что ей лучше не пользоваться. Для малоразмерных объектов, минимальные размеры которых при масштабировании должны быть менее 10 пикселов, использовать не реально. Как ни подбирай параметры, всё равно иногда будет вылетать. Для таких объектов - только два варианта: либо дробить их на 9 отдельных, либо каждый раз отрисовывать по новой. Первый вариант плох не только раздутым кодом, но ещё и тем, что растёт загрузка проца при при банальном перемещении мыши... Если это кнопки с хитрыми углами, и их на экране с полсотни, если не больше... в общем разрастание числа объектов не есть гуд...
Практически пришлось остановиться на варианте, где при изменении размеров картинка каждый раз отрисовывается заново. А теперь самое интересное - самая большая загрузка проца получилась при разбиении на 9 кусков, и масштабировании нужных по отдельности. Использование .cacheAsBitmap=true влияет, к сожалению, незначительно. Самый шустрый вариант - через scale9Grid, только заставить его работать без глюков так и не получилось. Вариант с .graphics.clear() и отрисовкой заново работает ~ в двое медленнее, чем .scale9Grid, но заметно быстрее, чем перемещение углов и масштабирование кусочков. Ручное разбиение на 9 кусков можно заставить работать быстро, если каждый из них отрисовать в свой битмап, правда этот номер не проходит, если нужно собитать события мыши с объекта хитрой формы, да и слишком громоздко... |
|
|||||
буду краток
модератор форума
Регистрация: Sep 2003
Адрес: Ближайшее Замкадье
Сообщений: 3,110
Записей в блоге: 28
|
попробуйте http://www.bytearray.org/?p=118
я лично использовал для выплывающих менюшек с твинами - работает шустро.
__________________
Отряд Котовскага |
Часовой пояс GMT +4, время: 18:42. |
|
« Предыдущая тема | Следующая тема » |
|
|