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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему  
Старый 25.11.2017, 16:56
caseyryan вне форума Посмотреть профиль Отправить личное сообщение для caseyryan Найти все сообщения от caseyryan
  № 13  
Ответить с цитированием
caseyryan
 
Аватар для caseyryan

Регистрация: Jun 2012
Адрес: Новосибирск
Сообщений: 6,644
Записей в блоге: 4
Цитата:
Сообщение от undefined Посмотреть сообщение
Ничего плохого нет ровно до тех пор,пока stage один.
Кейс:флэшка грузится внутрь контейнера и владелец контейнера добавляет оверлей поверх флэшки и тут начинают выскакивать "выкидыши" поверх оверлея и вообще всего на свете.
stage всегда один. Хоть десять флешек загрузи)) Ничего поверх разных оверлеев выскакивать не будет, если все сделано правильно.
У меня вообще система работает так (тут немного урезанный вариант):
1) Все объекты, у которых может быть подсказка применяют интерфейс ITooltip, в котором есть геттер / сеттер для поля hintText и localToGlobal(point:Point):Point
вот так:
Код AS3:
public interface ITooltip {
   function set hintText(value:String):void;
   function get hintText():String;
   function localToGlobal(point:Point):Point;
}
2) Класс Tooltip инициализируется с передачей ему stage, на которую он сразу вешает два слушателя
ROLL_OVER, ROLL_OUT
3) Дальше в обработчике ROLL_OVER проверяет что это за объект
Код AS3:
private function onRollOver(e:MouseEvent):void {
     if (e.target is ITooltip) {
           showTooltip(e.target as ITooltip); // показываем подсказку
     }
}
private function showTooltip(tooltip:ITooltip):void {
      _currentHint = getHintFromPool(); // постоянно юзает один и тот же лейбл для подсказок. Больше не требуется
     _currentHint .setText(tooltip.hintText);
      var position:Point = tooltip.localToGlobal(new Point());
      _currentHint x = position.x;
      _currentHint .y = position.y; 
     // тут еще можно рассчитать положение со смещением, чтобы за границами экрана не вылезал, если близко к краю
      stage.addChild(_currentHint );
}
4) В обработчике rollOut убирает подсказку
Код AS3:
private function onRollOut(e:MouseEvent):void {
    if (_currentHint) {
       _currentHint.remove(); // там подсказка еще подписана на событие removedFromStage, чтобы возвращаться в пул
       _currentHint = null;
    }
}
5) Если rollOut не было в течение заданного времени, то она сама удалится
6) Профит

Не знаю как там у тебя что показывается поверх оверлеев. С этой системой такое в принципе невозможно.
Когда я ещё писал на флеше, эта либа у меня успешно кочевала из проекта в проект и никогда не глючила

п.с.
Цитата:
Разве статический класс не может реализовать дополнительную логику
В AS3 нет статических классов, есть только статические свойства и методы. Это так, к сведению
__________________
Ко мне можно и нужно обращаться на ты)

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

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

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


 


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


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