Предел сопротивления ActionScript, назад? - PullRequest
0 голосов
/ 13 сентября 2011

У меня есть приложение, в котором пользователь загружает изображение, а затем преобразует его, щелкая, перетаскивая и используя панель изменения размера. Но мой клиент попросил меня ограничить область, куда пользователь может перетащить, это не проблема, за исключением того, что мне нужны ограничения, противоположные тому, что считается нормальным.

Так что, где у меня есть startDrag (false, новый Rectangle ...), который работает просто отлично, но мне нужно, чтобы пользователь мог перетаскивать за пределы границ и не иметь пустого пространства внутри вспышки файл.

Я имею в виду, что у меня есть флэш-файл шириной 500px и изображение внутри, которое я небрежно тащу вокруг. Если правый край изображения (если я перетаскиваю влево) достигает 500 пикселей, он прекращает перетаскивание и не позволяет им тянуть его дальше влево.

Я искренне надеюсь, что объяснил это хорошо, любое руководство было бы потрясающим!

Ниже приведен код, который у меня есть для событий перетаскивания.

Любая помощь будет очень признательна.

public function startImageDrag (e:MouseEvent):void {
        mousePos['x'] = e.target.mouseX;
        mousePos['y'] = e.target.mouseY;
        imageDraggable.removeEventListener(MouseEvent.MOUSE_DOWN, function ():void {});
        photoapp.cStage.addEventListener(MouseEvent.MOUSE_MOVE, moveImage);
        photoapp.cStage.addEventListener(MouseEvent.MOUSE_UP, endImageDrag);
    }
    //The type is wildcarded because I have this hooked to MOUSE_LEAVE too
    public function endImageDrag (e:*):void {
        photoapp.cStage.removeEventListener(MouseEvent.MOUSE_MOVE, moveImage);
        photoapp.cStage.addEventListener(MouseEvent.MOUSE_DOWN, startImageDrag);
    }

    public function moveImage(event:MouseEvent):void {
        //Get the offset of the current mouse position over the image
        var
            //The mouse position on the stage
            sxOff:Number = photoapp.cStage.mouseX,
            syOff:Number = photoapp.cStage.mouseY,
            //The position on which the mouse down event was on the image
            reX:Number = sxOff - mousePos['x'],
            reY:Number = syOff - mousePos['y'],
            //The iamge object
            i:DisplayObject = imageDraggable;

        //Move the image
        if (/*I have no idea now...*/) {
            imageDraggable.x = reX;
        }
        if (iY) {
            imageDraggable.y = reY;
        }

        event.updateAfterEvent();
    }

1 Ответ

1 голос
/ 13 сентября 2011
// this code will limit the movement to 100 pixels to the right
var bounds:Rectangle = new Rectangle( 0,0,100,0)
imageDraggable.startDrag( false,bounds );

[EDIT]
Может быть, это поможет вам немного лучше понять

var boundsWidth:Number  = stage.stageWidth  - pictureHolderMC.width );
var boundsHeight:Number = stage.stageHeight - pictureHolderMC.height );
var bounds:Rectangle = new Rectangle(0, 0, boundsWidth, boundsHeight);
pictureHolderMC.startDrag(false, bounds); 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...