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

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

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

Регистрация: Dec 2008
Сообщений: 4
Post Загрузка изображения в CS4

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


Код AS3:
var file:FileReference = new FileReference();
 
 
var _loader:Loader;
 
//отображение диалога открытия файла
function onShowloadDialog(event:Event):void
{
	var fileFilter:FileFilter = new FileFilter("Images", "*.jpg"); 
	try{
		filereference.browse([fileFilter]);
	}
	catch(illegalOperation:IllegalOperationError){
 
	}
}
 
//при выборе файла загружаем его
function onSelectFile(event:Event):void
{
	_loader =  new Loader();
	 var tf:TextField = new TextField();
	 tf.text = filereference.name;
 
	_loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onComplete);
	_loader.load(new URLRequest(filereference.name));
	trace(filereference.name);
}
 
 
//когда файл загружен производим с инфой необходимые нам действия
function onComplete(event:Event):void
{
 
	var image:Bitmap = Bitmap(_loader.content);
	bitmap = image.bitmapData;
	var myBitmap:Bitmap = new Bitmap ( bitmap );
 
 
}

В CS4 появился у класса FileReferece новый метод load(). С помощью кототорого можно загрузить картинку с любым путем.
Поэтому вышевыложеный код был переписан следущим образом:
Код AS3:
function onSelectFile(event:Event):void
{
	try{
	file.load();
	}
	catch(illegalOperation:IllegalOperationError)
	{
	}
}
 
 
function onComplete(event:Event):void
{
	_loader=new Loader();
	loader.loadBytes(file.data);
	var image:Bitmap = Bitmap(_loader.content);
 
}

Картинка теперь загружается из любого места, но(!) во время исполнения строчки:
var image:Bitmap = Bitmap(_loader.content);
Выдаеться следущая ошибка:
TypeError: Error #1009: Cannot access a property or method of a null object reference.
at kg_last_sasha_cs4_fla::MainTimeline/onComplete()
Если кто уже сталкивался с подобной проблемой, или просто знает решение, подскажите, пожалуйста, как решить.

Старый 23.12.2008, 11:01
silin вне форума Посмотреть профиль Посетить домашнюю страницу silin Найти все сообщения от silin
  № 2  
Ответить с цитированием
silin
 
Аватар для silin

блогер
Регистрация: Mar 2003
Адрес: Моск. обл.
Сообщений: 5,269
Записей в блоге: 6
для loadBytes тоже надо ловить завершение
Код AS3:
private function onComplete(event:Event):void
{
	_loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onLoadBytesComplete);
	_loader.loadBytes(file.data);
 
}
 
private function onLoadBytesComplete(e:Event):void 
{
	var image:Bitmap = Bitmap(_loader.content);
	addChild(image);
}

Старый 27.08.2009, 12:17
yusrom вне форума Посмотреть профиль Отправить личное сообщение для yusrom Найти все сообщения от yusrom
  № 3  
Ответить с цитированием
yusrom

Регистрация: Aug 2009
Сообщений: 10
Question Error #1009

Здравствуйте! Пробежал по разным форумам в поисках решения этой проблемы - ошибка 1009. К сожалению ничего вразумительного не нашёл, кроме этого поста.
Вот мой код MainGame.as
Код AS3:
package  
{
	//import caurina.transitions.Tweener;
 
	import flash.display.DisplayObject;
	import flash.display.MovieClip;
	import flash.display.SimpleButton;
	import flash.events.Event;
	import flash.events.MouseEvent;
	import flash.events.ProgressEvent;
 
	import flash.xml.XMLDocument;
	import flash.xml.XMLNode;
	import flash.net.URLLoader;
	import flash.net.URLRequest;
	import flash.display.Loader;
 
	public class MainGame extends MovieClip
	{
		private var sGame:DisplayObject; //бить
		private var bGame:DisplayObject; //ловить
		private var fGame:DisplayObject; //финал
		public  var tabl :DisplayObject; //таблица
 
		//xml
		var xmlData : XML = new XML();
		var loader : URLLoader = new URLLoader();
		public static var valuta : String;
		public static var priz : String;
		public static var note : String;
		public static var congratulation_text : String;
		public static var error : String;
		public static var prize : String;
		public static var congratulation : String;
		public static var send : String;
		public static var title : String;
		public static var timer : String;
		public static var confirm_txt : String;
		public static var prizeimg : String;
		public static var score : String;
		public static var urlsave : String;
		public static var coeff_one_point : String;
		public static var help1 : String;
		public static var help2 : String;
		public static var operators_label : Array;
		public static var operators_code  : Array;
 
 
		var loader_image : Loader;
		public var prize_img : MovieClip;
		public var prize2_text : MovieClip;
 
 
		public var prev_game : int = 0;
 
		public static var xml_loaded : Boolean = false;
 
 
 
 
		public function MainGame()
		{
			stop();
			stage.scaleMode = "noScale";
 
			start_btn.visible = false;
 
			loaderInfo.addEventListener(ProgressEvent.PROGRESS, onProgress, false, 0, true);
			loaderInfo.addEventListener(Event.COMPLETE,         onInit,     false, 0, true);
		}
 
		private function hndlOnLoadXML(e:Event):void 
		{
			e.target.removeEventListener(Event.COMPLETE, hndlOnLoadXML, false);
			xmlData = new XML(e.target.data);
			//trace(xmlData);
 
 
			valuta = "" + xmlData.itm.attribute("valuta");
			priz   = "" + xmlData.itm.attribute("priz");
			note   = "" + xmlData.itm.attribute("note");
			congratulation_text = "" + xmlData.itm.attribute("congratulation_text");
			error  = "" + xmlData.itm.attribute("error");
			prize  = "" + xmlData.itm.attribute("prize");
			congratulation = "" + xmlData.itm.attribute("congratulation");
			send   = "" + xmlData.itm.attribute("send");
			title  = "" + xmlData.itm.attribute("title");
			timer  = "" + xmlData.itm.attribute("timer");
			confirm_txt = "" + xmlData.itm.attribute("confirm_txt");
			prizeimg    = "" + xmlData.itm.attribute("prizeimg");
			score       = "" + xmlData.itm.attribute("score");
			urlsave     = "" + xmlData.itm.attribute("urlsave");
			coeff_one_point = "" + xmlData.itm.attribute("coeff_one_point");
			help1       = "" + String(xmlData.help1);
			help2       = "" + String(xmlData.help2);
 
			operators_label = new Array();
			operators_code  = new Array();
			for each(var operator in xmlData.operators.operator)
			{
				operators_label.push(operator);
				operators_code.push(operator.@code);
			}
 
 
			loader_image = new Loader();
			//
 
			loader_image.contentLoaderInfo.addEventListener(Event.COMPLETE, hndlOnLoadImage, false, 0, true);
 
			try
			{
				loader_image.load( new URLRequest(prizeimg));
			} 
			catch (error : Error) 
			{
				trace("Unable to load prize image" + error);
			}
 
 
			xml_loaded = true;
		}
	private function hndlOnLoadImage(e:Event):void 
		{
 
			loader_image.removeEventListener(Event.COMPLETE, hndlOnLoadImage);			
 
			prize_img.addChild(loader_image);
 
 
			prize2_text.x = -2;
			prize2_text.y = 15;
			prize2_text.txt.text = "" + prize;
			prize_img.addChild(prize2_text);
 
 
			start_btn.visible = true;
			//Tweener.addTween(bg, { alpha:0, time:0.5 } );
			bg.visible = true;
			start_btn.addEventListener(MouseEvent.CLICK, onClick, false, 0, true);
		}
 
		private function onProgress(e:ProgressEvent) : void
		{
			var loaded:Number = e.bytesLoaded / e.bytesTotal * 100;
			preload.gotoAndStop(Math.round(loaded));
		}
		private function onInit(e:Event):void
		{
			if (contains(preload))
				removeChild(preload);
			//
 
			prize_img   = new MovieClip();
			prize2_text = new prize2_txt();
 
			loader.addEventListener(Event.COMPLETE, hndlOnLoadXML, false, 0, true);
			try 
			{
				loader.load(new URLRequest("parameters.xml"));
			} 
			catch (error : Error) 
			{
				trace("Unable to load xml: " + error);
			}
		}
 
		private function onClick(e:MouseEvent):void
		{
			start_btn.removeEventListener(MouseEvent.CLICK, onClick);
 
			gotoAndStop(3);
 
			var blockGame:Class = loaderInfo.applicationDomain.getDefinition("BlockGame") as Class;
			bGame = (new blockGame()) as DisplayObject;
 
			var shotGame:Class = loaderInfo.applicationDomain.getDefinition("ShotGame") as Class;
			sGame = (new shotGame()) as DisplayObject;
 
			var finalGame:Class = loaderInfo.applicationDomain.getDefinition("FilnalScreen") as Class;
			fGame = (new finalGame()) as DisplayObject;
 
			var Tabl:Class = loaderInfo.applicationDomain.getDefinition("Tablo") as Class;
			tabl = (new Tabl()) as DisplayObject;
 
			switchToGame(1);
		}
 
		public function switchToGame(g:int):void
		{
			if (bGame != null && contains(bGame))
				removeChild(bGame);
			//
			if (sGame != null && contains(sGame))
				removeChild(sGame);
			//
			if (fGame != null && contains(fGame))
			{
				tablo.reset();
				update();
 
				removeChild(fGame);
			}
			//
 
 
			Model.shots = 0;
			tabl.visible = true;
 
			var game:DisplayObject;
			switch(g)
			{
				case 1: //удар
					//
					game = sGame;
					tabl.scaleX = tabl.scaleY = 1.0;
					tabl.x = 345;
					tabl.y =  43;
					tablo.keeperGame = false;
					break;
				//
				case 2: //ловля
					//
					game = bGame;
					tabl.scaleX = tabl.scaleY = 0.64;
					tabl.x = 408;
					tabl.y =  73;
					tablo.keeperGame = true;
					break;
				//
				case 3: //финал
					//
					Model.totalShots = 0;
 
					game = fGame;
					tabl.visible = false;
					tablo.reset();
					break;
				//
			}
 
 
			if (g == prev_game + 1)
				Model.is_read_help = true;
			//
 
			addChildAt(game, 0);
			addChild(tabl);
 
			prize_img.x = 1024 - 225;
			prize_img.y = 15;
			addChild(prize_img);
 
			if (g == 3)
			{
				if(contains(prize_img))
					removeChild(prize_img);
				//
			}
 
 
			prev_game = g;
			if (prev_game == 3)
				prev_game = 0;
			//
 
			//update();
		}
 
		public function update():void
		{
			tablo.update();
		}
 
		public function get tablo() : Tablo
		{
			return tabl as Tablo;
		}
 
	}
 
}
При компиляции выводится сообщение об ошибке
TypeError: Error #1009: Не удается вызвать свойство или метод со ссылкой на объект "null".
at MainGame/hndlOnLoadImage()

А также не отображается кнопка start_btn.
Как я понял ошибка либо в функции hndlOnLoadImage() либо в соседней на несколько строк выше.
Подскажите, пожалуйста, решение проблемы!
__________________
yusrom.ucoz.ru

Старый 30.08.2009, 20:44
yusrom вне форума Посмотреть профиль Отправить личное сообщение для yusrom Найти все сообщения от yusrom
  № 4  
Ответить с цитированием
yusrom

Регистрация: Aug 2009
Сообщений: 10
При замене строчки
loader_image.contentLoaderInfo.addEventListener(Event.COMPLETE, hndlOnLoadImage, false, 0, true);
на строчку
loader_image.addEventListener(Event.COMPLETE, hndlOnLoadImage, false, 0, true);
ошибка 1009 не появляется, но и кнопка start_btn тоже.
Что делать, блин?
__________________
yusrom.ucoz.ru

Старый 20.11.2010, 11:05
Skaylin вне форума Посмотреть профиль Отправить личное сообщение для Skaylin Найти все сообщения от Skaylin
  № 5  
Ответить с цитированием
Skaylin

Регистрация: Nov 2010
Сообщений: 1
Как я понимаю ответа никто тут не дождется))) НО самое смешное что я вот тоже сейчас столкнулся с той же проблемой, эта ошибка постоянно вылетает #1009 и как результат ссылка по которой я хочу перейти эту ошибку и вызыват. Я уже с этой кнопкой что только не предумывал, результат один- ошибка. Есть тут МОЗГ который доступно обьяснит в чем конкретно проблема?

Старый 20.11.2010, 12:06
Mur4ik вне форума Посмотреть профиль Отправить личное сообщение для Mur4ik Найти все сообщения от Mur4ik
  № 6  
Ответить с цитированием
Mur4ik
ветеран форума

Регистрация: Sep 2008
Сообщений: 717
Записей в блоге: 4
Отправить сообщение для Mur4ik с помощью ICQ
Цитата:
Сообщение от Skaylin Посмотреть сообщение
Есть тут МОЗГ который доступно обьяснит в чем конкретно проблема?
Вот именно с этого нужно и начинать, доступно объяснить в чем конкретно проблема.
А уж после форумчане постараются подсказать ее решение.

А у вас получается "Я получаю ошибку - почему?". Да масса вариантов!!!
Показывайте код, прикрепляйте минимальные тестовые проекты, это же в ваших интересах, не так ли?

Аналогично код yusrom, ни как не информативен и мало что понятно что там создается руками во флеше (и есть ли оно вообще на сцене), а что программно.
Подписали loader_image.contentLoaderInfo, а отписываем loader_image, плюс загадка существуют ли вообще prize_img, prize2_text, start_btn, bg. Может что то из них и есть в данный момент null. Обычно при таких ошибках выдается номер строки кода приводящий к ошибке. Или выводите элементарные трейсы всех подозрительных объектов и смотрите что все они присутствуют и имеют необходимые свойства и методы.
__________________
trace("Остановите Землю, я сойду!!!");

Старый 20.11.2010, 16:10
-De- вне форума Посмотреть профиль Отправить личное сообщение для -De- Найти все сообщения от -De-
  № 7  
Ответить с цитированием
-De-
 
Аватар для -De-

блогер
Регистрация: Oct 2005
Адрес: Днепродзержинск - город Брежнева и других логопедов
Сообщений: 1,421
Записей в блоге: 4
Отправить сообщение для -De- с помощью ICQ Отправить сообщение для -De- с помощью Skype™
Доступно и конкретно, кэп думаю одобрит. Если у вас в коде есть что-то вида
mysmth.field
mysmth.method(...
mysmth[index]
и mysmth - это null или undefined, то возникает ошибка
TypeError: Error #1009: Не удается вызвать свойство или метод со ссылкой на объект "null".
По другим причинам не возникает.
__________________
Бобры отвечают на вопросы не потому, что знают на них ответы; они отвечают потому, что их спрашивают.

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

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

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


 


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


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