Показать сообщение отдельно
Старый 18.02.2013, 13:26
caseyryan вне форума Посмотреть профиль Отправить личное сообщение для caseyryan Найти все сообщения от caseyryan
  № 7  
Ответить с цитированием
caseyryan
 
Аватар для caseyryan

Регистрация: Jun 2012
Адрес: Новосибирск
Сообщений: 6,644
Записей в блоге: 4
Цитата:
caseyryan, нет разницы чисто технически как реализовывать.
Разница огромна. У меня все всплывающие окна реализуются через статические менеджеры, и все равботает.

Вот упрощенный пример:

Код AS3:
package  {
	import flash.display.Sprite;
	import flash.display.Stage;
	import flash.events.MouseEvent;
 
	public class PopupWindow extends Sprite {
 
		private static var _stage:	Stage;
		private static var _window:	PopupWindow	= null;
 
 
		public function PopupWindow() {
			graphics.beginFill(0xFFFF00);
			graphics.drawRect(0, 0, 250, 100);
			graphics.endFill();
		}
		public function dispose():void {
			graphics.clear();
			if (parent) parent.removeChild(this);
		}
 
		public static function show():void {
			if (!_stage) throw "сначала нужно инициализировать";
			if (_window) return;
 
			_window = new PopupWindow();
 
			_window.x = (_stage.stageWidth - _window.width) / 2;
			_window.y = (_stage.stageHeight - _window.height) / 2;
			_stage.addChild(_window);
		}
 
		public static function initizlize(stage:Stage):void {
			if (_stage) return;
			_stage = stage;
			_stage.addEventListener(MouseEvent.CLICK, onClick);
		}
 
		static private function onClick(e:MouseEvent):void {
			if (_window) {
				if (e.target != _window) {
					_window.dispose();
					_window 	= null;
				}
			}
		}
	}
 
}
Сначала где-то в документ классе инициализируем, а потом просто в любом месте программы вызываем методо PopupWindow.show()