Forums Développement Multimédia

Aller au contenu

- - - - -

drag and drop multiples

CODE as3 draganddrop

6 réponses à ce sujet

#1 archiroc

    Ceinture Noire

  • Members
  • PipPipPipPipPipPipPip
  • 255 messages

Posté 22 January 2015 - 12:11 PM

Bonjour les amis.

Je sèche.

Je cherche à déplacer dynamiquement des traverses de placard.
Le déplacement de celles-ci dépendent bien évidement des traverses déjà en place.
Il s'agit que lorsque je glisse verticalement une traverse celle-ci puisse se déplacer verticalement entre les 2 traverses inférieur et supérieur.

la on voit mieux :
Image attachée: screenshoot.jpg

Pour l'instant ce que je fais :

Des écouteurs sont placés sur les traverses.
En cliquant je créé les valeurs de mouvement puis appelle la fonction de mouvement.
Je clique donc une fois pour obtenir les valeurs, une seconde fois pour déplacer.
Ce serait mieux si je pouvais déplacer d'un clic même si aujourd'hui ça marche.
Et comme dirait drad, l'important c'est que ça marche. Mais... Si ça peut MIEUX marcher....

Je mets mon code par respect mais c'est du charabia.... hi hi hi...


function BougeTraverse(event: TouchEvent): void {
var ybase: int;
var ybasemin: int;
var ybasemax: int;
var CurentTrav: String = event.currentTarget.parent.name;
var CurenttravNum: int = int(CurentTrav.charAt(2))
var CurentSect: String = event.currentTarget.parent.parent.name;
var CurentSectNum: int = int(CurentSect.charAt(5))
VantailChoisiP = CurentSectNum;
NumVantail.text = "Vantail " + String(VantailChoisiP);
affichedim();

if (Nombresection[CurentSectNum] > 1 && (Htraverse[CurentSectNum][CurenttravNum - 1] > 100 || Htraverse[CurentSectNum][CurenttravNum] > 100)) {
  addEventListener(Event.ENTER_FRAME, tacketessai);
  DoigtSection.y = (PlaCoul["Vbase" + [CurentSectNum]]["VA" + CurenttravNum].TTRA.y) * PlaCoul.scaleY + PlaCoul.y;
  PlaCoul["Vbase" + [CurentSectNum]]["VA" + CurenttravNum].TTRA.TraverseVue.visible = true;
  DoigtSection.visible = true;

  DoigtSection.addEventListener(TouchEvent.TOUCH_BEGIN, Bouge5deb);
  DoigtSection.addEventListener(TouchEvent.TOUCH_END, Bouge5fin);
  var valmaxS: int = Htraverse[CurentSectNum][CurenttravNum - 1] + Htraverse[CurentSectNum][CurenttravNum] - 100;
  var malminS: int = 100 - valmaxS;
  var valtotS: int = Htraverse[CurentSectNum][CurenttravNum - 1] + Htraverse[CurentSectNum][CurenttravNum];
  ybase = (PlaCoul["Vbase" + [CurentSectNum]]["VA" + CurenttravNum].TTRA.y) * PlaCoul.scaleY + PlaCoul.y;
  ybasemin = ((Htraverse[CurentSectNum][CurenttravNum - 1] - 100) / 2 * PlaCoul.scaleY);
  ybasemax = ((Htraverse[CurentSectNum][CurenttravNum] - 100) / 2 * PlaCoul.scaleY);
  var RectancleTack5: Rectangle = new Rectangle(405, ybase - ybasemin, 0, ybasemin + ybasemax);
  function Bouge5deb(event: TouchEvent): void {
   event.target.startTouchDrag(event.touchPointID, false, RectancleTack5);
  }
  function Bouge5fin(event: TouchEvent): void {
   DoigtSection.visible = false;
   PlaCoul["Vbase" + [CurentSectNum]]["VA" + CurenttravNum].TTRA.TraverseVue.visible = false;
   event.target.stopTouchDrag(event.touchPointID);
   removeEventListener(Event.ENTER_FRAME, tacketessai);
  }
  function tacketessai(e: Event): void {
   var i5: int = ((valmaxS) + (malminS) * (DoigtSection.y - (ybase - ybasemin)) / (ybasemin + ybasemax));
   Htraverse[CurentSectNum][CurenttravNum] = i5;
   Htraverse[CurentSectNum][CurenttravNum - 1] = valtotS - Htraverse[CurentSectNum][CurenttravNum];
   if (Vanteauxidentiques == 1) {
        collerVV();
   }
   poseSection();
  }
}
}
//val min Y + ( Val max Y- Val min Y ) * ( .X - Xminrect ) / Xmaxrect

 

Merci.
Je vous aime !

#2 draad

  • Members
  • PipPipPipPipPipPipPipPip
  • 653 messages

Posté 22 January 2015 - 23:17 PM

Salut,

Moi je pense que je ferais un tableau pour gerer ca, avec une case pour chaque poisition possible de ton etagere sur une colonne. Ensuite lorsque tu deplace ton etagere, tu pourra la faire monter ou descendre dans le tableau jusqu'a ce qu'elle rencontre la position d'une autre etagere.

Si tu veux deplacer toutes les etageres d'une meme colonne, tu n'a qu'a boucler sur la bonne colonne et remonter chaque etagere presente jusqu'a arriver au debut ou a la fin du tableau.

#3 archiroc

    Ceinture Noire

  • Members
  • PipPipPipPipPipPipPip
  • 255 messages

Posté 23 January 2015 - 13:30 PM

Merci Draad.

Vais travailler comme tu dis et te dirais. Tout étant bien rangé dans tes tableaux, en effet ce ne devrait pas être bien difficile !
Mais j'y ai pas pensé :eusa_doh:

Te dirais !

#4 Jano 95

  • Moderateur
  • PipPipPipPipPipPipPipPip
  • 4558 messages

Posté 23 January 2015 - 23:42 PM

Salut.

Me suis amusé à faire un truc pour une colone.


//création d'un tableau avec les limites haute et basse)
var tabY:Array = new Array(40,0,0,0,340);
for (var i:int=1 ; i<4 ; i++) {
//création de 3 étagères
var etg:MovieClip = new etage;
addChild(etg);
//création d'un indice permettant d'identifier l'étagère
etg.id = i;
etg.x = 90;
etg.y = 100 * i;
//on enregistre dans le tableau la position en y de l'étagère
tabY[i] = etg.y;
etg.addEventListener("mouseDown", Press);
etg.addEventListener("mouseUp", Release);
};
function Press(Evt:Event):void {
var etg = Evt.target;
//définition des limites de déplzcement de l'étagère cliquée
//on utilise l'id de la limite inférieure et supérieure auquel on ajoute l'épaisseur des 2 étagères
var Rect: Rectangle = new Rectangle(90, tabY[(etg.id)-1] + 10, 0, tabY[(etg.id)+1] - tabY[(etg.id)-1] - 20);
etg.startDrag(false, Rect);
};
function Release(Evt:MouseEvent):void {
var etg = Evt.target;
etg.stopDrag();
//enregistrement dans le tableau de la nouvelle poisition en y de l'étagère
tabY[etg.id] = etg.y;
};
 

Fichier(s) joint(s)



#5 Monsieur Spi

  • Community Manager
  • PipPipPipPipPipPipPipPip
  • 6956 messages

Posté 24 January 2015 - 04:43 AM

+1 Jano ;)

#6 archiroc

    Ceinture Noire

  • Members
  • PipPipPipPipPipPipPip
  • 255 messages

Posté 25 January 2015 - 11:52 AM

LOVE !
Mais ça me fous les boules d'être à ce point dépassé.... Bouhhhh....

Citation

+1 Jano ;)

Jano ++;

#7 archiroc

    Ceinture Noire

  • Members
  • PipPipPipPipPipPipPip
  • 255 messages

Posté 25 January 2015 - 12:27 PM

Ya quand même un ptit problème.

Quand je passe en TouchEvent ( application mobile ) Bah la..... ????

Je cherche...

Ah si... Ouf. Je colle pour ceux qui auront le même pb que moi savoir organiser ses neurones sur des étagères bien conçues.


Multitouch.inputMode = MultitouchInputMode.TOUCH_POINT;
//création d'un tableau avec les limites haute et basse)
var tabY: Array = new Array(40, 0, 0, 0, 340);
for (var i: int = 1; i < 4; i++) {
//création de 3 étagères
var etg: MovieClip = new etage;
addChild(etg);
//création d'un indice permettant d'identifier l'étagère
etg.id = i;
etg.x = 90;
etg.y = 100 * i;
//on enregistre dans le tableau la position en y de l'étagère
tabY[i] = etg.y;

etg.addEventListener(TouchEvent.TOUCH_BEGIN, Press);
etg.addEventListener(TouchEvent.TOUCH_END, Release);
};

function Press(event:TouchEvent):void
{
var etg = event.target;
var Rect: Rectangle = new Rectangle(90, tabY[(etg.id) - 1] + 10, 0, tabY[(etg.id) + 1] - tabY[(etg.id) - 1] - 20);
event.target.startTouchDrag(event.touchPointID, false, Rect);
}
function Release(event:TouchEvent):void
{
var etg = event.target;
event.target.stopTouchDrag(event.touchPointID);
tabY[etg.id] = etg.y;
}
 





Répondre à ce sujet



  

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