Показать сообщение отдельно
Старый 14.01.2014, 23:26
Akopalipsis вне форума Посмотреть профиль Найти все сообщения от Akopalipsis
  № 14  
Ответить с цитированием
Akopalipsis
Banned

Регистрация: Mar 2013
Сообщений: 1,864
Цитата:
Геометрия от этого не меняется, поэтому я создал тему в более популярном разделе AS 3.0.
Тут я тоже согласен, так как ветку flex я вообще не посещаю.
Цитата:
где есть изображение 200*200 внутри контейнера 100*100 с clipAndEnableScrolling = true.
Что это такое я не знаю, но сделал аналог в as3 -( покликайте по сцене )
Код AS3:
package 
{
	import flash.display.Bitmap;
	import flash.display.DisplayObject;
	import flash.display.Shape;
	import flash.display.Sprite;
	import flash.events.Event;
	import flash.events.MouseEvent;
	import flash.geom.Matrix;
	import flash.geom.Point;
	import flash.geom.Rectangle;
 
	public class RotationTest extends Sprite 
	{
		[Embed(source = "../../../bin/14-01-2014 21-30-06.jpg")]
		private var Picture:Class;
		private var _viewPort:Sprite;
 
		private var _isScrollRectVisible:Boolean;
		private var _transformContainer:Sprite;
		private var _rect:Rectangle;
		private var _centerTransformConteiner:Point;
 
		public function RotationTest() 
		{
			stage.addEventListener(MouseEvent.MOUSE_DOWN, stage_mouseDownHandler);
 
			_viewPort = new Sprite();
			_viewPort.graphics.beginFill(0x2E2E2E);
			_viewPort.graphics.drawRect(0, 0, 500, 300);
			_viewPort.x = 50;
			_viewPort.y = 50;
			super.addChild(_viewPort);
			var img:Bitmap = new Picture();
 
			_rect = new Rectangle(0, 0, 100, 100);
 
			_transformContainer = new Sprite();
			_transformContainer.scrollRect = _rect;
			_transformContainer.x = 100;
			_transformContainer.y = 100;
			img.x -= 40;
			img.y -= 30;
			_transformContainer.addChild(img);
			_viewPort.addChild(_transformContainer);
 
			_isScrollRectVisible = true;
 
			_centerTransformConteiner = new Point(_transformContainer.x + _rect.width * 0.5, _transformContainer.y + _rect.height * 0.5);
			this.drawPoint(_centerTransformConteiner);
 
			var frame:Shape = new Shape();
			frame.graphics.lineStyle(1, 0xFFFFFF);
			frame.graphics.drawRect(0, 0, _rect.width, _rect.height);
			frame.graphics.endFill();
			frame.x = _transformContainer.x;
			frame.y = _transformContainer.y;
			_viewPort.addChild(frame);
 
			stage.addEventListener(Event.ENTER_FRAME, stage_enterFrameHandler);
		}
		private var _angle:Number = 0;
		private function stage_enterFrameHandler(event:Event):void 
		{
			this.rotationPointMatrix(_transformContainer, (_angle++), _centerTransformConteiner);
		}
		private var DEG_TO_RAD:Number = 3.1415926535897932 / 180;
		public function rotationPointMatrix(target:DisplayObject, angle:Number, point:Point = null):void
		{
			var matrix:Matrix = target.transform.matrix;
			matrix.translate( -point.x, -point.y);
			matrix.rotate( -target.rotation * DEG_TO_RAD);
			matrix.rotate(angle * DEG_TO_RAD);
			matrix.translate(point.x, point.y);
			target.transform.matrix = matrix;
		}
		private function stage_mouseDownHandler(event:MouseEvent):void 
		{
			if (_isScrollRectVisible)
			{
				_transformContainer.scrollRect = null; 
				_isScrollRectVisible = false;
			}else
			{
				_transformContainer.scrollRect = _rect;
				_isScrollRectVisible = true;
			}
		}
		private function drawPoint(point:Point):void
		{
			var circle:Shape = new Shape();
			circle.graphics.beginFill(0xFF0006);
			circle.graphics.drawCircle(0, 0, 2);
			circle.graphics.endFill();
			circle.x = point.x;
			circle.y = point.y;
			_viewPort.addChild(circle);
		}
 
	}
 
}
scrollRect.swf   (38.8 Кб)
Вложения
Тип файла: swf scrollRect.swf (38.8 Кб, 69 просмотров)