BB10 Cascades触摸事件

时间:2013-03-19 21:28:32

标签: blackberry-10 blackberry-cascades

我正在开发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事件即使按下按钮而不是移动按钮也会被触发。我也想播放一个音调(代码未显示),但我需要先让颜色变化正常。

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

由于

1 个答案:

答案 0 :(得分: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");

    }

}