Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   принцип работы startDrag bounds (http://www.flasher.ru/forum/showthread.php?t=190019)

Psijic 19.12.2012 15:12

принцип работы startDrag bounds
 
Здравствуйте, никто не может поделиться куском кода где описывается startDrag? Что-то я не нашел у себя во флеше. Либо интересует принцип работы bounds - как вычисляются границы за которые нельзя выходить?

Например, мой код получается несовсем рабочий, вот думаю, у них позаимствовать. Думаю, надо либо добавлять поиск по модулю, либо мин/макс значения (посмотрел в другом примере)

Код AS3:

var rect:Rectangle = getContentRegion();
 
var W:int = rect.bottomRight.x;
var H:int = rect.bottomRight.y;
 
var X:Number = (_content.x < rect.x) ? rect.x : (_content.x > W) ? W : _content.x;
var Y:Number = (_content.y < rect.y) ? rect.y : (_content.y > H) ? H : _content.y;
 
if (X != _content.x || Y != _content.y)
{
  _content.x = X;
  _content.y = Y;
}


ShockWave512 20.12.2012 01:21

границы вы вычисляете сами, в разных случая по разному
нужно представить в голове прямоугольник который лежит на родителе, за его пределы нельзя вытащить объект
вот к примеру мой текущий код:
не позволяет вытаскивать объект за пределы visibleRect
Код AS3:

protected function downHandler(event:MouseEvent):void
{
      // view.maxX / view.maxY - размер таскаемого объекта
      // visibleRect - видимая область экрана
      // Check sizes.
        if ( view.maxX > visibleRect.width )
        {
                view.dragRect.x = - (view.maxX - visibleRect.width);
                view.dragRect.width = view.maxX - visibleRect.width;
        }
        else
        {
                view.dragRect.x = (visibleRect.width-view.maxX)/2;
                view.dragRect.width = 0;
        }
        if ( view.maxY > visibleRect.height )
        {
                view.dragRect.y = - (view.maxY - visibleRect.height);
                view.dragRect.height = view.maxY-visibleRect.height;
        }
        else
        {
                view.dragRect.y = ( visibleRect.height - view.maxY ) / 2;
                view.dragRect.height = 0;
        }
        // Need to limit drag coords.
        view.startDrag( false, view.dragRect );
}



Часовой пояс GMT +4, время: 05:07.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.