我正在开发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事件即使按下按钮而不是移动按钮也会被触发。我也想播放一个音调(代码未显示),但我需要先让颜色变化正常。
任何人都知道我需要改变以使其正常工作
由于
答案 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");
}
}