problème de non évènement dans boucle [RESOLU]

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
david
Messages : 208
Inscription : jeu. 03/févr./2005 21:10

problème de non évènement dans boucle [RESOLU]

Message par david »

bonjour la réponse à la question va surrement vous sembler évidente, mais la je cale!!!
j'ai simplifié le code pour qu'on voit bien le pb

sur quasi toute la page j'affiche une image, et sur les deux cotés je voulais faire une animation (pour l'instant je n'ai que le cote gauche)
j'ai mis l'animation tout de suite après le repeat car elle dois tourner indépendamment qu'on clique sur des boutons qu'on bouge la souris ou pas...
elle s'anime quelques instants, puis ne s'anime que quand je bouge la souris, je ne sais pas la placer correctement

merci par avance

Code : Tout sélectionner

#title = ""
#versio=""
#author=""
#nbpages = 32
#Dossier = "Sources"
#Extension =".jpg"

#BarreBas = 72 ;manque: voir si barre et taille barre

#AFFICH_IMG =10
#AFFICH_POSI=11

#TailleButton = 50


Dim nameImg.s(#nbpages)

UseJPEGImageDecoder()


  

;######## repertoire en cours-------------
Buffer.s = Space(256)
Buf_Len = 256
GetCurrentDirectory_(Buf_Len, @Buffer)
Global NomChemin$ = PeekS(@Buffer)
; -----------------------------------------


;####### dimensions ecran -------------------------------
Global EcrL= GetSystemMetrics_(#SM_CXSCREEN)
Global EcrH = GetSystemMetrics_(#SM_CYSCREEN)
Global page_en_cours=1

Global coef_dim_L.f =  EcrH / EcrL ;limite ecran 16/9
        coef_dim_L = 1-((1-coef_dim_L)/2) ;reajustement
Global coef_dim_H = 1 ;base1
; --------------------------------------------------------




pos_en_cours=1
nameImg(pos_en_cours) = NomChemin$ + "\" + #Dossier + "\" + Str(pos_en_cours) + #Extension


 Resultat = LoadImage(pos_en_cours,nameImg(pos_en_cours))









;####### animation --------------------------------
Global xx, yy
Global directionx, directiony
;------------------------------------------------







If InitSprite() = 0 Or InitKeyboard()=0 Or UsePNGImageDecoder() = 0 Or UseJPEGImageDecoder() = 0
  MessageRequester("Error","DirectX 7+ is needed.",0)
  End
EndIf




If OpenWindow(0, 0, 0, EcrL, EcrH, #title+" "+#versio+" / "+#author , #PB_Window_Tool)
OpenWindowedScreen(WindowID(0),0,#TailleButton/2, (EcrL -EcrL*coef_dim_L)/2, EcrH-#TailleButton/2,  0, 0, 0)
   CreateSprite(0, 20, 20)
      If StartDrawing(SpriteOutput(0))
        Box(0, 0, 20, 20, RGB(255, 0, 155))
        Box(5, 5, 10, 10, RGB(155, 0, 255))
        StopDrawing()
      EndIf
  
  
  
  text_posi$ = Str(page_en_cours)+ " / "+#nbpages
      
  ButtonGadget(3, EcrL-55, 0, 50, 25, "Quitter")

;============================================
  ImageGadget(0, (EcrL -EcrL*coef_dim_L)/2, #TailleButton/2, EcrL*coef_dim_L + (EcrL -EcrL*coef_dim_L)/2, EcrH*coef_dim_H, ImageID(pos_en_cours))
;==========================================================

  
  
  
Repeat
  
     FlipBuffers() 
    ClearScreen(RGB(0, 0, 0))
    DisplaySprite(0, xx, yy)
    xx + directionx
    yy + directiony
    
    If xx > 20  : directionx = -2 : EndIf
    If xx <= 0  : directionx =  2 : EndIf
    If yy > 140 : directiony = -2 : EndIf
    If yy <= 0  : directiony =  2 : EndIf
    
    
    
    
    
  Event = WaitWindowEvent()
  
    
    Select Event
        
    
      Case #PB_Event_Gadget
        
        
        Select EventGadget()
            
          Case 3
          End
             
        EndSelect      
      
      Case #PB_Event_Menu ; We only have one shortcut
        SetGadgetText(#AFFICH_IMG, GetGadgetText(#AFFICH_POSI))

      
    EndSelect
    
      
  Until Event = #PB_Event_CloseWindow
   
EndIf

Dernière modification par david le sam. 15/oct./2016 9:30, modifié 1 fois.
Avatar de l’utilisateur
falsam
Messages : 7324
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: problème de non évènement dans boucle

Message par falsam »

Dans WaitWindowEvent() il y a .... Wait ^^

Remplace le par WindowEvent()
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Avatar de l’utilisateur
Zorro
Messages : 2186
Inscription : mar. 31/mai/2016 9:06

Re: problème de non évènement dans boucle

Message par Zorro »

falsam a écrit :Dans WaitWindowEvent() il y a .... Wait ^^

Remplace le par WindowEvent()
ou par WaitWindowEvent(2)

autre chose ,
tu peux peut etre remplacer ton

Code : Tout sélectionner


;######## repertoire en cours-------------
Buffer.s = Space(256)
Buf_Len = 256
GetCurrentDirectory_(Buf_Len, @Buffer)
Global NomChemin$ = PeekS(@Buffer)
; -----------------------------------------
par :

Code : Tout sélectionner

Global NomChemin$ = GetCurrentDirectory()

et aussi ton :

Code : Tout sélectionner

;####### dimensions ecran -------------------------------
Global EcrL= GetSystemMetrics_(#SM_CXSCREEN)
Global EcrH = GetSystemMetrics_(#SM_CYSCREEN)
par :

Code : Tout sélectionner

ExamineDesktops()
Global EcrL=DesktopWidth(0)
 Global EcrH =DesktopHeight(0)


tu me fait penser a quelqu'un qui soit, a un Purebasic qui date de 1999
et les codes qui vont avec ... (comment ça ,je suis soupçonneux ? )

soit tu n'a pas retouché Purebasic depuis cette periode, et le glaçon dans lequel tu etais prisonnier
viens de fondre .... :lol:
Dernière modification par Zorro le sam. 15/oct./2016 9:26, modifié 1 fois.
Avatar de l’utilisateur
falsam
Messages : 7324
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: problème de non évènement dans boucle

Message par falsam »

Rien à voir avec ta question mais tu peux.

Remplacer

Code : Tout sélectionner

;######## repertoire en cours-------------
Buffer.s = Space(256)
Buf_Len = 256
GetCurrentDirectory_(Buf_Len, @Buffer)
Global NomChemin$ = PeekS(@Buffer)
; -----------------------------------------
Par

Code : Tout sélectionner

NomChemin$ = GetCurrentDirectory()
De la même maniere pour ta recherche des dimension d'ecran, tu peux regarder les fonctions
ExamineDesktops(), DesktopWidth() et DesktopHeight()
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
david
Messages : 208
Inscription : jeu. 03/févr./2005 21:10

Re: problème de non évènement dans boucle [RESOLU]

Message par david »

Merci Falsam!!
Merci Zorro!!

J'ai actuellement PureBasic 5.22 LTS (Windows - x86)
mais comme je suis (très) débuttant et que des fois j'ai du mal a reconvertir du code
j'ai conservé toutes mes versions avec les bouts de codes récupérés ça et là...
:lol:
j'ai donc conservé la 3.62 / 3.92 / 3.93 / 3.94 / 4.00 / 4.51 / 5.22 / et la 5.50 que j'ai pas encore installée car j'ai pas les droits admin au bureau faut que je l'installe à la maison d'abord...

Je suis donc un homme moderne, mais qui vit toujours proche du passé
Maintenant c'est clair que les évolutions sont nécessaires, même si des fois c'est pas évident à adapter pour les petites gens..

ps: j'en profite au passage pour dire qu'il y a plein de sources récents que je n'arrive pas à faire fonctionner, je pense qu'au dela de la version PB, vous avez tous un tas de lib... installés
je pense qu'un package de lib des indispensables serait le bienvenue (avec le mode emploi d'installation parce que j'ai du faire une fois en 1999 effectivement)
Avatar de l’utilisateur
falsam
Messages : 7324
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: problème de non évènement dans boucle [RESOLU]

Message par falsam »

Je pense qu'au dela de la version PB, vous avez tous un tas de lib... installés
Il y a longtemps que je n'utilise plus de lib à cause de soucis de compatibilité. ^^

Si les codes récents ne fonctionnent pas chez toi, c'est parce que le plupart sont codés avec PB 5.41 et PB 5.43 alors que toi tu t’arrêtes à la version 5.22
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
david
Messages : 208
Inscription : jeu. 03/févr./2005 21:10

Re: problème de non évènement dans boucle [RESOLU]

Message par david »

Par contre, je voulais faire l'animation du coté droit également, mais je ne peux faire qu'un OpenWindowedScreen dans ma fenetre?!
et si je veux étendre l'animation sur mon image pour qu'elle passe devant, je dois utiliser autre chose car OpenWindowedScreen n'a pas d'option de transparence?!
Avatar de l’utilisateur
falsam
Messages : 7324
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: problème de non évènement dans boucle [RESOLU]

Message par falsam »

un seul OpenWindowedScreen() effectivement.
si je veux étendre l'animation sur mon image pour qu'elle passe devant, je dois utiliser autre chose car OpenWindowedScreen n'a pas d'option de transparence?!
Utilise la transparence des sprites.

C'est un diaporama que tu souhaites effectuer ?
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
david
Messages : 208
Inscription : jeu. 03/févr./2005 21:10

Re: problème de non évènement dans boucle [RESOLU]

Message par david »

C'est un diaporama que tu souhaites effectuer ?
non en fait dans le source complet il y a des boutons +/- ...

c'est comme feuilleter un catalogue en tournant les pages de 1 à nb_images
initialement je n'avais pas OpenWindowedScreen

mes images sont redimensionnées pour être proche du plein ecran sans trop etre déformées
je voulais profiter de la "bordure" droite et gauche pour faire une petite animation (genre sinus scroll...)
voir pourquoi pas se promener sur l'image (pour la magnifier un peu mais sans non plus tout masquer...)

c'est là que ça se gate pour mois ...
Avatar de l’utilisateur
falsam
Messages : 7324
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: problème de non évènement dans boucle [RESOLU]

Message par falsam »

c'est comme feuilleter un catalogue en tournant les pages de 1 à nb_images
Un début de code sur ce lien
http://www.purebasic.fr/french/viewtopi ... =6&t=16327
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Avatar de l’utilisateur
falsam
Messages : 7324
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: problème de non évènement dans boucle [RESOLU]

Message par falsam »

Un exemple de défilement de page sur le forum anglais proposé par BasicallyPure.
http://www.purebasic.fr/english/viewtop ... 00#p461000

Il faut utiliser les flèches gauche ou droite.

Comic Book est un autre exemple de code proposé par JHPJHP toujours sur le forum Anglophone.
http://www.purebasic.fr/english/viewtop ... 12&t=61681
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Répondre