2

我正在开发一个 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 事件。我也想播放一个音调(代码未显示),但我需要先让颜色变化正常工作。

任何人都知道我需要改变什么才能使其正常工作

谢谢

4

1 回答 1

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");

    }

}
于 2013-03-20T04:07:31.363 回答