Forums Développement Multimédia

Aller au contenu

faire retourner un objet s'il n'est pas placé au bon endroit

Director

7 réponses à ce sujet

#1 nkuindja

    Ceinture Blanche

  • Members
  • Pip
  • 5 messages

Posté 15 March 2010 - 17:44 PM

Bonjour à la grande communauté de ce grand forum consacré à Director.
Je suis en ce moment en train de bosser sur un projet de CD intéractif pour enfants d'école primaire sous director 11, une grande partie des exercices porte sur les questions avec reponses multiples et il faut placer la bonne réponse au bon endroit, dans le cas ou un sprite n'est pas placé au bon endroit, il retourne instantanément à l'emplacement d'origine. Je me suis déja bien cassé la tête avec ce type d'exercice, je compte sur vous pour me débloquer.

Vous verez en piece jointe un aperçu d'exercice avec à la gauche les élément à mettre en ordre à droite. si un élément n'est pas à sa place, il retourne instantanément ou il se trouvait auparavent.


Merci d'avance

Michel
messenger: nkuindja_michel@yahoo.fr

#2 j'patauge

  • Members
  • PipPipPipPipPipPipPipPip
  • 676 messages

Posté 16 March 2010 - 07:14 AM

juste une piste…


dans un
(on beginsprite me)
mémoriser la position de départ (sprite(me.spritenumber).loc)
et dans un (on mousup me)
un conditionnel
si la position actuelle différente de la zone de drop
alors la position devient celle gardée en mémoire

#3 nkuindja

    Ceinture Blanche

  • Members
  • Pip
  • 5 messages

Posté 16 March 2010 - 11:50 AM

Voir le messagej'patauge, le 16 March 2010 - 07:14 AM, dit :

juste une piste…


dans un
(on beginsprite me)
mémoriser la position de départ (sprite(me.spritenumber).loc)
et dans un (on mousup me)
un conditionnel
si la position actuelle différente de la zone de drop
alors la position devient celle gardée en mémoire


Bonjour jpatauge, s'il te plaît peut tu etre un peu plus explicite, je veux dire dans un pétit script en détail en utilisant la méthode que tu me proposes. je suis encore novice sous director. :Hola:

#4 glurp

    Modérateur

  • Moderateur
  • PipPipPipPipPipPipPipPip
  • 1260 messages

Posté 16 March 2010 - 15:57 PM

Salut nkuindja,

Dans tous les cas il te faudra programmer pour arriver à faire ce que tu veux.
(j'patauge t'as donné les grands principes de ce que tu cherches à faire)

Mais où en es-tu dans ton développement ?
As-tu déjà fait tout le comportement de drag&drop (prendre et déposer l'élément) ou démarres-tu de rien ?

Donc premièrement, il te faut un comportement de drag&drop sur tes 4 réponses pour que l'utilisateur puisse les déplacer.
Or faire un drag&drop efficace peut déjà nécessiter une certaine maitrise de lingo (voir tutorial).
Si tu es débutant il serait peut-être plus simple de faire des clics de sélection, ou des boutons ratio...

Ensuite, si tu veux vraiment utiliser les drag&drop, il te faudra avoir 2 données ;
- la position de départ
- la position de fin

Ainsi, lorsque le clic sera relaché, tu vérifies si ton objet est au bon endroit, et sinon, tu le remets à la position de départ.

Sans pouvoir te donner un code tout fait, voici à quoi ça pourrait ressembler :


property pOrigin, pTarget

on beginSprite me

  pTarget = point(400,300)
  pOrigin = sprite(me.spriteNum).loc

end

on drop me

  tLoc = sprite(me.spriteNum).loc
  if (pTarget[1]-tLoc[1]) + (pTarget[2]-tLoc[2]) > 50 then
    sprite(me.spriteNum).loc = pOrigin
  end if

end
 


#5 j'patauge

  • Members
  • PipPipPipPipPipPipPipPip
  • 676 messages

Posté 16 March 2010 - 17:30 PM

merci glurp
j’ai vraiment pas une minute devant moi ces jours-ci pour développer

#6 nkuindja

    Ceinture Blanche

  • Members
  • Pip
  • 5 messages

Posté 17 March 2010 - 11:59 AM

Voir le messageglurp, le 16 March 2010 - 15:57 PM, dit :

Salut nkuindja,

Dans tous les cas il te faudra programmer pour arriver à faire ce que tu veux.
(j'patauge t'as donné les grands principes de ce que tu cherches à faire)

Mais où en es-tu dans ton développement ?
As-tu déjà fait tout le comportement de drag&drop (prendre et déposer l'élément) ou démarres-tu de rien ?

Donc premièrement, il te faut un comportement de drag&drop sur tes 4 réponses pour que l'utilisateur puisse les déplacer.
Or faire un drag&drop efficace peut déjà nécessiter une certaine maitrise de lingo (voir tutorial).
Si tu es débutant il serait peut-être plus simple de faire des clics de sélection, ou des boutons ratio...

Ensuite, si tu veux vraiment utiliser les drag&drop, il te faudra avoir 2 données ;
- la position de départ
- la position de fin

Ainsi, lorsque le clic sera relaché, tu vérifies si ton objet est au bon endroit, et sinon, tu le remets à la position de départ.

Sans pouvoir te donner un code tout fait, voici à quoi ça pourrait ressembler :


property pOrigin, pTarget

on beginSprite me

  pTarget = point(400,300)
  pOrigin = sprite(me.spriteNum).loc

end

on drop me

  tLoc = sprite(me.spriteNum).loc
  if (pTarget[1]-tLoc[1]) + (pTarget[2]-tLoc[2]) > 50 then
    sprite(me.spriteNum).loc = pOrigin
  end if

end
 

Bonjour glurp, et merci pour ta précieuse contribution. Je vais éssayer en utilisant ta methode. Mais j'ai trouvé une astuce qui satisfaisait à ma demande ce matin apres avoir bien cherché. il s'agit de la méthode employée lorsqu'on programme les puzzle; voici un script lié à une reponse a positioner:

on mouseUp me
if sprite(8).locV<(412) then
if sprite (8).locV>(360) then
if sprite(8).locH<(629) then
if sprite(8).locH>(299) then
sprite(8).loc = point (482,390)
sprite(8).moveableSprite = TRUE
end if
end if
end if
else
sprite(8).loc = point (136,250)
end if

if sprite(8).locV>(360) then
if sprite (8).locV<(412) then
if sprite(8).locH>(299) then
if sprite(8).locH<(629) then
sprite(8).loc = point (482,390)
sprite(8).moveableSprite = TRUE
end if
end if
end if
else
sprite(8).loc = point (136,250)
end if
end

------------------------------------------------------------------------------------------------------
Je l'ai testé et il fonctionne plutot bien. cela n'empêche pas que je doive apprendre cette autre méthode de clic-selection que tu m'as filé.

Encore merci pour vos promtes réactions

#7 j'patauge

  • Members
  • PipPipPipPipPipPipPipPip
  • 676 messages

Posté 17 March 2010 - 17:29 PM

d’ici une dizaine de jours
j’aurai peut être le temps d’être plus précis
désolé

#8 Leedoriden

  • Moderateur
  • PipPipPipPipPipPipPipPip
  • 4350 messages

Posté 18 March 2010 - 01:22 AM

Hello

une autre piste avec rect et intersect

voir le code en bas du message.

j'ai écrit ce code en 2005, cinq années plus tard, celui-ci doit fonctionner sous Dir11 et supérieur ;)



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