Rechercher
Résultats par :
Recherche avancée
Mots-clés

taille  convertir  vider  caractères  

Qui est en ligne ?
Il y a en tout 2 utilisateurs en ligne :: 0 Enregistré, 0 Invisible et 2 Invités

Aucun

Voir toute la liste


Partagez
Voir le sujet précédentAller en basVoir le sujet suivant
Senior Member
Messages : 585
Date d'inscription : 2012-01-11
Voir le profil de l'utilisateur

Annuler un glisser-déposer ?

le Tue 24 Jan - 20:47
Bonjour,
j'ai crée un quadrillage avec un système de drag&drop. Si on déplace l'élément en dehors de mon quadrillage, la fonction s'arrête.
L'élément se fige alors sur place.
Peut-on annuler la fonction "faire réagir à glisser-déposer" pour que l'élément retourne à sa place d'origine ?
avatar
Site Admin
Messages : 1029
Date d'inscription : 2011-11-03
Voir le profil de l'utilisateur

RE: Annuler un glisser-déposer ?

le Tue 24 Jan - 21:18
ça à l'air sympa ce que tu fais... je réfléchis demain ou après demain à une idée pour résoudre ton problème.
Senior Member
Messages : 340
Date d'inscription : 2010-08-31
Voir le profil de l'utilisateurhttp://zamirhlinotte.monsite-orange.fr/

RE: Annuler un glisser-déposer ?

le Tue 24 Jan - 22:09
Il réfléchit après demain et il trouve une solution dans un mois puis il la programme 3 mois plus tard et enfin pour finir en 2013 sort la docu pour expliquer comment utiliser sa nouvelle fonction.

Je rigole x)
avatar
Site Admin
Messages : 1029
Date d'inscription : 2011-11-03
Voir le profil de l'utilisateur

RE: Annuler un glisser-déposer ?

le Wed 25 Jan - 11:44
Bonjour Wam,

J'ai créé la fiche suivante : https://code.google.com/p/langagelinott ... tail?id=49
Du coup, Zamirh a raison, ça arrivera lors de la version 1.7 donc pas tout de suite !
Par contre, je vais faire un exemple pour le faire "programmatiquement" en Linotte !
avatar
Site Admin
Messages : 1029
Date d'inscription : 2011-11-03
Voir le profil de l'utilisateur

RE: Annuler un glisser-déposer ?

le Wed 25 Jan - 14:16
Et voici une solution 100% en Linotte (et que je trouve très élégante !):

Code:

Drag n Drop :

espèces :

copie_x & copie_y :
:
nombre
l'espèce rectangledng hérite de rectangle et contient copie_x , copie_y
grands rôles :

centre :
:
cercle, x vaut 311, y vaut 285, couleur vaut "rouge", plein vaut "oui", rayon vaut 50
boule :
:
rectangledng, largeur vaut 40, hauteur vaut 20, couleur vaut "noir", plein vaut "oui"
fond :
:
toile, couleur vaut "blanc"

Principal :

Actions :

attache fixer à boule
attache rétablir à boule
("Mémoriser la position initiale :
")
évoque boule.
fixer()
projette fond & centre & boule
fais réagir boule à "glisser-déposer" pour changement
("Boucle infinie")
Tant que vrai, temporise

Changement :

Actions :

si boule est en collision avec centre alors évoque boule.
fixer()
sinon, évoque boule.
rétablir()
reviens

Fixer :

Rôles :

*moi :
:
rectangledng
Actions :

copie_x@moi vaut x@moi
copie_y@moi vaut y@moi
retourne vrai

Rétablir :

Rôles :

*moi :
:
rectangledng
Actions :

x@moi vaut copie_x@moi
y@moi vaut copie_y@moi
retourne vrai

Le rectangle noir ne peut être déplacé que dans le cercle rouge. Ailleurs, le drag-n-drop est annulé.
avatar
Site Admin
Messages : 1029
Date d'inscription : 2011-11-03
Voir le profil de l'utilisateur

RE: Annuler un glisser-déposer ?

le Wed 25 Jan - 16:12
oups, un problème dans l'exemple... c'est corrigé !
Senior Member
Messages : 585
Date d'inscription : 2012-01-11
Voir le profil de l'utilisateur

RE: Annuler un glisser-déposer ?

le Fri 27 Jan - 0:53
Merci pour ton exemple.
Je te montre ce que j'ai fait :
Code:

Actions :

("casier_tiles est un casier d'image à glisser-déposer")
Mesure casier_tiles dans nombre_tiles

pour i de 0 à nombre_case - 1, lis
pour chaque nombre_tiles, lis

("grille{i} est un quadrillage")
Si casier_tiles{joker} est en collision avec grille{i} alors lis
pos_x = x de (casier_tiles{joker})
pos_y = y de (casier_tiles{joker})

("ici je détermine la case du quadrillage sur laquelle mon image s'est posée")
num_x = (pos_x - ((((largeur de fond - largeur de bordure_gauche) - (nombre_case_largeur_effectif * taille_case))/2) + largeur de bordure_gauche)) / taille_case
num_y = (pos_y - ((((hauteur de fond - (bordure_haute*2)) - (nombre_case_hauteur_effectif * taille_case))/2) + bordure_haute)) / taille_case
numéro_case = (arrondi num_x * nombre_case_hauteur_effectif) + arrondi num_y

("si mon image dépasse de trop de mon quadrillage alors je la renvoie à sa position d'origine")
si pos_x <
pos_x_mini alors parcours Annulation avec (casier_tiles{joker}), joker - 1
Sinon, si pos_x >
pos_x_maxi alors parcours Annulation avec (casier_tiles{joker}), joker - 1
Sinon, si pos_y <
pos_y_mini alors parcours Annulation avec (casier_tiles{joker}), joker - 1
Sinon, si pos_y >
pos_y_maxi alors parcours Annulation avec (casier_tiles{joker}), joker - 1

("sinon je pose mon image dans le quadrillage")
Sinon, parcours Repositionnement avec (casier_tiles{joker}), numéro_case
ferme

numéro_case = 0
ferme
ferme
Reviens

("ici on positionne les images dans le quadrillage")
Repositionnement :

Rôles :

*tuile est un graphique
*numéro est un nombre
Actions :

x de tuile = x de (grille{numéro})
y de tuile = y de (grille{numéro})
Reviens

("ici on annule le drag&drop")
Annulation :

Rôles :

*retour_tuile est un graphique
*retour_numéro est un nombre
Actions :

x de retour_tuile = x de (casier_tiles{retour_numéro})
y de retour_tuile = y de (casier_tiles{retour_numéro})
Reviens

Sa fonctionne <img src=" title="Smile" />

En revanche je ne peut pas annuler le drag&drop si mon image n'est pas en collision avec mon quadrillage.
Par exemple, si je fait :
Code:

pour i de 0 à nombre_case - 1, lis
pour chaque nombre_tiles, lis

("grille{i} est un quadrillage")
Si casier_tiles{joker} est en collision avec grille{i} alors lis
pos_x = x de (casier_tiles{joker})
pos_y = y de (casier_tiles{joker})

("ici je détermine la case du quadrillage sur laquelle mon image s'est posée")
num_x = (pos_x - ((((largeur de fond - largeur de bordure_gauche) - (nombre_case_largeur_effectif * taille_case))/2) + largeur de bordure_gauche)) / taille_case
num_y = (pos_y - ((((hauteur de fond - (bordure_haute*2)) - (nombre_case_hauteur_effectif * taille_case))/2) + bordure_haute)) / taille_case
numéro_case = (arrondi num_x * nombre_case_hauteur_effectif) + arrondi num_y

("si mon image dépasse de trop mon quadrillage alors je la renvoie à sa position d'origine")
si pos_x <
pos_x_mini alors parcours Annulation avec (casier_tiles{joker}), joker - 1
Sinon, si pos_x >
pos_x_maxi alors parcours Annulation avec (casier_tiles{joker}), joker - 1
Sinon, si pos_y <
pos_y_mini alors parcours Annulation avec (casier_tiles{joker}), joker - 1
Sinon, si pos_y >
pos_y_maxi alors parcours Annulation avec (casier_tiles{joker}), joker - 1

("sinon je pose mon image dans le quadrillage")
Sinon, parcours Repositionnement avec (casier_tiles{joker}), numéro_case
ferme

("Si casier_tiles{joker} n'est pas en collision avec grille{i}")
Sinon, lis
x de (casier_tiles{joker}) = 1
y de (casier_tiles{joker}) = 1
ferme
numéro_case = 0
ferme
ferme
Reviens

Mon programme ne repère plus la collision et renvoie mon image dans son coin à chaque fois.

Je n'ai trouvé aucune solution pour annuler le drag&drop si mon image n'est pas dans le quadrillage.
Contenu sponsorisé

Re: Annuler un glisser-déposer ?

Voir le sujet précédentRevenir en hautVoir le sujet suivant
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum