Script video amelioré
Ven 14 Mar 2008 - 21:04
Bonsoir !
M'étan particulièrement intéressé aux api, et a la gestion multimédia, dans mon projet (voir ma signature):
voici un script de corwin que j'ai légérement amélioré:
gestion du volume
pause
et positionnement de la fenetre de video
En espérant qu'il vous soit utile !
M'étan particulièrement intéressé aux api, et a la gestion multimédia, dans mon projet (voir ma signature):
voici un script de corwin que j'ai légérement amélioré:
gestion du volume
pause
et positionnement de la fenetre de video
En espérant qu'il vous soit utile !
- Code:
#============================
#
# rpgmakervx.1fr1.net
#================================
#
# - Game_Film -
# Rgss 1 & 2
#--------------------------------------------------------
# par berka
# sur les bases de Corwin
#--------------------------------------------------------
# -> utilisation:
# -1-creer un dossier "Films" dans le dossier de votre projet
# -2-y déposer les videos
# -3-appeler ce script dans un évenement par:
# $game_film = Game_Film.new("Test.avi")
# ou $game_film = Game_Film.new("Test.avi", pos x, pos y, largeur, hauteur)
# ou $game_film = Game_Film.new("Test.avi", pos x, pos y) ....etc....
#===========================================
class Game_Film
Volume = 500 #entre 0 et 1000
def initialize(film, x = 0, y= 0, w= 544, h= 416)
@x= x.to_s+" " #position horizontale
@y= y.to_s+" " #position verticale
@w= w.to_s+" "#largeur
@h= h.to_s+" " #hauteur
@nom = Dir.getwd()+"\\Films\\"+film # recherche de l'adresse de la video
@readini = Win32API.new('kernel32', 'GetPrivateProfileStringA', '%w(p p p p l p)', 'l') #pour lire le fichier Game.ini
@film= Win32API.new('winmm','mciSendString','%w(p,p,l,l)','V') #gestion du media
@handle = Win32API.new('user32','FindWindowEx','%w(l,l,p,p)','L') #pour recuperer le handle de la fenetre
@message = Win32API.new('user32','SendMessage','%w(l,l,l,l)','V') #pour envoyer des infos
charge
end
def charge
jeu = "\0" * 256
@readini.call('Game','Title','',jeu,255,".\\Game.ini")#on lit le game.ini jusqu'au string Title, on inscrit le titre dans jeu
jeu.delete!("\0") #on enleve tous les \0 du string
@temp = @handle.call(0,0,nil,jeu).to_s #on recupere la fenetre
@film.call("open \""+@nom+"\" alias FILE style 1073741824 parent " + @temp.to_s,0,0,0) #on ouvre le media
@status = " " * 255
lecture
end
def lecture
pause = false
@film.call("put FILE window at "+@x+@y+@w+@h, @status,0,0) #on positionne la fenetre du media
@film.call("setaudio MediaFile volume to "+Volume.to_s, @status,0,0) #on regle le volume
@film.call("play FILE from 0",@status,0,0) #et on lit le media
loop do
sleep(0.1) #on raffraichit
@message.call(@temp.to_i,11,0,0) #on envoie l'info de lecture
Graphics.update #mise a jour graphique
@message.call(@temp.to_i,11,1,0) #on envoie l'info de lecture
Input.update #mise a jour des touches
@film.call("status FILE mode",@status,255,0) #on recupere l'etat du media
true_status = @status.unpack("aaaa") #que l'on insere dans un tableau
break if true_status == "stop".split(//) #sort de la boucle si en stop
if Input.trigger?(Input::B) #quitte si on presse X
Input.update
break
end
if Input.trigger?(Input::C) #pause si on presse Espace
Input.update
if pause == false
@film.call("pause FILE",@status,0,0)
pause = true
else
@film.call("play FILE",@status,0,0)
pause = false
end
end
end
@film.call("close FILE",0,0,0) #et on ferme le fichier
end
end
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum