n'hésite pas a bien séparer ton code par étape comme dans l'exemple ci dessous , et de créer un sprite par élément affiché !!
c'est mieux d'utiliser des sprites pour afficher des objets qui bougent a l'écran
plutôt que de les faires bouger directement dans l'écran sans prédessin !!
la tu pré dessine tes objets , et tu n'a plus qu'a les faire afficher avec un simple displaysprite()
Code : Tout sélectionner
;
#sprite_text=1
#sprite_drapeau=2
; On iniallise tout
InitSprite()
InitKeyboard()
; Creation de l'ecran
largeur_ecran=GetSystemMetrics_(#SM_CXSCREEN):; largeur de l'ecran
hauteur_ecran=GetSystemMetrics_(#SM_CYSCREEN) ; hauteur de l'ecran
OpenScreen(largeur_ecran,hauteur_ecran,32,"Scrolltext")
; on charge la police d'ecriture et on crée un sprite
LoadFont(1,"impact", 50)
; ********* on cree le sprite qui contient le drapeau ********************
CreateSprite(#sprite_drapeau,largeur_ecran,hauteur_ecran)
StartDrawing(SpriteOutput(#sprite_drapeau))
Box(0,0,largeur_ecran,hauteur_ecran,RGB($FF,$FF,$FF)) ; notre fond de drapeau prend tout l'ecran
Circle(largeur_ecran/2,hauteur_ecran/2,190,RGB($FF,$0,$0)) ; ici le cercle est dessiné au millieu de l'ecran
StopDrawing() ; grace a largeur_ecran/2 et hauteur_ecran/2
; *****************************************************************
; ******************** on cree le sprite qui contien le text ***************
CreateSprite(#sprite_text,largeur_ecran,60)
text$="Le drapeau du JAPON "
StartDrawing(SpriteOutput(#sprite_text))
DrawingMode(#PB_2DDrawing_Transparent)
DrawingFont(FontID(1))
DrawText(0,0-14,text$,RGB($FF,$0,$0))
Longueur_text = TextWidth(text$)
StopDrawing()
; *********************************************************************
; **** apres ces créations préalable , on peut attaquer l'affichage proprement dit
; Boucle du programme
Repeat
; ******* animation du texte *********
x=x-3
If x<0-Longueur_text
x=largeur_ecran
EndIf
y=hauteur_ecran -100
; ********************************
DisplaySprite(#sprite_drapeau,0,0) ; on affiche d'abord le drapeau pour qu'il reste derriere
DisplayTransparentSprite(#sprite_text,x,y) ; puis par dessus on affiche le text en transparent !!
FlipBuffers()
ClearScreen(0) ; perso je nettoie l'ecran toujour a la fin !!
ExamineKeyboard()
Until KeyboardPushed(#PB_Key_Escape)