j'essai d'activer une explosion lors d'un tir avec animsprite
dans le p principale pas de probleme l'animation se joue et boucle en continu,mais dans ma procedure ,j'apercois mon ani mais pas completement ????
comment faire
Code : Tout sélectionner
If InitEngine3D()=0 Or InitMouse ()=0 Or InitSprite ()=0 Or InitKeyboard ()=0 Or InitSprite3D ()=0 Or InitSound()=0
MessageRequester ( "Error" , "Can't open DirectX 7 or later" , 0)
End
EndIf
UsePNGImageDecoder()
Enumeration
#explos1wav
#galax
#vaisseau
#tir1
#aster1
#explosion=60
EndEnumeration
Global posxtir,posytir,tirjoueur,t=0,t1=0,asterx,astery=-100,score,scrolling=0,asteroide,explosion.AnimSprite
OpenScreen(800,600,32,"ecranjeu")
LoadSprite(#galax,"c:\space\gala1.png") ;
LoadSprite(#aster1,"c:\space\aster1.png")
TransparentSpriteColor(#aster1,$ffffff)
LoadSprite(#vaisseau,"c:\space\vaisseau.png",0);charge le dessin
TransparentSpriteColor(#vaisseau,$ffffff)
LoadSprite(#tir1,"c:\space\tir1.png",0)
TransparentSpriteColor(#tir1,$ffffff)
MouseLocate(385,520)
LoadSound(#explos1wav,"c:\space\explos1.wav")
LoadSprite(#explosion,"c:\space\explosion.png",0)
CreateAnimSprite(explosion,#explosion,70,70,100);explosion variable animsprite
TransparentSpriteColor(#explosion,$ffffff)
;**************************************************
Declare explosionaster1()
Declare coltirast()
;*********************************
Structure tirjoueur
posxtir.l
posytir.l
EndStructure
Global NewList position.tirjoueur()
;**************************animx=
;*********************************
Structure asteroide
asterx.l
astery.l
vitesse.l
EndStructure
Global NewList coord.asteroide()
;*************************************
;******************************
Procedure gestiontir()
Select KeyboardReleased(#PB_Key_Space)
Case 0
t=1
Case 1
t=0
EndSelect
If t=1:Goto freintir:EndIf
If t=0
InsertElement(position())
position()\posxtir=MouseX()+13
position()\posytir=MouseY()
EndIf
t=1
freintir:
While NextElement(position())
position()\posytir-5
DisplayTransparentSprite(#tir1,position()\posxtir,position()\posytir)
If position()\posytir<=0:t=0
EndIf
coltirast()
Wend
t=0
ResetList(position())
EndProcedure
;***********************************
Procedure afficheaster()
InsertElement(coord())
If t1=1:Goto freinaster1:EndIf
If t1=0:coord()\asterx=Random(740):EndIf
t1=1
freinaster1:
While NextElement(coord())
t1=1
coord()\astery+5
DisplayTransparentSprite(#aster1,coord()\asterx,coord()\astery)
If coord()\astery>600:t1=0:coord()\astery=-100
DeleteElement(coord())
EndIf
Wend
t1=0
EndProcedure
;*********************************************************************************************************
;c'est ici que je me casses la tete
Procedure coltirast()
If SpritePixelCollision(#tir1,position()\posxtir,position()\posytir,#aster1,coord()\asterx,coord()\astery)
explosionaster1()
Repeat
DisplayAnimSprite(explosion,coord()\asterx,coord()\astery)
UseBuffer(#explosion)
Until AnimFrameCount(explosion)>30
DeleteElement(coord()):t1=0
DeleteElement(position())
t=0
EndIf
EndProcedure
;*******************************************************************************************************************
Procedure explosionaster1()
;PlaySound(#explos1wav)
EndProcedure
;************************************
;Procedure score()
;score=score+10
;EndProcedure
; ********************************************
; * programme principale *
; ********************************************
Repeat
DisplaySprite(#galax,0,scrolling)
DisplaySprite(#galax,0,scrolling-600)
scrolling+2:If scrolling>600:scrolling=0:EndIf
DisplayTransparentSprite(#vaisseau,MouseX(),MouseY())
ExamineMouse()
ExamineKeyboard()
gestiontir()
afficheaster()
FlipBuffers()
Until KeyboardPushed (#PB_Key_Escape)
End