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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Закрытая тема
Старый 15.11.2007, 16:13
VovkaMorkovka вне форума Посмотреть профиль Отправить личное сообщение для VovkaMorkovka Найти все сообщения от VovkaMorkovka
  № 1  
VovkaMorkovka
[+3 13.02.08]

Регистрация: Apr 2006
Сообщений: 421
По умолчанию Error #2015: Invalid BitmapData как побороть?

Здраствуйте господа!
Проблема такая: я заполняю мувиклитами карту разбитую на клетки. Каждый мувиклип - одна клетка. Делаю я это так: в пустой мувиклип аттачу битмапу. Какую именно зависит от входных условий, но для теста аттачу одну и ту - же.
Карта большая - 100x100 клеток, соответственно имеем 10000 мувиклипов
Я поборол ошибку максимального исполнения скрипта с помощью таймера. Но, к определенному моменту вылетает такая ошибка

Код:
Error #2015: Invalid BitmapData
Я тут пошарился в инете и нашел в форуме такой вопрос и ответ


Вопрос

Цитата:
I tried to get a bitmap copy of the Application..No problem.
But when I try to get the bitmapdata from a canvas within the
Application it's giving me an error.

// I'm using this
var data : BitmapData = new BitmapData(target.width, target.height,
true, 0);

data.draw(target);

//This is the error?!! with target =
Application.application.content_canvas
Error #2015: Invalid BitmapData.

Ответ


Код:
This might be because your Canvas component isn't initialised yet. i.e. 
check what width and height properties are assigned to the Canvas. 
What's the container of it? 
  
Best, 
Alex

А вот код в котором возникает ошибка

Код:
protected override function attachBitMap(nameOfBitM:String):void{
			var debugInfo:String="nameOfBitM:"+nameOfBitM+"\n"
			try{
				
				var bitmapData:BitmapData;//=new t1_1(SetParameters.CELL_WIDTH,SetParameters.CELL_HEIGHT);
				debugInfo+="\nbitmap data start";
				switch(nameOfBitM){
					case "t1_1":
					bitmapData=new t1_1(SetParameters.CELL_WIDTH,SetParameters.CELL_HEIGHT);
					break;
					.........					case "t3_19":
					bitmapData=new t3_19(SetParameters.CELL_WIDTH,SetParameters.CELL_HEIGHT);
					break;
					default:
					bitmapData=new t1_11(SetParameters.CELL_WIDTH,SetParameters.CELL_HEIGHT);
				}
				debugInfo+="\n bitmapdata  is created";
				
				var bitm:Bitmap=new Bitmap(bitmapData);
				debugInfo+="\n bitmap  is created";
				this.addChild(bitm);
				debugInfo+="\n this.addChild(bitm);";
			}catch(e:Error){
				trace(e.message+"\nnameOfBitM:"+nameOfBitM+" error"+debugInfo);
			}
		}
Вот, но как побороть это я не знаю


Заранне благодарен,
Владимир


Последний раз редактировалось VovkaMorkovka; 15.11.2007 в 17:39.
Старый 15.11.2007, 17:42
2morrowMan вне форума Посмотреть профиль Отправить личное сообщение для 2morrowMan Найти все сообщения от 2morrowMan
  № 2  
2morrowMan
 
Аватар для 2morrowMan

Регистрация: Aug 2007
Сообщений: 467
Обрабатывай событие Event.ADDED_TO_STAGE и после него уже делай то что надо.

Старый 15.11.2007, 17:50
VovkaMorkovka вне форума Посмотреть профиль Отправить личное сообщение для VovkaMorkovka Найти все сообщения от VovkaMorkovka
  № 3  
VovkaMorkovka
[+3 13.02.08]

Регистрация: Apr 2006
Сообщений: 421
А не может так быть, что тупо не хватает памяти для этих объектов?
У меня появилась такая версия

Старый 15.11.2007, 18:13
VovkaMorkovka вне форума Посмотреть профиль Отправить личное сообщение для VovkaMorkovka Найти все сообщения от VovkaMorkovka
  № 4  
VovkaMorkovka
[+3 13.02.08]

Регистрация: Apr 2006
Сообщений: 421
Короче попробовал я предложенный вариант - та же проблема, ограничил размер карты до 80x80 - заработало. Похоже придется добавлять на экран только видимые объекты, а невидимые удалять

Старый 15.11.2007, 18:23
__i вне форума Посмотреть профиль Отправить личное сообщение для __i Найти все сообщения от __i
  № 5  
__i
 
Аватар для __i

Регистрация: Jan 2004
Адрес: Украина, Харьков
Сообщений: 1,524
Отправить сообщение для __i с помощью ICQ
есть еще такая вероятнось:
1. неверный размер битмап даты (один из размеров равен 0 или больше чем 2880)
2. Мувиклипу установлен флаг cacheAsBitmap = true, а в процессе атача битмапов размер его становиться больше чем 2880
__________________
33 коровы

Старый 20.08.2008, 15:28
Rzer вне форума Посмотреть профиль Отправить личное сообщение для Rzer Посетить домашнюю страницу Rzer Найти все сообщения от Rzer
  № 6  
Rzer
 
Аватар для Rzer

блогер
Регистрация: Feb 2007
Адрес: Spb
Сообщений: 613
Записей в блоге: 8
Отправить сообщение для Rzer с помощью ICQ
В зависимости от компьютера после энного вызова new BitmapData() - возникает ошибка, также избегай метода clone для битмапДаты. Для FlashPlayer это число намного больше, чем для плеера среды.


Последний раз редактировалось Rzer; 20.08.2008 в 15:31.
Старый 20.08.2008, 15:38
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 7  
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
Rzer, вопрос был задан 10 месяцев назад.

Старый 20.08.2008, 15:39
ulik вне форума Посмотреть профиль Отправить личное сообщение для ulik Посетить домашнюю страницу ulik Найти все сообщения от ulik
  № 8  
ulik
 
Аватар для ulik

Регистрация: Apr 2007
Адрес: Moscow city
Сообщений: 286
Отправить сообщение для ulik с помощью ICQ
VovkaMorkovka >>
Цитата:
Карта большая - 100x100 клеток, соответственно имеем 10000 мувиклипов
Совет: показывайте, создавайте клипы, но только те, которые "входят в рабочую область" т.е. видны. Зачем вам остальные? Делайте это в рантайме. Если у вас экране видно всего лишь поле 2x2, то и создавайте 4 клипа, а не 10000. И хак с таймеров не нужен будет.

зы: Денис, сорь. Лоханулся.. На дату не глянул
Закрой тему, просто.
__________________
Дизайн, как презерватив - каждому жмет по-своему © Я
мое: блог форум


Последний раз редактировалось ulik; 20.08.2008 в 15:45.
Старый 20.08.2008, 15:42
Rzer вне форума Посмотреть профиль Отправить личное сообщение для Rzer Посетить домашнюю страницу Rzer Найти все сообщения от Rzer
  № 9  
Rzer
 
Аватар для Rzer

блогер
Регистрация: Feb 2007
Адрес: Spb
Сообщений: 613
Записей в блоге: 8
Отправить сообщение для Rzer с помощью ICQ
Поисковиком нашел - на дату не посмотрел....

Создать новую тему Закрытая тема Часовой пояс GMT +4, время: 02:32.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

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

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


 


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


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