Показать сообщение отдельно
Старый 29.05.2012, 21:09
Svetlov вне форума Посмотреть профиль Отправить личное сообщение для Svetlov Найти все сообщения от Svetlov
  № 1  
Ответить с цитированием
Svetlov

Регистрация: May 2012
Сообщений: 8
По умолчанию В браузере некорректно работает подгрузка изображений Loader

Всем доброго дня.

Есть класс для загрузки изображений и компоновки их в соотвествующие спрайты для дальнейшего использования. При запуске из flashDevelop да и просто при помощи плеера, все ок, картинки подгружаются.
При открытии в браузере пишет ошибку -

TypeError: Error #2007: Parameter child must be non-null.
at flash.display:isplayObjectContainer/addChild()
at Function/<anonymous>()[C:\wamp\www\chess\DataLoader.as:74]

Выкладываю код класса, не обессудьте что кода не мало, просто не знаю как еще лучше объяснить суть проблемы.

Код AS3:
package  
{
	import flash.display.Bitmap;
	import flash.display.Loader;
	import flash.events.Event;
	import flash.filters.BlurFilter;
	import flash.media.Sound;
	import flash.net.URLRequest;
 
	/**
	 * ...
	 * @author Svetlov
	 */
	public class DataLoader
	{
 
		public function DataLoader(gameBody:Function) {
 
			// Loading board
			var addBoard:Function = function(e:Event):void {
				GVC.board = ld.content as Bitmap;
			}
			var ld:Loader;
			ld = new Loader();
			ld.contentLoaderInfo.addEventListener(Event.COMPLETE, addBoard);
			ld.load(new URLRequest('media/images/chessgame/chessboard.png'));
 
			// Loading figures
			var loadWhites:Function = function():void {
				gameBody.call();
			}
			var loadBlacks:Function = function():void {
				loadFigures('white', loadWhites);
			}
			loadFigures('black', loadBlacks);
 
			// Loading sounds
			loadSounds();
 
		}
 
		/**
		 * Loading figures images from disk
		 * @param	color - color of the figures
		 * @param	cb - callback function
		 */
		public function loadFigures(color:String, cb:Function):void {
 
			var i:int;
			var f_names:Array;
			if(color == 'white'){
				f_names = new Array('rook', 'knight', 'bishop', 'king', 'queen', 'bishop', 'knight', 'rook');
			}else {
				f_names = new Array('rook', 'knight', 'bishop', 'queen', 'king', 'bishop', 'knight', 'rook');
			}
			var bitmapImages:Array = new Array();
			for (i = 0; i < 8; i++) {
				f_names.push('pawn');
			}
			var figures:Array = new Array();
			for (i = 0; i < f_names.length; i++) {
				figures[i] = new Figure();
				figures[i].name = f_names[i];
				figures[i].this_color = color;
			}
			var ldrs:Array = new Array();
 
			for (i = 0; i < f_names.length; i++) {
				ldrs.push(new Loader);
			}
 
			var calb:Function = function(e:Event):void {
				bitmapImages.push(ldrs[bitmapImages.length].content as Bitmap);
				figures[bitmapImages.length-1].addChild( bitmapImages[bitmapImages.length - 1]);
 
				if (bitmapImages.length == f_names.length) {
					if (color == 'white') {
						GVC.bitmapWhites = bitmapImages;
						GVC.whites = figures;
					}
					if (color == 'black') {
						GVC.bitmapBlacks = bitmapImages;
						GVC.blacks = figures;
					}
					cb.call();
				}
			}
 
			for (i = 0; i < f_names.length; i++) {
				ldrs[i].contentLoaderInfo.addEventListener(Event.COMPLETE, calb);
				trace('media/images/chessgame/' + color + '/' + f_names[i] + '.png');
				ldrs[i].load(new URLRequest('media/images/chessgame/'+color+'/'+f_names[i]+'.png'));
			}
		}
 
		public function loadSounds():void {
			GVC.right_sound = new Sound(new URLRequest('media/sounds/chessgame/knock.mp3'));
			GVC.wrong_sound = new Sound(new URLRequest('media/sounds/chessgame/wrong.mp3'));
		}
 
	}
 
}
Пробовал трейсить через flashFireBug, получается что грузятся черные до короля, на втором слоне (bishop) вываливается указанная выше ошибка. Помогите разобраться пожалуйста. Даже предположить не могу в чем может быть проблема.

UPD:
Забыл сказать что открываю с тестового сервера по url. Если открыть в браузере по абсолютному пути все ок.


Последний раз редактировалось Svetlov; 29.05.2012 в 21:44.