Цитата:
|
Геометрия от этого не меняется, поэтому я создал тему в более популярном разделе 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);
}
}
}