Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Поиск рулит! Сообщения за день Все разделы прочитаны
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 08.11.2012, 17:53
razerw вне форума Посмотреть профиль Отправить личное сообщение для razerw Найти все сообщения от razerw
  № 1  
Ответить с цитированием
razerw

Регистрация: Jun 2012
Адрес: Татарстан
Сообщений: 118
Question getBounds() присылает мне не верную геометрию фигуры

доброго времени суток.
функция getBounds() присылает мне не верную геометрию фигуры. то есть что я делаю.

есть вот такая функция присылающая геометрию фигуры
Код AS3:
		//Метод определяющий геометрию геометрию тайдла.
		private function getFrameSize(childByName:DisplayObject):Rectangle
		{
			var min:Point = new Point();
			var max:Point = new Point();
			var bounds:Rectangle;
			//allChildGotoFrame(mc, i);
			bounds = childByName.getBounds(childByName);
			min.x = Math.min(bounds.topLeft.x, min.x);
			min.y = Math.min(bounds.topLeft.y, min.y);
			max.x = Math.max(bounds.bottomRight.x, max.x);
			max.y = Math.max(bounds.bottomRight.y, max.y);
			//trace(max.x - min.x);
			trace(min.x, min.y, max.x - min.x, max.y - min.y);
			return new Rectangle(min.x, min.y, max.x - min.x, max.y - min.y);
		}
вот в этот аргумент childByName:DisplayObject поступает квадрат ширина = 10 длинна = 10, выравнена фигура по центру.
А вот что возвращает мне данная функция (x=-5.05, y=-5.05, w=26, h=21) как такое может происходить если стороны равны 10 пикселям?
может быть я неправильно пытаюсь узнать длину сторон?


Последний раз редактировалось iNils; 09.11.2012 в 13:43.
Старый 09.11.2012, 04:12
Nooob вне форума Посмотреть профиль Отправить личное сообщение для Nooob Найти все сообщения от Nooob
  № 2  
Ответить с цитированием
Nooob
 
Аватар для Nooob

Регистрация: Mar 2007
Сообщений: 319
значит в фигуре есть обводка толщиной 0.10. ну и ещё какой-то мусор

Старый 09.11.2012, 06:35
Sylon вне форума Посмотреть профиль Отправить личное сообщение для Sylon Найти все сообщения от Sylon
  № 3  
Ответить с цитированием
Sylon

Регистрация: Nov 2009
Сообщений: 16
Такой результат может получаться и при отсутствии мусора.

К сожалению, getBounds работает весьма ненадёжно. Подробно вылавливать условия, при которых возникают лажевые результаты, руки не доходили, но как минимум при следующих условиях getBounds может давать кривые значения:

1. Контур с JointStyle.MITER или .BEVEL в сочетании с LineScaleMode, любым кроме NONE (впрочем, при этом и на экране выглядит зачастую весьма коряво, особенно при большой ширине контура; однако баги отображения и значений getBounds не коррелированы)

2. Использование scrollRect - как в самом объекте, так и в потомках.

3. Наличие TextField-ов с использованием системных шрифтов. Зависит от используемого шрифта. Глюки часто были на WinXP, на Win7 с плеерами от 10-го вроде-бы не повторялось

4. При перегрузке проца, когда подряд вызывается много обработчиков (например от MOUSE_MOVE и таймеров), и комп не успевает всё перерисовывать... объект, для которого берётся getBounds при этом может никак не меняться, включая всех родителей и потомков. Однако значения размеров/положения могут получаться "весьма интересные" - каждый раз разные при нескольких вызовах getBounds.

5. При наличии преобразований (масштабирование, поворот и т.п.) ошибки в пределах 0.05 - нормальное явление, ибо с таким разрешением производятся вычисления.

Старый 09.11.2012, 09:34
razerw вне форума Посмотреть профиль Отправить личное сообщение для razerw Найти все сообщения от razerw
  № 4  
Ответить с цитированием
razerw

Регистрация: Jun 2012
Адрес: Татарстан
Сообщений: 118
Большое спасибо за внимание как оказалось на деле.
Действительно был мусор в виде добавление +10 пикселов в кеше ко всей анимации(.
Цитата:
Sylon
Да действительно есть такие погрешности виде сотых. Исправляю это математической функцией int

Создать новую тему Ответ Часовой пояс GMT +4, время: 10:46.
Быстрый переход
  « Предыдущая тема | Следующая тема »  
Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 10:46.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.