Как проверять состояние/положение спрайта?

Пытаюсь разобраться со спрайтами и анимацией в qml в qt и не особо понимаю такую вещь, как мне динамически, тоесть постоянно делать проверку на что либо касательно спрайта? Например как постоянно проверять через if else его место нахождение? Вот мой код:

Window {
    visible: true
    width: 640
    height: 480
    title: qsTr("Hello World")

 
    SpriteSequence {
       
    id: image
    objectName: "sprSeq"
    width: 25
    height: 25
    y:150
    Sprite {
        name: "1"
        id: sprite
        objectName: "ssprite"
        source: "orangeGuy_animated.png"
        frameCount: 18
        frameWidth: 32
        frameHeight: 26
        frameSync: true


    }
    Sprite {
         name: "2"
        id: sprite2
        source: "orangeGuy_animated_back.png"
        frameCount: 18
        frameWidth: 32
        frameHeight: 26
        frameSync: true


    }

    Sprite {
         name: "3"
        id: sprite3
        source: "orangeGuy_animated.png"
        frameCount: 1
        frameWidth: 32
        frameHeight: 26
        frameSync: true


    }


    }
    PropertyAnimation {
        id: runningSprite
        objectName: "runningSprt"
        target: image
        property: "x"
        duration: 5000
        from: 0
        to: 500
        //alwaysRunToEnd: true
        onFinished: {
            if (runningSprite.property === "y") {
                image.jumpTo("3");
                runningSprite.running = false
                runningSprite.property = "y"
                runningSprite.from = image.y
                runningSprite.to = (image.y+60)
                runningSprite.duration = 250
                runningSprite.running = true




            }

        }

Тоесть мне нужна где то либо функция либо еще что то которая для примера делает следущее:

if (sprite.x > 100) {
    
    console.log("Вы за пределами карты!")
}

Тоесть как я понимаю для этого нужно что то что постоянно следит за моим спрайтом и постоянно будет проводить проверку. Помогите пожалуйста. Спасибо


Ответы (1 шт):

Автор решения: Nikxp

У свойств объектов qml есть сигнал Changed. У объекта Sprite нет свойства x. Соответственно вам нужно написать слот на изменение frameX или взять свойство х родительского объекта.

Sprite {
  ...
  onFrameXChanged: {
  if (frameX > 100) {
    console.log("Вы за пределами карты!")
}

Или можно создать отслеживающее свойство типа bool:

property var isStopped: (sprite.frameX > 100) ? printOutOfBounce() : true
function printOutOfBounce() {
    console.log("Вы за пределами карты!")
    return false
}

→ Ссылка