J'ajoute juste un Flex HSlider à ma boîte de dialogue. Il permet de définir une durée en jours, et je pensais que ce serait génial si l'utilisateur pouvait s'accrocher à des semaines en appuyant sur la touche SHIFT tout en faisant glisser le curseur.MouseEvent shiftKey ou ctrlKey est toujours faux
Malheureusement l'événement passé au gestionnaire d'événements ne contient pas d'informations de modification clé ..
Voici mon code:
protected function onDurationSliderChange (event:SliderEvent) : void
{
var durationInDays : int = this.sld_durationInDays.value;
// modifiers
if (event.triggerEvent is MouseEvent) {
var mouseEvt : MouseEvent = event.triggerEvent as MouseEvent;
trace (mouseEvt.ctrlKey + " " + mouseEvt.ctrlKey + " " + event.keyCode);
trace (mouseEvt);
// when using SHIFT, snap to week
if (mouseEvt.shiftKey && !mouseEvt.ctrlKey)
durationInDays = int(durationInDays/7) * 7;
}
this.durationInDays = durationInDays;
}
qui produit la sortie suivante:
false false -1
[MouseEvent type="click" bubbles=true cancelable=false eventPhase=2 localX=NaN localY=NaN stageX=NaN stageY=NaN relatedObject=null ctrlKey=false altKey=false shiftKey=false buttonDown=false delta=0]
Tout le monde eu une idée comment savoir si SHIFT (ou CTRL) a été pressé en faisant glisser? Merci!
Oui, merci, ça marche ! Deux choses: 1) Je ne pouvais pas ajouter les écouteurs d'événement à 'this.stage' car il est nul, mais l'ajout de 'this' fonctionne 2) Juste après le démarrage de l'application, je devais cliquer sur un composant pour donner le focus au Flex App, sinon je n'aurais aucun événement clavier. Le simple fait de cliquer n'importe où dans l'application Flex n'a pas fait l'affaire. – Tom
J'ai eu un problème similaire avec une liste et le itemClickEvent, qui ne contient pas non plus d'informations de modificateur de clé. La solution d'Arkadiusz Kondas a aidé. –