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

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

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

блогер
Регистрация: Oct 2010
Адрес: Киев
Сообщений: 1,678
Записей в блоге: 12
Отправить сообщение для Dukobpa3 с помощью Skype™
По умолчанию Как лучше сделать Хинты с картинками

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

Есть список товаров, с картинками.

В списке есть иконка, при наведении на которую клиент хочеть видеть всплывающую подсказку с картинкой товара.

Я делаю следующим образом:

Код AS3:
/*
в цикле перебираются строки списка. Это двумерный вектор, первый индекс - номер строки, второй - номер элемента строки. Отображаются только элементы 0-2, под номером три собственно иконка по наведении на которую должен віскочить хинт.*/
//**************************
menuItems[r][3] = new dishphotoicon(); //собственно иконка
menuItems[r][3].stop();
menuItems[r][3].x = 350;
menuItems[r][3].y = 5;
menuItems[r][3].addEventListener(MouseEvent.MOUSE_OVER, showHint);
menuItems[r][3].addEventListener(MouseEvent.MOUSE_OUT, hideHint);
menuItems[r][3].name = String(SERVER + IMG_path + IMG_name)
//**************************
 
private function showHint(e:MouseEvent):void {
   var _request:URLRequest = new URLRequest(e.target.name);
   var loader:Loader = new Loader();
   loader.load(_request);
 
   loader.contentLoaderInfo.addEventListener(Event.COMPLETE, showHint1);
   e.target.gotoAndStop(2);
   //тут собственно создал загрузчик и слушатель завершения.
}
 
private function showHint1(e:Event): void {
   var loader:Loader = e.target.loader as Loader;
   loader.x = 10;
   loader.y = 10;
 
   hint = new Panel(loader.width + 20, loader.height + 20); /* hint - это глобальная переменная которая хранит текущий открытый хинт. А панель это мой класс, который просто делает подложку. Это расширенный мувиклип, в котором с указанными размерами рисуется roundrect*/
   hint.x = mouseX + 20;
   hint.y = mouseY;
 
   hint.addChild(loader);
 
   this.addChild(hint);
}
 
private function hideHint(e:MouseEvent):void { //ну тут всё прозрачно...
   e.target.gotoAndStop(1);
   if (hint) this.removeChild(hint); 
   hint = null;
}
Так вот суть в чем. Так как это картинки, то грузятся они порою некоторое время. А мышкой по екрану мы ялозим постоянно, и часто получается так, что между первой отправкой запроса и первым получением картинки мы успеваем еще в кучу всего мышу понаводить... и картинки потом приходят пачкой. И во-первых не все удаляются, а во-вторых часто картинка показывается не там где должна.

посоветуйте как это в порядок привести? В идеале надо чтоб отображались адекватно, там где надо, и удалялись вовремя.

есть вариант грузить сразу все картинки, а потом просто из памяти брать. Но тогда загрузка самого экрана будет долгой как мне кажется. Но в риалтайме адекватных решений не вижу.

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

Теги
hint , image , loader

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

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


 


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


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