Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Flickable реализация функции centerOn(point)
Форум на CrossPlatform.RU > Библиотеки > Qt > Qt Quick
Vilgeforc
Добрый вечер!

Имеется Flickable в котором содержится довольно большая картинка, и появилась необходимость программно центровать это изображение в точке.
Пытался сделать так:
        function centerOn(x, y)
        {
                var dx = contentX + width/2 - x;
                var dy = contentY + height/2 - y;
                var des = flickDeceleration;

                flickDeceleration = Math.sqrt(dx*dx + dy*dy);
                var mult = 1.7
                flick(dx * mult, dy * mult);
                flickDeceleration = des;
        }


Но чтобы сфокусироваться правильно приходится несколько раз вызывать, что смотрится ужасно. Как сделать это правильнее?
Vilgeforc
Пока обошелся таким кодом.

        function centerOn(x, y)
        {
            moveAnimation.targetX = Math.max(0, Math.min(x, contentWidth - width));
            moveAnimation.targetY = Math.max(0, Math.min(y, contentHeight - height));

            if (contentX != moveAnimation.targetX ||
                contentY != moveAnimation.targetY)
                moveAnimation.start();
        }

        ParallelAnimation {
            id: moveAnimation
            property int targetX: 0
            property int targetY: 0

            running: false
            NumberAnimation {
                target: mapArea
                property: "contentY"
                duration: 400;
                //from: mapArea.contentY;
                to: moveAnimation.targetY
            }
            NumberAnimation {
                target: mapArea
                property: "contentX"
                duration: 400;
                //from: mapArea.contentY;
                to: moveAnimation.targetX
            }
        }


но хотелось бы конечно более нативными методами Flickable это сделать. Хотя и так уже вполне неплохо.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2024 IPS, Inc.