Показать сообщение отдельно
Старый 12.03.2010, 01:06
KiL33 вне форума Посмотреть профиль Отправить личное сообщение для KiL33 Найти все сообщения от KiL33
  № 3  
Ответить с цитированием
KiL33
 
Аватар для KiL33

Регистрация: Jul 2007
Адрес: Гражданин Российской Федерации
Сообщений: 1,122
Отправить сообщение для KiL33 с помощью ICQ
Потратил два часа жизни, получился вот такой примерчик
main.rar

Класс Main

Код AS3:
package {
	import components.CreateWindow;
	import events.CommonEvent;
	import flash.display.Sprite;
	import flash.events.*
	import flash.text.*
 
	public class Main extends Sprite {
		public var createWindow:CreateWindow;
 
		public function Main(){
 
			init()
		}
 
		private function init():void {
 
			createWindow = new CreateWindow()
			addChild(createWindow)
			//получаем события из CreateWindow
			createWindow.addEventListener(CommonEvent.DRAG_WINDOW_DOWN, WinDragStart);
			createWindow.addEventListener(CommonEvent.DRAG_WINDOW_UP, WinDragStop);
			createWindow.addEventListener(CommonEvent.WINDOW_REMOVE, RemoveWindow);
 
		}
 
		private function WinDragStart(e:CommonEvent):void{
			trace("Drag_Start")
			var val:uint = e.t
			e.target.startDrag()
			e.target.alpha = Number("0."+val)
		}
 
		private function WinDragStop(e:CommonEvent):void{
			trace("Drag_Stop")
			var val:uint = e.t
			e.target.stopDrag()
			e.target.alpha = Number(val)
		}
		private function RemoveWindow(e:CommonEvent):void{
			trace("Remove")
			removeChild(createWindow);
		}
	}
}
Класс CreateWindow в пакете components

Код AS3:
package components {
 
	import events.CommonEvent;
	import flash.display.Sprite;
	import flash.display.Shape;
	import flash.events.*
 
	public class CreateWindow extends Sprite {
 
		private var container:Sprite;
		private var line:Shape;
		private var line2:Shape;
 
		private var closeWindow:CloseWindow;
 
		public function CreateWindow(){
		closeWindow = new CloseWindow()
			line = new Shape()
				line.graphics.lineStyle(2,0xFFFFFF)
			line.graphics.lineTo(10, 10);
			line.x = 85
			line.y = 5
 
////////////line2
 
			line2 = new Shape()
				line2.graphics.lineStyle(2,0xFFFFFF)
			line2.graphics.lineTo(10, 10);
			line2.rotation = 90
			line2.x = 95
			line2.y = 5
 
			container = new Sprite()
			container.graphics.beginFill(0xCCFF00);
				container.graphics.drawRect(0, 0, 100, 100);
			container.graphics.endFill()
 
			container.addEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandler);
			container.addEventListener(MouseEvent.MOUSE_UP, mouseUpHandler);
			closeWindow.addEventListener(MouseEvent.MOUSE_DOWN, mouseDownRemove);
 
			addChild(container)
			addChild(closeWindow)
			addChild(line)
			addChild(line2)
 
		}
		private function mouseDownHandler(e:MouseEvent):void{
			//диспатчим в main
			dispatchEvent(new CommonEvent(CommonEvent.DRAG_WINDOW_DOWN, /*параметр прозрачности окна*/5));
		}
		private function mouseUpHandler(e:MouseEvent):void{
			//диспатчим в main
			dispatchEvent(new CommonEvent(CommonEvent.DRAG_WINDOW_UP, /*параметр прозрачности окна*/1));
		}
		private function mouseDownRemove(e:MouseEvent):void{
			//диспатчим в main
			dispatchEvent(new CommonEvent(CommonEvent.WINDOW_REMOVE, 0));
		}
	}
}

Класс CloseWindow в пакете components

Код AS3:
package components {
 
	import flash.display.Sprite;
	import flash.display.Shape;
 
	public class CloseWindow extends Sprite {
		private var container:Shape;
 
		public function CloseWindow(){
 
			container = new Shape()
			container.graphics.beginFill(0x000000);
				container.graphics.drawRect(80, 0, 20, 20);
			container.graphics.endFill()
			addChild(container)
		}
	}
}
Класс CommonEvent в пакете events

Код AS3:
package events{
 
	import flash.events.Event;
 
	public class CommonEvent extends Event{
 
		private var _t:uint;
 
		//храним имена всех событий
		public static const DRAG_WINDOW_DOWN:String = "drag_window_down";
		public static const DRAG_WINDOW_UP:String = "drag_window_up";
		public static const WINDOW_REMOVE:String = "window_remove";
 
		public function CommonEvent(type:String, /*bubbles:Boolean = false, cancelable:Boolean = false,*/ val:uint) { 
			super(type, /*bubbles, cancelable,*/ true, false);
 
			//параметр прозрачности окна
			_t = val;
		}
 
		public function get t():uint {
			return _t;
		}
	}
}

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