![]() |
Video über Andorra 2D TAdVideoPlayer
Ich habe grade angefangen, ein bisschen mit Andorra 2D zu programmieren, und schon gibts die ersten Probleme.
Ich habe in einer Unit eine Form, auf der nur ein TAdDraw liegt. Das initialisiere ich folgendermaßen:
Delphi-Quellcode:
Danach wird eine Funktion in einer anderen Unit aufgerufen, die dadrauf ein Video zeichnen (oder erstmal erstellen) soll:
AdDraw:=TAdDraw.Create(self);
AdDraw.DllName:='AndorraDX93D.dll'; with AdDraw.Display do begin Width:=1280; Height:=1024; BitDepth:=ad32Bit; DisplayMode:=dmFullscreen; end; video_init; If AdDraw.Initialize Then begin drawframes.Enabled:=true; end else begin ShowMessage(AdDraw.GetLastError); halt; end;
Delphi-Quellcode:
Und gleich beim Erzeugen des Video-Players bekomme ich eine Access-Violation. Hat jemand spontan eine Ahnung, woran das liegen könnte? Ich habe mir mal die Beispiele angeschaut, im Video-Player wird da eigentlich das gleiche gemacht, nur halt in der selben Unit. Wobei es daran nicht liegt, habe probeweise das Video in der Hauptunit direkt nach dem Erzeugen des AdDraws erstellt, es kommt genau der selbe Fehler.
function video_register(relpath:string;StopFunction:TStopFunction):integer;
var count:integer; pm:TMethodPointer; begin pm.pMethod := @StopFunction; pm.pObject := nil; count:=Length(video_instances); SetLength(video_instances,count+1); with video_instances[count] do begin started:=false; AdPlayer:=TAdVideoPlayer.Create(FMain.AdDraw); //Hier kommt schon der Fehler! AdPlayer.Image.Texture.Filter:=atLinear; AdPlayer.Open(Fmain.apath+relpath); AdPlayer.Loop:=false; AdPlayer.onStop:=TAdNotifyEvent(pm); space:=(screen.Height-(screen.Width/AdPlayer.Image.Width* AdPlayer.Image.Height))/2; end; Result:=count; end; Wäre über jede Hilfe dankbar! |
Re: Video über Andorra 2D TAdVideoPlayer
Ich schätze, dass du versuchst TAdVideoPlayer vor der Initialisierung des TAdDraw zu erzeugen. Wenn du erst TAdDraw.Initialize aufrufst sollte es klappen.
|
Re: Video über Andorra 2D TAdVideoPlayer
Sorry, das hatte ich vergessen zu erwähnen:
Das
Delphi-Quellcode:
dient nicht zum Erstellen des Video-Players, dadurch werden erstmal Arrays vorbereitet. Das ERstellen passiert erst nach dem Initialize des AdDraws:
video_init;
Delphi-Quellcode:
video_init;
If AdDraw.Initialize Then begin drawframes.Enabled:=true; end else begin ShowMessage(AdDraw.GetLastError); halt; end; video_intro_1; // hier wird erst der Player erstellt
Delphi-Quellcode:
Daran liegt es also nicht!
procedure video_intro_1;
begin video_intro_instances[1]:=video_register('..\videos\intro1.m1v', video_intro_1stop); video_start(video_intro_instances[1]); end; |
Re: Video über Andorra 2D TAdVideoPlayer
Jetzt funktioniert es doch, wenn ich den VideoPlayer in der Hautpunit erstelle!?
Wieso geht es dann nicht in der anderen Unit, AdDraw habe ich als public erstellt.. HAt jemand eine Idee? |
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:02 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz