Показать сообщение отдельно
Старый 21.07.2021, 02:27
Appleman вне форума Посмотреть профиль Отправить личное сообщение для Appleman Найти все сообщения от Appleman
  № 1  
Ответить с цитированием
Appleman
 
Аватар для Appleman

Регистрация: Dec 2014
Адрес: Санкт-Петербург
Сообщений: 479
По умолчанию Повторный вызов addChild

Друзья, у меня опять затык со списком отображения, и опять далеко за пределами моего понимания.

Имею шкалу, на которую нанесены маркеры, помечающие некие важные уровни свойства, которое отображает шкала. Сам маркер - это оболочка для Bitmap-иконки, которая дополнительно хранит некоторую информацию для более комфортного управления. Помимо прочего, данный класс умеет показывать или скрывать иконку. Например, если уровень по каким-то причинам "уехал" за пределы шкалы, то маркер нужно убрать. И наоборот. За эти операции отвечают методы hideIcon() и showIcon(). Оба простые как грабли, ломаться там нечему в принципе. Вот код:

Код AS3:
		// ******* CONSTRUSTOR 
 
		public function BarMarker (icon: BitmapIcon) 
		{
			_icon = icon;
		}
 
 
		// ******* INTERNAL METHODS 
 
		internal function showIcon () : void
		{
			if (_icon.parent == this) return;
			this.addChild (_icon)
		}
 
		internal function hideIcon () : void
		{
			if (_icon.parent != this) return;
			this.removeChild (_icon);
		}
На практике происходит следующее. При первом выполнении метода showIcon() маркер корректно появляется на шкале. Но если из объекта-родителя вызвать метод hideIcon(), а затем повторно showIcon(), иконка не отображается. Но даже не это главное! При повторном вызове у меня вообще пропадает с экрана половина элементов. Причём последние - достаточно крупные объекты на несколько ступеней выше по иерархии. И никаким образом не связаны с классом BarMarker - некоторые даже ссылки на него не имеют!

Как такое в принципе возможно?! Я в тупике Даже не понимаю, куда копать. Буду признателен за любую помощь.
__________________
Не сломано - не чини!