BB10 каскадирует сенсорные события

Я разрабатываю собственное приложение BB10 Cascades. Я использую некоторые контейнеры в качестве кнопок, так как мне нужен индивидуальный вид. Поэтому я использую событие onTouch для обработки «нажатий». То, что я хотел бы сделать, это воспроизвести тон при нажатии «кнопки» и остановить тон, когда «кнопка» отпущена.

Вот код

 Container {

property alias image: imagev.imageSource
id: dialbutton
signal onTouch()
signal onTouchExit()
background: Color.create("#ff0000FF")

ImageView {
    id: imagev
    scalingMethod: ScalingMethod.AspectFit
    horizontalAlignment: HorizontalAlignment.Center
    verticalAlignment: VerticalAlignment.Center
}

onTouch: {


    if (event.touchType == TouchType.Down) {

        dialbutton.background = Color.Blue;
        dialbutton.onTouch(event);
    }
    else if (event.touchType == TouchType.Up)
    {
        dialbutton.background = Color.create("#ff00FF00");

    }

}

onTouchExit:
    {
    dialbutton.background = Color.create("#ff00FF00");
    dialbutton.onTouchExit();
    }
}

Проблема, с которой я сталкиваюсь, заключается в том, что при нажатии кнопки цвет должен измениться на СИНИЙ, а затем вернуться обратно при отпускании. Однако, если я нажимаю кнопку, а затем удерживаю ее нажатой и убираю кнопку, она остается синей. Это то, что должен был решить onTouchExit, но на самом деле это не работает, поскольку события onTouchExit запускаются даже при нажатии на кнопку и не отходят от кнопки. Я также хотел бы воспроизвести тон (код не показан), но сначала мне нужно, чтобы изменение цвета работало правильно.

Кто-нибудь знает, что мне нужно изменить, чтобы это работало правильно

Спасибо


person tech74    schedule 19.03.2013    source источник


Ответы (1)


Измените «else if» внутри блока onTouch, чтобы он также обрабатывал TouchType.Cancel. TouchType.Cancel — это событие, которое получает ваша кнопка, когда вы убираете с нее палец. Вам не нужен код onTouchExit после изменения.

onTouch: {

    if (event.touchType == TouchType.Down) {

        dialbutton.background = Color.Blue;
        dialbutton.onTouch(event);
    }
    else if (event.touchType == TouchType.Up || event.touchType == TouchType.Cancel)
    {
        dialbutton.background = Color.create("#ff00FF00");

    }

}
person Ergin Babani    schedule 20.03.2013