Skip to content

Instantly share code, notes, and snippets.

@profelis
Created August 2, 2012 15:45
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save profelis/3238047 to your computer and use it in GitHub Desktop.
Save profelis/3238047 to your computer and use it in GitHub Desktop.
Starling scrollrect
private var controlPoint:Point = new Point(); // положение относительно стейдж
private var controlRect:Rectangle = new Rectangle(); // размер контрола, положение в нуле
private var globalControlRect:Rectangle = new Rectangle(); // тоже, но положение как у первой точки
private function update():void
{
controlPoint.x = 0;
controlPoint.y = 0;
controlPoint = localToGlobal(controlPoint);
globalControlRect.x = controlPoint.x;
globalControlRect.y = controlPoint.y;
controlRect.width = globalControlRect.width = control.width;
controlRect.height = globalControlRect.height = control.height;
}
override public function render(support:RenderSupport, parentAlpha:Number):void
{
support.finishQuadBatch();
Starling.context.setScissorRectangle(globalControlRect);
super.render(support,alpha);
support.finishQuadBatch();
Starling.context.setScissorRectangle(null);
}
override public function getBounds(targetSpace:DisplayObject, resultRect:Rectangle = null):Rectangle
{
var res:Rectangle = super.getBounds(targetSpace, resultRect);
if (res.width > controlRect.width) res.width = controlRect.width;
if (res.height > controlRect.height) res.height = controlRect.height;
return res;
}
override public function hitTest(localPoint:Point, forTouch:Boolean = false):DisplayObject
{
if (controlRect.containsPoint(localPoint))
return super.hitTest(localPoint, forTouch);
return null;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment