|
|
|||||
[+4 06.05.14]
|
Видимые размеры клипа
Еще раз убеждаюсь в некомпетентности дизайнеров , даже крутых студий, ну да ладно, не об этом разговор...
Вопрос - можно ли как то получить размеры клипа, которые IDE показывает визуально. То есть, если в IDE написано 500*500 , а там еще 1000 масок разных размеров, и в итоге в трейсе видим 700*600 например. Переопределением решать нельзя - проект сразу становится неуправляем в плане смены графики.
__________________
Марк Tween |
|
|||||
Отрисовать в BitmapData, определить непрозрачную область (getColorBoundsRect) и вырезать эту самую область (copyPixels). Так наверное, не знаю как еще можно приблизиться к тому, что показывает IDE
__________________
...вселенская грусть |
|
|||||
2 варианта
1.Получить растр метдом draw и используюя метод bitmapData.getColorBoundsRect () с опицией findColor false найти видимую область где цвет не прощарчный. http://help.adobe.com/ru_RU/FlashPla...lorBoundsRect() 2. ПРойтись по чайлдам и полчуив rect кажого сложить определенным образом учитывая маски Цитата:
__________________
... |
|
|||||
Lorem ipsum
|
/** * Метод вычисляет реальные визуальные габариты экранного объекта * с учетом всевозможных визуальных эффектов наподобие GlowFilter, * BlurFilter и т.д. * * @param diplayObject — Экранный объект. * @param margin (default = 100) — Размер свободного места вокруг * объекта, которого предположительно достаточно для отображения * не учтенных методами getRect и getBounds визуальных эффектов. * @return Rectangle */ public static function getBoundingRectangle(diplayObject:DisplayObject, margin:uint = 100):Rectangle { // Запоминаем исходное состояние объекта var tempMatrix:Matrix = diplayObject.transform.matrix; var tempAlpha:Number = diplayObject.alpha; // Готовим объект к "примерке" diplayObject.transform.matrix = new Matrix(); diplayObject.alpha = 1.0; // Снимаем размеры var tempRectangle:Rectangle = diplayObject.getBounds(diplayObject); var testMatrix:Matrix = new Matrix(); testMatrix.tx = margin - tempRectangle.x; testMatrix.ty = margin - tempRectangle.y; var testBitmapData:BitmapData = new BitmapData(margin * 2 + tempRectangle.width, margin * 2 + tempRectangle.height, true, 0x00000000); testBitmapData.draw(diplayObject, testMatrix, null, null, null, true); var result:Rectangle = testBitmapData.getColorBoundsRect(0xff000000, 0x00000000, false); result.x -= testMatrix.tx; result.y -= testMatrix.ty; result.x = Math.floor(result.x); result.y = Math.floor(result.y); result.width = Math.ceil(result.width); result.height = Math.ceil(result.height); testBitmapData.dispose(); // Возвращаем объект в исходное состояние diplayObject.transform.matrix = tempMatrix; diplayObject.alpha = tempAlpha; return result; }
__________________
Поймай яблоко 2! |
Часовой пояс GMT +4, время: 21:16. |
|
« Предыдущая тема | Следующая тема » |
|
|