Показать сообщение отдельно
Старый 15.11.2010, 13:02
ShockWave512 вне форума Посмотреть профиль Отправить личное сообщение для ShockWave512 Посетить домашнюю страницу ShockWave512 Найти все сообщения от ShockWave512
  № 3  
Ответить с цитированием
ShockWave512

Регистрация: Dec 2007
Адрес: NA
Сообщений: 741
Отправить сообщение для ShockWave512 с помощью Skype™
толком не вник почему не работает с Canvas прозрачность в окнах
возможно из-за обработки скрытой заливки

Код AS3:
<mx:UIComponent xmlns:mx="http://www.adobe.com/2006/mxml"
				creationComplete="creationCompleteHandler(event)">
	<mx:filters>
		<mx:BlurFilter id="blurFilter" blurX="16" blurY="16"/>
	</mx:filters>
 
	<mx:Script>
		<![CDATA[
			import mx.controls.Alert;
			import mx.events.FlexEvent;
 
			private var shape:Shape;
 
			private const DARK_COLOR:uint = 0x000000;
			private const DARK_ALPHA:Number = 0.7;
			private const DARK_BLUR:uint = 16;
			// Параметром передается ХМЛ список окон
                        // координаты и размер
			public function setNewRects(rects:XMLList):void
			{
				shape.graphics.clear();
				shape.graphics.lineStyle( 0, DARK_COLOR, 0 );
				shape.graphics.beginFill( DARK_COLOR, DARK_ALPHA );
 
				var squareCommands:Vector.<int> = new Vector.<int>();
				var squareCoord:Vector.<Number> = new Vector.<Number>();
				// 1 - MoveTo, 2 - LineTo
				squareCommands.push( 1, 2, 2 ,2, 2)
				// Рисуем Большой квадрат, основное затемнение на всё окно, в котором будут резаться окна поменьше
				squareCoord.push( 0,0, 750,0, 750,600, 0,600, 0,0);
				// Пробегаемся по списку мелких окон
				// важно чтоб они были в одном массиве данных с большим квадратом, иначе не будет "вырезки"
				for each ( var rect:XML in rects )
				{
					var _x:int = rect.@x;
					var _y:int = rect.@y;
					var _width:int = rect.@width;
					var _height:int = rect.@height;
 
					squareCommands.push( 1, 2, 2 ,2, 2 );
					squareCoord.push(   _x, _y,  
							_x + _width, _y,
							_x + _width, _y + _height,
							_x, _y + _height,
							_x, _y                        );
				}
 
				shape.graphics.drawPath(squareCommands, squareCoord);
				shape.graphics.endFill();
			}
 
			protected function creationCompleteHandler(event:FlexEvent):void
			{
				shape = new Shape();
				this.addChild(shape);
			}
		]]>
	</mx:Script>
</mx:UIComponent>


Последний раз редактировалось ShockWave512; 16.11.2010 в 01:27.