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

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

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

Регистрация: Jun 2008
Сообщений: 9
По умолчанию Косяки с bitmapData и bitmap

Значит есть у меня следующий класс
Код AS3:
class ImgHandler extends MovieClip{
 
	var ImgL		:Loader;
	public function ImgHandler(file:FileReference){
 
		ImgL = new Loader();
		ImgL.contentLoaderInfo.addEventListener(Event.COMPLETE, imageLoadComplete); 
		ImgL.loadBytes(file.data);
 
	}
 
 
	private function imageLoadComplete(event:Event):void{
 
		var bitmapData:BitmapData = Bitmap(ImgL.content).bitmapData.clone();
 
		var sMx       :Matrix 		= new Matrix();
		var _max_size :Number		= 400;
		var _w        :Number 		= bitmapData.width;
		var _h        :Number 		= bitmapData.height;
		var tan       :Number 		= (_h/_w);
		var bmd		  :BitmapData;
 
		if( _w > _max_size || _h > _max_size )
			if( _w <= _h && _w >= _max_size ){
				bmd = new BitmapData( _max_size, (int)(_max_size*tan), true, 0x00000000);
				sMx.scale( _max_size/_w, (int)(_max_size*tan)/_h );
			}else{
				bmd = new BitmapData( (int)(_max_size/tan), _max_size, true, 0x00000000);
				sMx.scale( (int)(_max_size/tan)/_w, _max_size/_h );
			}
 
 
		bmd.draw(bitmapData,sMx);
 
		GlobalStore.add(new Bitmap(bmd));
	} 
 
}
Вообщем при загрузке стандартных картинок из винды,все ОК,но как только я загружаю скажем http://www.nacis.org/data/world_map/map2_base.jpg (13mb) или просто *.gif он выдает ошибки причем ,пишет первый раз ошибку при попытке доступа к любому свойству ( в моем случае - к width ) , в чем может быть косяк?

п.с. в FileReference переменную все докружаю по учебнику ^^ т.е не в этом дело,я вообще бага этого не замечал когда сразу в битмап кидал и выводил,ничего не маштабируя ..

Старый 11.09.2009, 00:09
VVall вне форума Посмотреть профиль Отправить личное сообщение для VVall Найти все сообщения от VVall
  № 2  
Ответить с цитированием
VVall

Регистрация: Feb 2009
Сообщений: 1,195
Слишком большая картинка.

Цитата:
The maximum width and maximum height of a BitmapData object is 2880 pixels.

Старый 11.09.2009, 00:14
VantuZZ вне форума Посмотреть профиль Отправить личное сообщение для VantuZZ Найти все сообщения от VantuZZ
  № 3  
Ответить с цитированием
VantuZZ

Регистрация: Jun 2008
Сообщений: 9
хМ,я ее загружал уже,могу код дать,и ничего не было, а тут вдруг появилось + вконтакте с такими работает и еще на gif ругается и на некоторые джепеги тоже ругается,попозже выложу ошибки..

Старый 11.09.2009, 01:13
switcher! вне форума Посмотреть профиль Отправить личное сообщение для switcher! Найти все сообщения от switcher!
  № 4  
Ответить с цитированием
switcher!

Регистрация: May 2009
Сообщений: 220
VVall, а в 10-м плеере разве не ввели расширение пиксельного максимума?
Есть подозрение, что инфу про 2880 pixels просто не обновили в AS3 хэлпе. Вот, например
Цитата:
In AIR 1.5 and Flash Player 10, the maximum size for a BitmapData object is 8,191 pixels in width or height, and the total number of pixels cannot exceed 16,777,215 pixels. (So, if a BitmapData object is 8,191 pixels wide, it can only be 2,048 pixels high.) In Flash Player 9 and earlier and AIR 1.1 and earlier, the limitation is 2,880 pixels in height and 2,880 in width.

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

блогер
Регистрация: Dec 2008
Адрес: Israel, Natanya
Сообщений: 4,740
Записей в блоге: 11
Даже для 10-го плеера картинка по ссылке слишком велика 11520 x 6560 = 75571200, при допустимых 16777215. Тексты ошибок мы должны угадать или вы их все таки приведете?

Старый 11.09.2009, 01:42
VantuZZ вне форума Посмотреть профиль Отправить личное сообщение для VantuZZ Найти все сообщения от VantuZZ
  № 6  
Ответить с цитированием
VantuZZ

Регистрация: Jun 2008
Сообщений: 9
Смешно,но так работает ! (тестировал на ~7000x7000 )
Код AS3:
private function imageLoadComplete(event:Event):void{
 
		var bitmap:Bitmap = new Bitmap(Bitmap(ImgL.content).bitmapData);
		var bitmapData:BitmapData = bitmap.bitmapData;//Bitmap(ImgL.content).bitmapData.clone();
		var sMx       :Matrix 		= new Matrix();
		var _max_size :Number		= 400;
		var _w        :Number 		= bitmapData.width;
		var _h        :Number 		= bitmapData.height;
		var tan       :Number 		= (_h/_w);
		var bmd		  :BitmapData;
 
		if( _w > _max_size || _h > _max_size )
			if( _w <= _h && _w >= _max_size ){
				bmd = new BitmapData( _max_size, (int)(_max_size*tan), true, 0x00000000);
				sMx.scale( _max_size/_w, (int)(_max_size*tan)/_h );
			}else{
				bmd = new BitmapData( (int)(_max_size/tan), _max_size, true, 0x00000000);
				sMx.scale( (int)(_max_size/tan)/_w, _max_size/_h );
			}
 
 
		bmd.draw(bitmapData,sMx);
 
		GlobalStore.add(new Bitmap(bmd));
	}


Последний раз редактировалось VantuZZ; 11.09.2009 в 01:46.
Старый 11.09.2009, 02:04
VVall вне форума Посмотреть профиль Отправить личное сообщение для VVall Найти все сообщения от VVall
  № 7  
Ответить с цитированием
VVall

Регистрация: Feb 2009
Сообщений: 1,195
Цитата:
Сообщение от switcher! Посмотреть сообщение
VVall, а в 10-м плеере разве не ввели расширение пиксельного максимума?
Да, вы правы, когда копировал, открыл хелп для 9-ого плеера.

Старый 11.09.2009, 02:12
alatar вне форума Посмотреть профиль Отправить личное сообщение для alatar Найти все сообщения от alatar
  № 8  
Ответить с цитированием
alatar
 
Аватар для alatar

блогер
Регистрация: Dec 2008
Адрес: Israel, Natanya
Сообщений: 4,740
Записей в блоге: 11
А какой смысл в этой конструкции?
Код AS3:
var bitmap:Bitmap = new Bitmap(Bitmap(ImgL.content).bitmapData);
var bitmapData:BitmapData = bitmap.bitmapData;
если вам нужна BitmapData так сразу ее и берите
Код AS3:
var bitmapData:BitmapData = (ImgL.content as Bitmap).bitmapData;
или
Код AS3:
var bitmapData:BitmapData = ((event.target as Loader).content as Bitmap).bitmapData;
чего вы вообще хотите этим кошмарным куском кода добиться?

Добавлено через 6 минут
и что это за хитрая хреновина?
Код AS3:
(int)(_max_size/tan)
возможно имелось ввиду
Код AS3:
int(_max_size/tan)

Старый 11.09.2009, 02:52
VantuZZ вне форума Посмотреть профиль Отправить личное сообщение для VantuZZ Найти все сообщения от VantuZZ
  № 9  
Ответить с цитированием
VantuZZ

Регистрация: Jun 2008
Сообщений: 9
вариант первый работает,спасибо,хотя не могу понять почему мой первичный не работал,пришлось извращаться
Код AS3:
var bitmapData:BitmapData = ((event.target as Loader).content as Bitmap).bitmapData;
на это выдается
Цитата:
TypeError: Error #1009: Не удается вызвать свойство или метод со ссылкой на объект "null".
at ImgHandler/imageLoadComplete()
Код AS3:
int(_max_size/tan)
тоже самое что и
Код AS3:
(int)(_max_size/tan)
привычки с Си

на гифы упорно пишет
Код AS3:
TypeError: Error #1009: Не удается вызвать свойство или метод со ссылкой на объект "null".
	at ImgHandler/imageLoadComplete()

Старый 11.09.2009, 06:44
alatar вне форума Посмотреть профиль Отправить личное сообщение для alatar Найти все сообщения от alatar
  № 10  
Ответить с цитированием
alatar
 
Аватар для alatar

блогер
Регистрация: Dec 2008
Адрес: Israel, Natanya
Сообщений: 4,740
Записей в блоге: 11
запустите флешку в дебаггере, что бы узнать конкретнее где именно вызывается null. Гифы анимированные или нет? Что выдают трейсы?
Код AS3:
trace(ImgL.content);
trace((ImgL.content as Bitmap).bitmapData);
Поставьте брекпоинты в соответсвующих местах проверьте все объекты. Я думаю дальше объяснять не нужно?

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

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

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


 


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


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