Forums Développement Multimédia

Aller au contenu

Différencier drag et action bouton

Drag bouton ineraction

5 réponses à ce sujet

#1 cortoh

    Ceinture Noire

  • Members
  • PipPipPipPipPipPipPip
  • 341 messages

Posté 11 October 2017 - 20:59 PM

Bonsoir,

Je tente de réaliser la mème intéraction qui est présente dans mon portable android situé dans paramètre, il s'agit d'une liste déroulante avec plusieurs boutons.
J'ai fait une liste de boutons dans un clip qui est draguable de haut en bas, mais je ne sais pas comment séparer le Drag des actions boutons car mon doigt sera obligatoirement sur la surface d'un bouton pour le drag.
Merci pour votre aide.

Mon code as3:


// Drags ////////////////////////////////////////////

var my_x:int=stage.stageWidth-my_window.width;
var my_y:int=stage.stageHeight-my_window.height;

var myWidth:int=0-my_x;
var myHeight:int=0-my_y;

var oblong:Rectangle=new Rectangle(my_x, my_y, myWidth ,myHeight);
my_window.addEventListener(MouseEvent.MOUSE_DOWN, drag);
my_window.addEventListener(MouseEvent.MOUSE_UP, drop);

function drag(event:MouseEvent):void {
  my_window.startDrag(false,oblong);
}

function drop(event:MouseEvent):void {
  my_window.stopDrag();
}

// BTNS ////////////////////////////////////////////

my_window.mybtn_1.addEventListener(MouseEvent.MOUSE_DOWN, tch_btn_1);
   function tch_btn_1(me:MouseEvent):void {
   trace("action_1");
  }
my_window.mybtn_2.addEventListener(MouseEvent.MOUSE_DOWN, tch_btn_2);
   function tch_btn_2(me:MouseEvent):void {
   trace("action_2");
  }
my_window.mybtn_3.addEventListener(MouseEvent.MOUSE_DOWN, tch_btn_3);
   function tch_btn_3(me:MouseEvent):void {
   trace("action_3");
  }
/// etc ...
 


#2 pol2095

  • Members
  • PipPipPipPipPipPipPipPip
  • 1677 messages

Posté 12 October 2017 - 09:52 AM

essaie avec un Timer


var myTimer:Timer = new Timer(1000, 1);
myTimer.addEventListener(TimerEvent.TIMER_COMPLETE, timerCompleteHandler);

my_window.addEventListener(MouseEvent.MOUSE_DOWN, drag);

function drag(event:MouseEvent):void {
  myTimer.reset();
  myTimer.start();
}

function drop(event:MouseEvent):void {
  stage.removeEventListener(MouseEvent.MOUSE_UP, drop);
  my_window.stopDrag();
}

// BTNS ////////////////////////////////////////////
my_window.mybtn_1.addEventListener(MouseEvent.MOUSE_UP, tch_btn_1);
   function tch_btn_1(me:MouseEvent):void {
   if(!myTimer.running) return;
   myTimer.reset();
   trace("action_1");
  }
my_window.mybtn_2.addEventListener(MouseEvent.MOUSE_UP, tch_btn_2);
   function tch_btn_2(me:MouseEvent):void {
   if(!myTimer.running) return;
   myTimer.reset();
   trace("action_2");
  }
my_window.mybtn_3.addEventListener(MouseEvent.MOUSE_UP, tch_btn_3);
   function tch_btn_3(me:MouseEvent):void {
   if(!myTimer.running) return;
   myTimer.reset();
   trace("action_3");
  }

function timerCompleteHandler(e:TimerEvent):void {
   stage.addEventListener(MouseEvent.MOUSE_UP, drop);
   my_window.startDrag(false,oblong);
  }
 


#3 cortoh

    Ceinture Noire

  • Members
  • PipPipPipPipPipPipPip
  • 341 messages

Posté 12 October 2017 - 17:51 PM

Salut,
C'est une bonne idée le Timer mais ça ne fonctionne pas correctement ça bug complet !?

#4 pol2095

  • Members
  • PipPipPipPipPipPipPipPip
  • 1677 messages

Posté 13 October 2017 - 13:15 PM

J'ai fait un petit test à l'adresse http://pol2095.free...._action_bouton/, ça a l'air de fonctionner

#5 cortoh

    Ceinture Noire

  • Members
  • PipPipPipPipPipPipPip
  • 341 messages

Posté 13 October 2017 - 20:09 PM

Bonjour pol2095,
Merci de t'intéresser à mon problème, voici mon fla terminé qui correspond à l'intéraction que je souhaite avoir, reste le problème de différencier le drag des actions boutons.

Fichier(s) joint(s)



#6 cortoh

    Ceinture Noire

  • Members
  • PipPipPipPipPipPipPip
  • 341 messages

Posté 14 October 2017 - 08:48 AM

Bonjour,
Alors après un bon moment de cogitation j'ai trouvé la parade et ceci en comparent la position de départ et d'arrivée de ma fenêtre en utilisant 2 variables qui seront alors comparées par le "MouseEvent" Down et Up des boutons et ça fonctionne nickel.


// MOUSE DOWN //////////

my_window.mybtn_3.addEventListener(MouseEvent.MOUSE_DOWN, tchDo_btn_3);

   function tchDo_btn_3(me:MouseEvent):void {

   posi_Down = my_window.y;

  }

// MOUSE UP //////////

my_window.mybtn_3.addEventListener(MouseEvent.MOUSE_UP, tchUp_btn_3);

   function tchUp_btn_3(me:MouseEvent):void {

   posi_Up = my_window.y;

  if(posi_Up == posi_Down) {

  trace("action_3");

  }
  }
 

Merci pour votre aide.



1 utilisateur(s) li(sen)t ce sujet

0 membre(s), 1 invité(s), 0 utilisateur(s) anonyme(s)

authorised training centre

Centre de Formation Mediabox - Adobe et Apple Authorised Training Center.

Déclaré auprès de la Direction du Travail et de la Formation Professionnelle

Mediabox : SARL au capital de 62.000€ - Numéro d'activité : 11 75 44555 75 - SIRET : 49371646800035

MEDIABOX, 23, rue de Bruxelles, 75009 PARIS

FFP