BB10 Cascades触摸事件

tec*_*h74 2 blackberry-10 blackberry-cascades

我正在开发一个BB10 Cascades原生应用程序.我使用一些容器作为按钮,因为我需要自定义外观.因此我使用onTouch事件来处理'press'.我想要做的是按下"按钮"时播放音调,并在释放"按钮"时停止音调.

这是代码

 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();
    }
}
Run Code Online (Sandbox Code Playgroud)

我遇到的问题是,当按下"按钮"时,颜色应变为蓝色,然后在释放时恢复.但是,如果我点击按钮然后按住按钮并从按钮上移开它会保持蓝色.这就是onTouchExit应该解决的问题,但它并没有真正起作用,因为即使按下按钮而不是移动按钮,onTouchExit事件也会被触发.我也想播放音调(代码未显示),但我需要先让颜色变化正常.

任何人都知道我需要改变以使其正常工作

谢谢

小智 6

更改onTouch块内的"else if"以处理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");

    }

}
Run Code Online (Sandbox Code Playgroud)