crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )


  Ответ в Flickable реализация функции centerOn(point)
Введите ваше имя
Подтвердите код

Введите в поле код из 6 символов, отображенных в виде изображения. Если вы не можете прочитать код с изображения, нажмите на изображение для генерации нового кода.
 

Опции сообщения
 Включить смайлы?
Иконки сообщения
(Опционально)
                                
                                
  [ Без иконки ]
 


Последние 10 сообщений [ в обратном порядке ]
Vilgeforc Дата 26.4.2017, 11:56
  Пока обошелся таким кодом.

        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 это сделать. Хотя и так уже вполне неплохо.
Vilgeforc Дата 26.4.2017, 4:12
  Добрый вечер!

Имеется 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;
        }


Но чтобы сфокусироваться правильно приходится несколько раз вызывать, что смотрится ужасно. Как сделать это правильнее?
Просмотр темы полностью (откроется в новом окне)
RSS Текстовая версия Сейчас: 27.4.2024, 16:16