在AS3中限制显示对象的拖动坐标

时间:2010-04-07 15:35:35

标签: actionscript-3 coordinates hierarchy stage displayobject

如何根据创建对象的类中的父对象或阶段引用显示对象的坐标?

基本上当我从自定义类创建一个新的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();
        }
    }
}

1 个答案:

答案 0 :(得分:1)

您希望做的事情有一些原生支持。 startDrag()接受一个矩形作为参数,该参数限制可以进行拖动的区域。

function startDrag(lockCenter:Boolean  = false, bounds:Rectangle  = null):void

希望有所帮助,

泰勒。