Предельные координаты перетаскивания объекта отображения в AS3
-
25-09-2019 - |
Вопрос
Как я могу ссылаться на координаты объекта отображения в соответствии со своим родительским объектом или этапом из класса, который создает объект?
По сути, когда я создаю новый объект SPRITE из пользовательского класса и добавить его в список отображения, я хотел бы включить код в пользовательском классе, который ограничивает координаты перетаскивания на сцену или раздел сцены.
//Frame Script
import Swatch;
var test:Sprite = new Swatch();
addChild(test);
___________________
//Custom Class
package
{
import flash.display.Sprite;
import flash.events.MouseEvent;
public class Swatch extends Sprite
{
public function Swatch()
{
init();
}
private function init():void
{
var swatchObject:Sprite = new Sprite();
swatchObject.graphics.beginFill(0x0000FF, 1);
swatchObject.graphics.drawRect(100, 100, 150, 150);
swatchObject.graphics.endFill();
swatchObject.addEventListener(MouseEvent.MOUSE_DOWN, onDrag, false, 0, true);
swatchObject.addEventListener(MouseEvent.MOUSE_UP, onDrop, false, 0, true);
this.addChild(swatchObject);
}
private function onDrag(evt:MouseEvent):void
{
evt.target.startDrag();
//how to limit it's dragability to the Stage?
}
private function onDrop(evt:MouseEvent):void
{
evt.target.stopDrag();
}
}
}
Решение
Есть какая-то нативная поддержка для того, что вы хотите сделать. startDrag()
Принимает прямоугольник в качестве параметра, который ограничивает регион, в котором может иметь место.
function startDrag(lockCenter:Boolean = false, bounds:Rectangle = null):void
Надеюсь, это поможет,
Тайлер.
Не связан с StackOverflow