Nombre de messages : 812 Localisation : Troyes Date d'inscription : 05/02/2011
Sujet: Amelioration du source Mer 27 Déc 2017 - 18:01
bsr
avec le source de minibug si dessous
Code:
' Test de déplacement d'objets par MiNiBuG
LABEL deplace , quitter
DIM pfx% , pfy% , ppx% , ppy%
PANEL 1 : LEFT 1,20 : TOP 1,20 : WIDTH 1,320 : HEIGHT 1,220 : COLOR 1,0,0,230 : ON_MOUSE_DOWN 1,deplace SYNEDIT 2 : PARENT 2,1 : LEFT 2,4 : TOP 2,20 : WIDTH 2,WIDTH_CLIENT(1)-8 : HEIGHT 2,HEIGHT_CLIENT(1)-24 ALPHA 3 : PARENT 3,1 : TOP 3,2 : LEFT 3,WIDTH_CLIENT(1)-18 : FONT_BOLD 3 : FONT_SIZE 3,10 : CAPTION 3,"X" : ON_CLICK 3,quitter
END
deplace: OFF_MOUSE_DOWN 1 ppx%=MOUSE_X_POSITION(1) : ppy%=MOUSE_Y_POSITION(1) : ' On determine la position du clic pfx%=LEFT(1) : pfy%=TOP(1) : ' On determine la position du 1er l'objet REPEAT LEFT 1,pfx%+MOUSE_X_POSITION(1)-ppx% : TOP 1,pfy%+MOUSE_Y_POSITION(1)-ppy% : ' On déplace le 1er objet pfx%=LEFT(1) : pfy%=TOP(1) : ' On recalcule la position du 1er objet UNTIL MOUSE_LEFT_UP(1)=1 ON_MOUSE_DOWN 1,deplace RETURN
quitter: TERMINATE RETURN
qui permettais de bouger un objet dans tout les sens
voici une version amélioré qui permet de bouger l'objet verticalement accompagné d'une butté de chaque extrémité ce qui est nouveau
Code:
LABEL deplace , quitter
DIM level%, indice%, LeftBtn%, TopBtn%, MouseY%, MouseX%
Button 1 : LEFT 1,43 : TOP 1,300 : ON_MOUSE_DOWN 1,deplace alpha 3 END deplace: OFF_MOUSE_DOWN 1 OFF_MOUSE_DOWN 1 MouseX%=MOUSE_X_POSITION(1) : MouseY%=MOUSE_Y_POSITION(1) TopBtn%=TOP(1) : LeftBtn%=LEFT(1) : ' On determine la position du 1er l'objet REPEAT indice%=TopBtn%+MOUSE_Y_POSITION(1)-MouseY% Level%=(300-indice%) If Level%<0 Then Level%=0 :' butté du bouton du minimum en Y If Level%>100 Then Level%=100 :' butté du bouton du maximum en Y caption 3,Level%
Top 1,300-Level% TopBtn%=TOP(1) : LeftBtn%=LEFT(1)
UNTIL MOUSE_LEFT_UP(1)=1 ON_MOUSE_DOWN 1,deplace RETURN
quitter: TERMINATE RETURN
merci encore a minibug
Minibug
Nombre de messages : 4570 Age : 58 Localisation : Vienne (86) Date d'inscription : 09/02/2012
Sujet: Re: Amelioration du source Mer 27 Déc 2017 - 22:32
Tant mieux si j'ai pu être utile et te rendre service.
Pour le code, je me demande si au départ ce n'était pas une idée de notre ami Silverman ! Il est bien possible qu'il y est un post de sa part là-dessus mais où ?!
pascal10000
Nombre de messages : 812 Localisation : Troyes Date d'inscription : 05/02/2011
Sujet: Re: Amelioration du source Jeu 28 Déc 2017 - 15:02
bien sur que ça me rend service je vais pouvoir créer mon projet en évolution a grand pas
même s'il n'es pas de toi je remercie également à l'auteur je n'en dirai pas de plus juste que c'est en relation avec du multiùédia
Marc
Nombre de messages : 2466 Age : 63 Localisation : TOURS (37) Date d'inscription : 17/03/2014
Sujet: Re: Amelioration du source Jeu 28 Déc 2017 - 23:43
Salut Pascal !
J'ai essayé la version améliorée qui permet de bouger l'objet verticalement.
Sur mon ordinateur, cette version ne permet pas un déplacement correct : j'ai un fonctionnement en "tout ou rien", c'est à dire soit la position mini 0 , soit la position maxi 100. Pas de position intermédiaire. Voir la vidéo ci-dessous.
J'ai donc essayé sur d'autres ordinateurs et là, ça fonctionne !
J'ai recherché la cause : dans la boucle REPEAT, ligne 20, la fonction TopBtn%=TOP(1) me renvoie la valeur de 65535 ou -32768 ! La boucle est trop rapide ! J'ai donc ajouté entre les lignes 20 et 21 une pause et tout est rentré dans l'ordre. Le temps que le TOP(1) se soit "fixé" avant de lire sa nouvelle position ligne 21. Un simple DISPLAY n'a pas fonctionné.
=> Voir l'explication technique et la solution de Silverman dans son post ci-dessous.
Merci pour ton partage et bonne continuation !
Dernière édition par Marc le Ven 29 Déc 2017 - 18:46, édité 1 fois
pascal10000
Nombre de messages : 812 Localisation : Troyes Date d'inscription : 05/02/2011
Sujet: Re: Amelioration du source Ven 29 Déc 2017 - 10:56
ok j'ai vu bizarre que chez moi ça fonctionne bien ce phénomène se fait avec un picture pour mon projet j'ai donc eu recoure avec le buton_picture N et je n'ai pas eu d'ennui avec de rien bonne journée
silverman
Nombre de messages : 970 Age : 52 Localisation : Picardie Date d'inscription : 18/03/2015
Sujet: Re: Amelioration du source Ven 29 Déc 2017 - 16:48
Minibug a écrit:
Pour le code, je me demande si au départ ce n'était pas une idée de notre ami Silverman ! Wink
Et non, ce code n'est pas de moi
@pascal10000 J'ai le même phénomène sur un picture. Cela est du à MOUSE_Y_POSITION() qui n'est rafraichit que si la souris bouge sur l'objet, mais pas l'inverse !!!. Ca peut se reproduire pour d'autre objet également, voire être aléatoire. Voici une version qui fonctionne:
Code:
LABEL deplace , quitter
DIM level%, indice%, LeftBtn%, TopBtn%, MouseY%, MouseX% dim delta_MouseY% , old_MouseY% , MouseY_start%
picture 1 : LEFT 1,43 : TOP 1,300 : ON_MOUSE_DOWN 1,deplace alpha 3 END deplace: OFF_MOUSE_DOWN 1 MouseX%=MOUSE_X_POSITION(1) : MouseY%=MOUSE_Y_POSITION(1) MouseY_start%=MouseY% :' un point fixe de l'objet : la position au moment du clic TopBtn%=TOP(1) : LeftBtn%=LEFT(1) : ' On determine la position du 1er l'objet ' NB : MOUSE_Y_POSITION(1) n'est rafraichit que si la souris bouge sur l'objet, MAIS PAS L'INVERSE !!! REPEAT old_MouseY%=MouseY% MouseY%=MOUSE_Y_POSITION(1) if (MouseY%-old_MouseY%)<>0 :' si la souris bouge delta_MouseY%=MouseY%-MouseY_start% :' calcule de combien de pixels elle a bougé par rapport au point fixe else delta_MouseY%=0 :' sinon pas de mouvement end_if indice%=TopBtn%+delta_MouseY% Level%=(300-indice%) If Level%<0 Then Level%=0 :' butté du bouton du minimum en Y If Level%>100 Then Level%=100 :' butté du bouton du maximum en Y
Top 1,300-Level% TopBtn%=TOP(1) : LeftBtn%=LEFT(1)
UNTIL MOUSE_LEFT_UP(1)=1 ON_MOUSE_DOWN 1,deplace RETURN
quitter: TERMINATE RETURN
Marc
Nombre de messages : 2466 Age : 63 Localisation : TOURS (37) Date d'inscription : 17/03/2014
Sujet: Re: Amelioration du source Ven 29 Déc 2017 - 17:37
Merci Silverman pour ton explication technique.
L'ajout d'une pause comme je l'ai proposé n'était donc qu'un placebo.
Après différents essais, je confirme que seul ton code fonctionne bien.