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

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

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

Регистрация: May 2009
Адрес: Санкт-Петербург
Сообщений: 79
По умолчанию ArgumentError: Invalid BitmapData при корректных размерах объекта

Есть код:
Код AS3:
const r:Rectangle = mc.getBounds(someSprite);
try
		{
			var bmd:BitmapData = new BitmapData(r.width, r.height, true, 0);
		}
		catch (error:Error)
		{
			throw new ArgumentError("RasterizeFrame uncorrect bmd!!!  rect= " + r);
		}
В это месте возникает ошибка
ArgumentError: RasterizeFrame uncorrect bmd!!! rect= (x=1, y=-25, w=363.4, h=362)
Подскажите, с чем она может быть связана, если размеры корректные.
В документации написано:
Выдает ArgumentError — ширина и/или высота превышает максимальное значение. (Т. е. если ширина объекта BitmapData составляет 8,191 пикселя, его высота не может быть больше 2 048 пикселей.)

Старый 22.06.2014, 17:58
Zebestov вне форума Посмотреть профиль Отправить личное сообщение для Zebestov Посетить домашнюю страницу Zebestov Найти все сообщения от Zebestov
  № 2  
Ответить с цитированием
Zebestov
Lorem ipsum
 
Аватар для Zebestov

модератор форума
Регистрация: May 2001
Адрес: Одесса
Сообщений: 4,869
Записей в блоге: 4
Код AS3:
import flash.display.BitmapData;
import flash.geom.Rectangle;
 
const r:Rectangle = new Rectangle(1, -25, 363.4, 362);
 
try
{
	var b:BitmapData = new BitmapData(r.width, r.height, true, 0);
}
catch (error:Error)
{
	throw new ArgumentError("RasterizeFrame uncorrect bmd!!! rect = " + r);
}
Ошибок нет.
__________________
Поймай яблоко 2!

Старый 22.06.2014, 18:25
caseyryan вне форума Посмотреть профиль Отправить личное сообщение для caseyryan Найти все сообщения от caseyryan
  № 3  
Ответить с цитированием
caseyryan
 
Аватар для caseyryan

Регистрация: Jun 2012
Адрес: Новосибирск
Сообщений: 6,644
Записей в блоге: 4
Цитата:
Подскажите, с чем она может быть связана, если размеры корректные.
Эта ошибка вылетит и если размеры равны нулю.
Я вот этого не пойму:
Код AS3:
const r:Rectangle = mc.getBounds(someSprite);
Что это за извращение?
Почему не так?
Код AS3:
const r:Rectangle = mc.getBounds(mc);
Логично же, что нужно получать размеры объекта относительно его собственной системы координат, а не какого-то другого, который, возможно, к нему вообще никакого отношения не имеет
__________________
Ко мне можно и нужно обращаться на ты)

Старый 22.06.2014, 18:41
Zebestov вне форума Посмотреть профиль Отправить личное сообщение для Zebestov Посетить домашнюю страницу Zebestov Найти все сообщения от Zebestov
  № 4  
Ответить с цитированием
Zebestov
Lorem ipsum
 
Аватар для Zebestov

модератор форума
Регистрация: May 2001
Адрес: Одесса
Сообщений: 4,869
Записей в блоге: 4
Цитата:
Сообщение от caseyryan Посмотреть сообщение
Эта ошибка вылетит и если размеры равны нулю.
Тоже думал сказать, но ведь "показания" говорят о нормальных ширине/высоте!
Цитата:
Сообщение от caseyryan Посмотреть сообщение
Что это за извращение?
Это не извращение. Вполне возможно, что это продиктовано необходимостью растрировать объект не в его истинных размерах, а с соблюдением текущей трансформации относительно someSprite.
__________________
Поймай яблоко 2!

Старый 22.06.2014, 19:39
caseyryan вне форума Посмотреть профиль Отправить личное сообщение для caseyryan Найти все сообщения от caseyryan
  № 5  
Ответить с цитированием
caseyryan
 
Аватар для caseyryan

Регистрация: Jun 2012
Адрес: Новосибирск
Сообщений: 6,644
Записей в блоге: 4
А вообще, мне не понятно зачем ставить блок try / catch, чтобы из catch потом слать свою ошибку?
__________________
Ко мне можно и нужно обращаться на ты)

Старый 22.06.2014, 20:11
Zebestov вне форума Посмотреть профиль Отправить личное сообщение для Zebestov Посетить домашнюю страницу Zebestov Найти все сообщения от Zebestov
  № 6  
Ответить с цитированием
Zebestov
Lorem ipsum
 
Аватар для Zebestov

модератор форума
Регистрация: May 2001
Адрес: Одесса
Сообщений: 4,869
Записей в блоге: 4
А это да ) смешно.
__________________
Поймай яблоко 2!

Старый 23.06.2014, 12:54
Aquahawk вне форума Посмотреть профиль Отправить личное сообщение для Aquahawk Посетить домашнюю страницу Aquahawk Найти все сообщения от Aquahawk
  № 7  
Ответить с цитированием
Aquahawk
 
Аватар для Aquahawk

Регистрация: Nov 2010
Адрес: Москва
Сообщений: 915
Записей в блоге: 4
Отправить сообщение для Aquahawk с помощью ICQ Отправить сообщение для Aquahawk с помощью Skype™
Вообще хорошая практика, битмап не знает контекста, а теперь ошибка вполне очеловечена, я очень редко пользую трай кетч, но это помогало в древние времена когда не было стектрейсов в релизных плеерах понять что не так то. RasterizeFrame uncorrect bmd и сразу понятно где упало, выше уровнем её разок можно перехватить и добавить типа перса фигачили, упало.

Добавлено через 52 секунды
А по теме, сделайте трейсы непосредственно там где передаёте значения, посмотрите что там, а не потом когда ошибку словили.
__________________
:)

Старый 23.06.2014, 18:47
Maestro13 вне форума Посмотреть профиль Отправить личное сообщение для Maestro13 Найти все сообщения от Maestro13
  № 8  
Ответить с цитированием
Maestro13

Регистрация: May 2009
Адрес: Санкт-Петербург
Сообщений: 79
try catсh это была вынужденная мера, так как в логи сыпались ошибки создания битмап даты. Поставил все возможные проверки, и на нулл и на максимальные размеры. Решил проверить что не так, поставил try catch с выводом размеров спрайта. При онлайне 10-15 тыс. Вылетает около 20 тыс. таких ошибок в день

Добавлено через 1 минуту
Причем все размеры вполне реалистичные и ненулевые

Добавлено через 6 минут
При этом у меня эта ошибка не возникала ни разу

Добавлено через 16 минут
Может память кончается?

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

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

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


 


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


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