Seite 2 von 3
Re: Animation trotz Fenster verschieben?
Verfasst: 18.11.2009 12:45
von X360 Andy
Rokur hat geschrieben:
Mit welchem Fehler?
Bei mir läufts unter WinXP Prof 32 Bit PB 4.31 x86
Wahrscheinlich muss das Thread-Handling noch verbessert werden, hab das mal eben hingeklatscht um zu zeigen das es möglich ist, aber wie in der Hilfe schon steht passen DX und Threads nicht so gut zusammen, bzw. muss man dann sehr aufpassen.

Problem signature:
Problem Event Name: APPCRASH
Application Name: PureBasic_Compilation0.exe
Application Version: 0.0.0.0
Application Timestamp: 4b03d030
Fault Module Name: PureBasic_Compilation0.exe
Fault Module Version: 0.0.0.0
Fault Module Timestamp: 4b03d030
Exception Code: c0000005
Exception Offset: 00003edb
OS Version: 6.1.7600.2.0.0.256.1
Locale ID: 1033
Additional Information 1: 0a9e
Additional Information 2: 0a9e372d3b4ad19135b953a78882e789
Additional Information 3: 0a9e
Additional Information 4: 0a9e372d3b4ad19135b953a78882e789
Read our privacy statement online:
http://go.microsoft.com/fwlink/?linkid= ... cid=0x0409
If the online privacy statement is not available, please read our privacy statement offline:
C:\Windows\system32\en-US\erofflps.txt
EDIT
grad mal mit Debugger ...
Code: Alles auswählen
wndMain = OpenWindow(#PB_Any, 0, 0, width, height, #app, #PB_Window_MinimizeGadget | #PB_Window_ScreenCentered)
Gibt den Fehler aus
Mit Thread Safe
Crasht er hier
Mit der Meldung "Zeile 47: There is no open Screen"
Re: Animation trotz Fenster verschieben?
Verfasst: 18.11.2009 13:22
von ts-soft
Mit Timer siehts dann ungefähr so aus:
Code: Alles auswählen
; ****************
; Demo by KatSeiko
; ****************
; Erst mal initialiseren...
InitSprite()
; Fenster und Screen...
MainWindow = OpenWindow(#PB_Any, 0, 0, 800, 600, "Test", #PB_Window_ScreenCentered | #PB_Window_SystemMenu)
OpenWindowedScreen(WindowID(MainWindow), 0, 0, 800, 600, 0, 0, 0)
; Ne Structure zur einfacheren Verwendung
Structure sLine
X1.i
X2.i
Y1.i
Y2.i
C.i
EndStructure
; Hier kommen die Linien rein
Global Dim dLine.sLine(4)
; Prozeduren sind wiederverwendbar, die kann man immer gebrauchen
Procedure Randomize()
; dLine(0) = dLine(1)
; dLine(1) = dLine(2)
; dLine(2) = dLine(3)
; dLine(3) = dLine(4)
RandomSeed(ElapsedMilliseconds())
dLine(4)\x1 = Random(800)
dLine(4)\x2 = Random(800)
dLine(4)\y1 = Random(600)
dLine(4)\y2 = Random(600)
dLine(4)\C = Random($FFFFFF)
EndProcedure
Procedure RandomScreen()
ClearScreen(0)
StartDrawing(ScreenOutput())
For i = 0 To 4
LineXY(dLine(i)\x1, dLine(i)\y1, dLine(i)\x2, dLine(i)\y2, dLine(i)\c)
Next
StopDrawing()
FlipBuffers()
Randomize()
EndProcedure
Procedure TimerCallback(hParent, uMsg, uEventID, dwTimer)
If uEventID = 1
RandomScreen()
EndIf
EndProcedure
SetTimer_(WindowID(MainWindow), 1, 10, @TimerCallback())
; Dim füllen
For i = 0 To 4
Randomize()
Next
; Programmschleife, Programm endet mit Fenster schließen.
Repeat
WEvent = WaitWindowEvent()
Until WEvent = #PB_Event_CloseWindow
//edit
code korrigiert und neuformatiert
//edit2
timerintervall auf 10 ms gesetzt, würkt besser

Re: Animation trotz Fenster verschieben?
Verfasst: 18.11.2009 14:08
von edel
dx ist es ziemlich egal in welchem thread es laeuft. Es darf dann aber auch nur in einem laufen.
Re: Animation trotz Fenster verschieben?
Verfasst: 18.11.2009 14:14
von Josh
@ts-soft
so gehts bei mir besser :P
Code: Alles auswählen
SetTimer_(WindowID(MainWindow), 1, 100, @TimerCallback())
Re: Animation trotz Fenster verschieben?
Verfasst: 18.11.2009 15:02
von ts-soft
Josh hat geschrieben:@ts-soft
so gehts bei mir besser :P
Code: Alles auswählen
SetTimer_(WindowID(MainWindow), 1, 100, @TimerCallback())
Du hast ja auch PB zur Verfügung
Ich bin noch nicht zu Hause

Re: Animation trotz Fenster verschieben?
Verfasst: 18.11.2009 15:13
von Josh
ts-soft hat geschrieben:Du hast ja auch PB zur Verfügung
Ich bin noch nicht zu Hause

hmpfff. ohne zu testen würd ich mich nicht traun, eine einzige zeile zu posten

Re: Animation trotz Fenster verschieben?
Verfasst: 18.11.2009 16:58
von ts-soft
Josh hat geschrieben:ts-soft hat geschrieben:Du hast ja auch PB zur Verfügung
Ich bin noch nicht zu Hause

hmpfff. ohne zu testen würd ich mich nicht traun, eine einzige zeile zu posten

Jetzt hab ichs getestet, korrigiert und es läuft wunderbar, ohne Thread!
Ohne Testen haue ich hier ja sonst auch nichts rein, habe aber gehofft das es dadurch weniger
Beispiele mit Threads gibt, die hierbei nicht notwendig und sehr gefährlich sind.
Gruß
Thomas
Re: Animation trotz Fenster verschieben?
Verfasst: 18.11.2009 17:38
von Kaeru Gaman
275
zu deutsch: welches Event testest du da?
Re: Animation trotz Fenster verschieben?
Verfasst: 18.11.2009 17:45
von ts-soft
Da ich die Timerid auf
1 gesetzt haben, teste ich auch die
1
SetTimer_(WindowID(MainWindow),
1, 10, @TimerCallback())
#WM_TIMER interessiert in einem TimerCallback nicht, es wird ja nur dann aufgerufen

Re: Animation trotz Fenster verschieben?
Verfasst: 18.11.2009 18:12
von Kaeru Gaman
argkl
uMsg ist das Event, gell?
... richtig lesen hätte geholfen.