2013-03-19 1 views
2

Je développe une application native BB10 Cascades. J'utilise des conteneurs en tant que boutons car j'ai besoin d'un look personnalisé. J'utilise donc l'événement onTouch pour gérer les 'presses'. Ce que je voudrais faire est de jouer une tonalité quand le 'bouton' est pressé et arrêter la tonalité quand le 'bouton' est relâché.Événements tactiles BB10 Cascades

Voici le code

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(); 
    } 
} 

Le problème que j'ai est quand le bouton est taraudée la couleur devrait changer BLUE et revenir ensuite en arrière lorsqu'il est relâché. Cependant, si je tape sur le bouton, puis maintenez-le enfoncé et quittez le bouton, il reste bleu. C'est ce que l'onTouchExit était supposé résoudre mais cela ne fonctionne pas vraiment de cette façon car les événements onTouchExit sont déclenchés même en appuyant sur le bouton et en ne quittant pas le bouton. Je voudrais aussi jouer un son (code non montré) mais je dois d'abord faire fonctionner le changement de couleur correctement.

Tout savoir ce que je dois changer pour obtenir ce travail correctement

Merci

Répondre

6

Changez votre « autre si » à l'intérieur du bloc OnTouch pour traiter également TouchType.Cancel. TouchType.Cancel est l'événement que votre bouton reçoit lorsque vous en retirez le doigt. Vous ne devriez pas avoir besoin du code onTouchExit après le changement.

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

    } 

} 
+0

Merci, cela fonctionne bien – tech74