voici en tga avec couche alpha
image tga
transparence sprite sans ralentissement ?
sinon j'en suis là avec gestion des entrées et sortie pour les menus
les medias
s'il y a un truc que je peux améliorer ou si ma méthode n'est pas très bonne (oui j'ai une petite tête et je fais avec ça) dites le moi.
Code : Tout sélectionner
;**************************************
; creatin du menu intro pour
; industrial manager
;
; kwandjeen studio
; août 2006
;**************************************
If InitSprite() = 0 Or InitKeyboard() = 0 Or InitMouse() = 0
MessageRequester("Erreur", "Pas de détection de directx 7 ou supérieur", 0)
End
EndIf
InitSprite3D()
If InitSound() = 0
MessageRequester("Erreur", "Pas de détection de directx 7 ou supérieur et/ou de carte son", 0)
End
EndIf
UseJPEGImageDecoder()
;*********** declaration des constante *****************
Enumeration ;-------- enumeration des images
#image_fond_menu
EndEnumeration
Enumeration ;-------- enumeration des sprites
#sprite_fond_console
#sprite3d_fond_console
#sprite_bordure
#sprite_solo
#sprite_sur_solo
#sprite_multi
#sprite_sur_multi
#sprite_option
#sprite_sur_option
#sprite_credit
#sprite_sur_credit
#sprite_quitter
#sprite_sur_quitter
#sprite_mouse1
EndEnumeration
Enumeration
#page_principale
#page_solo
#page_multi
#page_option
#page_credit
#page_quitter
EndEnumeration
Enumeration
#son_bouton
EndEnumeration
Global son_solo
Global son_multi
Global son_option
Global son_credit
Global son_quitter
Global etat$
Global page_courante = #page_principale
Global posx_mouse
Global posy_mouse
Global valid_fade_in = 1
Global valid_fade_out = 0
Global pos_menu_x = 400
Global valid_mouse = 1
Global page_a_venir
;************** declaration des procedures ****************
Macro position_souris
ExamineMouse()
posx_mouse = MouseX()
posy_mouse = MouseY()
EndMacro
Macro gestion_fade
If valid_fade_in = 1
valid_mouse = 0
pos_menu_x = pos_menu_x-(pos_menu_x/15)-1
If pos_menu_x <= 1
valid_fade_in =0
pos_menu_x = 0
valid_mouse = 1
EndIf
EndIf
If valid_fade_out = 1
valid_mouse = 0
pos_menu_x = pos_menu_x+(1*(pos_menu_x/10))+1
If pos_menu_x >=350
valid_fade_out =0
pos_menu_x = 0
page_courante = page_a_venir
valid_fade_in = 1 : pos_menu_x = 400
EndIf
EndIf
EndMacro
;***** fin des procedures *********************************
If OpenScreen(1024, 768, 32, "industrial manager")
LoadImage(#image_fond_menu,"media\image_fond_menu.jpg")
LoadSprite(#sprite_fond_console,"media\fond_console.bmp",#PB_Sprite_Texture)
CreateSprite3D(#sprite3d_fond_console,#sprite_fond_console)
LoadSprite(#sprite_bordure,"media\bordure_console.bmp")
LoadSprite(#sprite_solo,"media\bouton_solo.bmp")
LoadSprite(#sprite_sur_solo,"media\bouton_sur_solo.bmp")
LoadSprite(#sprite_multi,"media\bouton_multi.bmp")
LoadSprite(#sprite_sur_multi,"media\bouton_sur_multi.bmp")
LoadSprite(#sprite_option,"media\bouton_option.bmp")
LoadSprite(#sprite_sur_option,"media\bouton_sur_option.bmp")
LoadSprite(#sprite_credit,"media\bouton_credit.bmp")
LoadSprite(#sprite_sur_credit,"media\bouton_sur_credit.bmp")
LoadSprite(#sprite_quitter,"media\bouton_quitter.bmp")
LoadSprite(#sprite_sur_quitter,"media\bouton_sur_quitter.bmp")
LoadSprite(#sprite_mouse1,"media\mouse1.bmp")
LoadSound(#SOn_bouton,"sons\bip_console_2.WAV")
Repeat
FlipBuffers()
ClearScreen(RGB(0,0,0))
If IsScreenActive()
If StartDrawing(ScreenOutput())
DrawImage(ImageID(#image_fond_menu),0,0)
EndIf
StopDrawing()
position_souris
If page_courante = #page_principale
Gosub menu_principal
EndIf
If page_courante = #page_solo
Gosub menu_principal
EndIf
DisplayTransparentSprite(#sprite_mouse1, posx_mouse, posy_mouse)
ExamineKeyboard()
Else
Delay(100)
EndIf
Until event$ = "fin_programme"
Else
MessageRequester("Erreur", "impossible d'afficher 1024*768 - 32 bit screen !", 0)
EndIf
;*********** affichage du menu principal ****************************
menu_principal:
gestion_fade
If Start3D()
DisplaySprite3D(#sprite3d_fond_console,660+pos_menu_x,84,180)
Stop3D()
EndIf
DisplayTransparentSprite(#sprite_bordure,660+pos_menu_x,84)
If posy_mouse>(128) And posy_mouse<(185) And posx_mouse>(709) And posx_mouse<(934) And valid_mouse = 1
DisplayTransparentSprite(#sprite_sur_solo,709,129)
etat$ = "solo"
Else
son_solo = 1
DisplayTransparentSprite(#sprite_solo,709+pos_menu_x,129)
EndIf
If posy_mouse>(229) And posy_mouse<(287) And posx_mouse>(709) And posx_mouse<(934)And valid_mouse = 1
DisplayTransparentSprite(#sprite_sur_multi,709,229)
etat$ = "multi"
Else
son_multi = 1
DisplayTransparentSprite(#sprite_multi,709+pos_menu_x,229)
EndIf
If posy_mouse>(328) And posy_mouse<(385) And posx_mouse>(709) And posx_mouse<(934)And valid_mouse = 1
DisplayTransparentSprite(#sprite_sur_option,709,328)
etat$ = "option"
Else
son_option = 1
DisplayTransparentSprite(#sprite_option,709+pos_menu_x,328)
EndIf
If posy_mouse>(428) And posy_mouse<(486) And posx_mouse>(709) And posx_mouse<(934)And valid_mouse = 1
DisplayTransparentSprite(#sprite_sur_credit,709,428)
etat$ = "credit"
Else
son_credit = 1
DisplayTransparentSprite(#sprite_credit,709+pos_menu_x,428)
EndIf
If posy_mouse>(584) And posy_mouse<(642) And posx_mouse>(709) And posx_mouse<(934)And valid_mouse = 1
DisplayTransparentSprite(#sprite_sur_quitter,709,584)
etat$ = "quitter"
Else
son_quitter = 1
DisplayTransparentSprite(#sprite_quitter,709+pos_menu_x,584)
EndIf
If etat$="solo" And son_solo=1 : PlaySound(#Son_bouton) : son_solo=0 : EndIf
If etat$="multi" And son_multi=1 : PlaySound(#Son_bouton) : son_multi=0 : EndIf
If etat$="option" And son_option=1 : PlaySound(#Son_bouton) : son_option=0 : EndIf
If etat$="credit" And son_credit=1 : PlaySound(#Son_bouton) : son_credit=0 : EndIf
If etat$="quitter" And son_quitter=1 : PlaySound(#Son_bouton) : son_quitter=0 : EndIf
If MouseButton(#PB_MouseButton_Left)
If etat$ = "solo" : page_a_venir = #page_solo : valid_fade_out = 1 :etat$ = "": EndIf
;If etat$ = "multi"
;If etat$ = "option"
;If etat$ = "credit"
If etat$ = "quitter" : Goto fin_programme : EndIf
Else
etat$=""
EndIf
Return
;************** vidange memoire *******************
fin_programme:
For i=0 To 100
If IsImage(i)<>0
FreeImage(i)
EndIf
If IsSprite(i)<>0
FreeSprite(i)
EndIf
If IsSprite3D(i)<>0
FreeSprite3D(i)
EndIf
If IsSound(i)<>0
FreeSound(i)
EndIf
Next
End
s'il y a un truc que je peux améliorer ou si ma méthode n'est pas très bonne (oui j'ai une petite tête et je fais avec ça) dites le moi.
Alors mon PC plantait quand je chargeais le png dans pure car je n'avais pas initialisé le decoder png (non pas les doigts).
Vous pensez qu'avec mon image de 1024*768 ce serait plus judicieux d'utiliser un sprite ?
Vous pensez qu'avec mon image de 1024*768 ce serait plus judicieux d'utiliser un sprite ?
Pour tout mes sprites il vaudrait mieux utiliser les sprite3d ?Les sprites 3d seraient plus rapides, mais pour un menu, pas la peine de s'embêter.
La différence entre un sprite et une image c'est que le sprite n'existe QUE si un écran est créé (plein écran ou dans une fenêtre) et que le format du sprite est le même que celui de l'écran. Du coup, l'affichage des sprite est direct (pas de conversion nécessaire...)kwandjeen a écrit :Alors mon PC plantait quand je chargeais le png dans pure car je n'avais pas initialisé le decoder png (non pas les doigts).
Vous pensez qu'avec mon image de 1024*768 ce serait plus judicieux d'utiliser un sprite ?
Pour tout mes sprites il vaudrait mieux utiliser les sprite3d ?Les sprites 3d seraient plus rapides, mais pour un menu, pas la peine de s'embêter.
De plus pour aficher ton image tu est obligé de passer par StartDrawing qui ajoute un temps supplémentaire en particulier pour une suele image.
Pour les Sprite3D, ca ne serait peut être pas plus rapide, en particulier pour l'image de 1024*768. Enfin bon maintenant tu devrais être en mesure de tester ton sprite (on va pas taper les doigts, sinon comment t'utilises ton clavier ? =)
Dri