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

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

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

Регистрация: Aug 2012
Сообщений: 77
Question TileList + обработка события ошибочной ссылки на изображение

Здравствуйте!

Сделал простую галерею с выводом изображений из xml-базы в TileList. Изображения находятся на локальном диске. Добавил в DataProvider свои ссылки на изображения. Проблема в том что я не знаю как проверить подлинность ссылки на изображение в следствии чего, если присутствует ошибка в ссылке, то флеш выдает соответствующую ошибку отсутствия изображения.

Есть ли в компоненте TileList'а, событие которое будет адекватно реагировать на ошибки орфографии ссылки и вместо ошибки будет добавлять какое-нибудь дежурное изображение в TileList?

Предчувствую, что у меня примитивный вопрос и ждет ответ типа: повесь слушатель на TileList, который отслеживает IOErrors или что-то подобное. Кое-что пробовал, пытался реализовать и в описании компонента смотрел справочного материала, да и на форумах, но нигде не упоминается об этой (моей) проблеме. Возможно я просто невнимательный. Прошу подсказать. Спасибо.
__________________
Набирать программы могут многие, программировать - единицы

Старый 10.01.2013, 05:38
dimarik вне форума Посмотреть профиль Отправить личное сообщение для dimarik Найти все сообщения от dimarik
  № 2  
Ответить с цитированием
dimarik
.
 
Аватар для dimarik

модератор форума
Регистрация: Sep 2003
Адрес: Москва
Сообщений: 4,630
Записей в блоге: 20
Привет! Повесь слушатель на рендерер TileList'а, который будет отслеживать IOErrors.
__________________
Воспитан в TimeZero. Работаю в Mail.ru.

Старый 10.01.2013, 23:33
SpetZ_Naz вне форума Посмотреть профиль Отправить личное сообщение для SpetZ_Naz Найти все сообщения от SpetZ_Naz
  № 3  
Ответить с цитированием
SpetZ_Naz

Регистрация: Aug 2012
Сообщений: 77
Нет, к сожалению не понял как повесить слушатель в рендерер TileList'а.

Я использую рендерер взятый от сторонних разработчиков на одном из зарубежных форумов. Кстати, для тех кто ищет решение как вручную придавать стиль ячейкам TileList'а, этот способ вам подойдет:

Код AS3:
myForm.TileL.setStyle("cellRenderer", UserListRenderer);//соответственно так я его использую в программе
Вот непосредственно код UserListRenderer.as:

Код AS3:
/****
* File: UserListRenderer.as
* Author: design1online.com, LLC
* Date: 9.4.2011
* Purpose: change the formatting for the user tile list
*	so images appear beside the user name
****/
package {
 
	import fl.controls.listClasses.ICellRenderer;
	import fl.controls.listClasses.ImageCell;
	import fl.controls.TileList;
	import flash.text.*;
 
	public class UserListRenderer extends ImageCell implements ICellRenderer {
 
		public var desc:TextField = new TextField();
		private var textStyle:TextFormat = new TextFormat();
 
		public function UserListRenderer() {
 
			//inherit the variables from the parent
			super();
 
			//we don't want to stretch our images to fit the size of the box
			loader.scaleContent = false;
 
			//change the cursor as if this was a button
			useHandCursor = true;
 
			//Create and format the text field
			//that will appear beside the image
			desc.autoSize = TextFieldAutoSize.CENTER;
			desc.x = 24;
			desc.y = 5;
			desc.width = 150;
			desc.height = 28;
			desc.multiline = false;
			desc.wordWrap = false;
			addChild(desc);
 
			//apply some styles to our text field
			setStyle("imagePadding", 2);
			textStyle.font = "Tahoma";
			textStyle.color = 0xCC3300;
			textStyle.size = 15;
		}
 
		/**
		* Now we override the function that draws the layout
		* so we can move the image beside the text
		**/
		override protected function drawLayout():void {
 
			//adjust the icon for any existing padding
			var imagePadding:Number = getStyleValue("imagePadding") as Number;
 
			//offset the image in the box so it's not touching the top of it
			loader.move(0, 4);
 
			var w:Number = width-(imagePadding*2);
			var h:Number = height-(imagePadding*2);
 
			if (loader.width != w && loader.height != h) {
				loader.setSize(w,h);
			}
 
			//re-draw the image
			loader.drawNow();
 
			//hide the original cellImage textField so we can display our new one later
			textField.visible = false;
 
			//display the new text box beside our image
			desc.text = data.label;
			desc.setTextFormat(textStyle);
 
			//adjust the background
			background.width = width;
			background.height = height;
 
		}
	}
}
Пытался вешать событие на loader, по-идее он перерисовывает, не получилось. Не получилось также словить ошибку инструкцией try/catch.

Подправьте меня пожалуйста. Спасибо.

Выкладываю UserListRenderer.as. Кому нужен, забирайте:
Вложения
Тип файла: rar UserListRenderer.rar (1.1 Кб, 16 просмотров)
__________________
Набирать программы могут многие, программировать - единицы

Старый 11.01.2013, 11:36
dimarik вне форума Посмотреть профиль Отправить личное сообщение для dimarik Найти все сообщения от dimarik
  № 4  
Ответить с цитированием
dimarik
.
 
Аватар для dimarik

модератор форума
Регистрация: Sep 2003
Адрес: Москва
Сообщений: 4,630
Записей в блоге: 20
добавьте

Код AS3:
/**
 * @private (protected)
 */
protected override function handleErrorEvent(event:IOErrorEvent):void {
    // загрузите здесь умолчальную картинку
    // super.loader.source = 'http://example.com/default.png';
}
__________________
Воспитан в TimeZero. Работаю в Mail.ru.

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

Регистрация: Aug 2012
Сообщений: 77
Да, спасибо, то что нужно) Я так понимаю, что если дежурного изображения не будет на месте, то возникнет ошибка загрузки, которую нужно словить через ЛоадИнфо Лоадера или не предусматривать дежурное изображение?

Может быть еще глупее вопрос: можно ли без отлова ошибок загрузки, проверить правильность ссылки на изображение, а не на пустоту из-за ошибки в ссылке?
__________________
Набирать программы могут многие, программировать - единицы

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

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

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


 


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


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