PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Movie-Skript: Anzeigeposition des Films zentrieren?



Alan
14.12.2010, 19:54
Hallo Leute,

ich war auf der Suche nach einem Skript, mit dem man AVI-Dateien einfach am RMXP abspielen kann und habe folgendes Skript gefunden:


#by Soundspawn
class Scene_Movie

def initialize(movie,length,exit_to_game=true)
@readini = Win32API.new 'kernel32', 'GetPrivateProfileStringA', %w(p p p p l p), 'l'
@movie_name = Dir.getwd()+"\\Movies\\"+movie+".avi"
@counter = length*10
@exit_to_game = exit_to_game
main
end

def main
game_name = "\0" * 256
@readini.call('Game','Title','',game_name,255,".\\Game.ini")
game_name.delete!("\0")
Graphics.transition
@wnd = Win32API.new('user32','FindWindowEx','%w(l,l,p,p)','L')
@temp = @wnd.call(0,0,nil,game_name).to_s # original: (0/0)
@movie = Win32API.new('winmm','mciSendString','%w(p,p,l,l)','V')
@movie.call("open \""+@movie_name+"\" alias FILE style 1073741824 parent " + @temp.to_s,0,0,0)
@message = Win32API.new('user32','SendMessage','%w(l,l,l,l)','V')

@detector = Win32API.new('user32','GetSystemMetrics','%w(l)','L')
@width = @detector.call(0)
if @width == 640
fullscreen
Screen::update
sleep(1)
Screen::update
sleep(1)
Screen::update
sleep(1)
end

@movie.call("play FILE",0,0,0)
loop do
sleep(0.1)
@message.call(@temp.to_i,11,0,0)
Graphics.update
@message.call(@temp.to_i,11,1,0)
Input.update
if Input.trigger?(Input::B)
Input.update
break
end
@counter = @counter - 1
if @counter <= 0
break
end
end
@movie.call("close FILE",0,0,0)
if @exit_to_game
$scene = Scene_Map.new
else
$scene = nil
end
Graphics.freeze
if @width == 640
fullscreen
end
end
end

def fullscreen()

$full.call(18,0,0,0)
$full.call(13,0,0,0)
$full.call(18,0,2,0)
$full.call(13,0,2,0)
end
$full = Win32API.new('user32','keybd_event','%w(l,l,l,l)','')



Ich hab zwei Fragen diesbezüglich:
1) Ich hab versucht damit ein Avi abzuspielen, das eine Auflösung von genau 640x480 Pixel hat - also RMXP-Native Auflösung. Trotzdem füllt das Avi nicht den ganzen Bildschirm (bzw. nicht das ganze Fenster im Fenstemodus) sondern nur einen Teil davon und wird links oben in der Ecke angezeigt. Kann man das ändern sodass der ganze Bildschirm (und damit die ganze Auflösung) voll genutzt wird? Von WinAPI-Calls hab ich leider keine Ahnung ^^'
2) Wenn man es nicht auf's ganze Fenster vergrößern kann ist es nicht so schlimm - zentrieren würde mir auch vollkommen reichen. Ginge das?


Danke im Voraus,



Alan




EDIT: Blender hat mich hier ein wenig ausgetrickst - die Auflösung des Renders ist tatsächlich nur 320x240, das erklärt warum nur ein Teil des Bildschirms genutzt wird. Interessant wär's trotzdem wie man die Position eines kleineren Videos am Bildschirm zentrieren könnte.