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ブロック内の「elseif」を変更して、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 に答える