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

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

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

Регистрация: Apr 2007
Адрес: Новосибирск
Сообщений: 98
По умолчанию Не ловит событие загрузки

Подскажите пожалуйста, почему не отлавливается событие загрузки. Не вызывается функция onLoaded
Код AS3:
package {
	import flash.events.EventDispatcher;
	import flash.events.Event;
	import flash.display.Loader;
	import flash.net.URLRequest;
	import flash.events.MouseEvent;
	import flash.external.ExternalInterface;
	public class mcArray extends EventDispatcher 
	{
	public var _arr:Array;
	private var _data:parsedXML;
	private var loader:Loader;
	private var loaded:Number=0;
	public var id:String;
	public var constId:Number;
 
	public function mcArray (d:parsedXML)
		{
			_arr=new Array();
 			_data=d;	
 
 
		}
 
	function onLoaded (e:Event)
		{
			trace("=)")
 
			e.target.y=e.target.height-175
			e.target.x=e.target.width-120
 
 
			loaded++;
			if (loaded==_data._arr.length())
			{
				dispatchEvent (new Event("Loaded"));
			}
		}
 
		function handleClick (e:MouseEvent)
		{
 
			var id=e.currentTarget.jid
			ExternalInterface.call("Load",id);
 
			var i:int=0;
			for each (var el:Array in _data._arr)
			{
				if (String(el[1])==id)constId=i;
				i++;
			}
 
			dispatchEvent (new Event("Clicked"));
		}
 
		function make()
		{
			for each(var i:Array in _data._arr)
			{
				var tmp:container=new container;
				trace("=(")
				loader=new Loader();
				loader.addEventListener(Event.COMPLETE,onLoaded);
				loader.load(new URLRequest(i[0]));
				with (tmp)
				{
					jid = String(i[1]);
					tfmc.tf.text=i[2];
					cont.addChild(loader);
 
					addEventListener(MouseEvent.CLICK,handleClick);
					cont.buttonMode=true;
					tfmc.mouseChildren=false
					tfmc.buttonMode=true;
				}
				_arr.push(tmp);
			}
			//dispatchEvent (new Event("Loaded"));
		}
 
 
 
 
	}
}

Старый 20.04.2010, 22:27
mikhailk вне форума Посмотреть профиль Отправить личное сообщение для mikhailk Найти все сообщения от mikhailk
  № 2  
Ответить с цитированием
mikhailk
 
Аватар для mikhailk

Регистрация: Nov 2009
Адрес: СПб
Сообщений: 2,236
сорри за оффтоп, но когда в описании вакансии указано "умение разбираться в чужом коде", я кажется представляю, что они имеют в виду...

Из конструктора ничего не вызывается.
Что вообще планировалось сделать?

Старый 20.04.2010, 22:46
O.K. вне форума Посмотреть профиль Отправить личное сообщение для O.K. Найти все сообщения от O.K.
  № 3  
Ответить с цитированием
O.K.

Регистрация: Apr 2007
Адрес: Новосибирск
Сообщений: 98
Вобщем проблема в том что когда я гружу картинки
Код AS3:
loader=new Loader();
loader.addEventListener(Event.COMPLETE,onLoaded);
loader.load(new URLRequest(i[0]));
то загружаясь, они не вызывают обработчик onLoaded, мож изза того что я eventDispatcher extends...

Вызывается все из другого класса - т.е. картинки вижу они грузятся, но событие не срабатывает


Последний раз редактировалось O.K.; 20.04.2010 в 22:48.
Старый 20.04.2010, 22:47
Psycho Tiger вне форума Посмотреть профиль Отправить личное сообщение для Psycho Tiger Найти все сообщения от Psycho Tiger
  № 4  
Ответить с цитированием
Psycho Tiger
 
Аватар для Psycho Tiger

блогер
Регистрация: Jun 2005
Адрес: Господи пожалуйста не Новосибирск
Сообщений: 6,598
Записей в блоге: 17
А, ну ок. Короче, у вас не код, а тихий ужас. Но понимание этого придёт со временем)
Так же следует добавить что вы не указали что вызываете метод make - я сам должен додумывать?
А ошибка в том, что на Event.COMPLETE надо подписывать не loader, a loader.contentLoaderInfo

Старый 20.04.2010, 23:08
O.K. вне форума Посмотреть профиль Отправить личное сообщение для O.K. Найти все сообщения от O.K.
  № 5  
Ответить с цитированием
O.K.

Регистрация: Apr 2007
Адрес: Новосибирск
Сообщений: 98
Точно! Спасибо, забыл)

Кстати, а почему тихий ужас? Тоесть, откровенно говоря "это я ещё старался" - раньше я тупо всё лепил в один класс, а тут както решил постараться разбить на несколько: один грузит данные другой отображает итп..

Если можно, еще вопрос:
Код AS3:
e.target.y=e.target.height-175
e.target.x=e.target.width-120
Это как я понял бред, а как всетаки отцентровать кпримеру картинку закруженную в событии COMPLETE?


Последний раз редактировалось O.K.; 21.04.2010 в 00:07.
Старый 21.04.2010, 13:02
cauchy вне форума Посмотреть профиль Отправить личное сообщение для cauchy Найти все сообщения от cauchy
  № 6  
Ответить с цитированием
cauchy
 
Аватар для cauchy

Регистрация: Jan 2009
Адрес: Северный островок дефолт-сити
Сообщений: 144
Цитата:
Сообщение от O.K. Посмотреть сообщение
Кстати, а почему тихий ужас?
Ну что беглым взглядом увидел:
- само собой проблема с ТАБами;
- переменные странно называются, одни с подчёркивания, другие - нет. Обычно приватные с подчёркивания, а тут и те и те (и наоборот соответственно);
- желательно явно писать типа функции (ну то есть public);
- обработчики должны быть private функциями;
- надо явно объявлять тип возвращаемого значения, то бишь ":void";
- ну Адоби рекомендует ещё обработчики называть специальным образом, можно у них где то почитать про это;
- помоему что-то слышал про то, что оператор with не рекомендуют использовать, типа это остатки первого AS. Но в этом не уверен. Сам лично ни разу не использовал.

Вот как-то так я бы сказал.

Насчёт расстановки скобок спорный вопрос, я сам открывающую привык ставить на новой строке, но так и не понял как правильней считается (хотя какая разница на самом деле). Замечал что в основном открывающую ставят на той же строке что и определение функции, я же почему-то привык иначе.

Цитата:
Сообщение от O.K. Посмотреть сообщение
Если можно, еще вопрос:
Код AS3:
e.target.y=e.target.height-175
e.target.x=e.target.width-120
Это как я понял бред, а как всетаки отцентровать кпримеру картинку закруженную в событии COMPLETE?
Ну впринципе ничего особо страшного я считаю в этом нет. Лично я бы сделал переменную временную и работал с ней, что то типа:
Код AS3:
var bitmap:Bitmap = e.target;
bitmap.y = bitmap.height - 175
....
bitmap = null;
Наверное если больше одного действия будет выполняться с этой картинкой то такой способ даже быстрее будет работать. Ведь не придётся каждый раз лезть в геттер объекта "e". Но в таких тонкостях я не силён, это только предположение


Последний раз редактировалось cauchy; 21.04.2010 в 13:05.
Создать новую тему Ответ Часовой пояс GMT +4, время: 00:30.
Быстрый переход
  « Предыдущая тема | Следующая тема »  
Опции темы
Опции просмотра

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

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


 


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


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