Animation trotz Fenster verschieben?

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
X360 Andy
Beiträge: 1206
Registriert: 11.05.2008 00:22
Wohnort: Bodensee
Kontaktdaten:

Re: Animation trotz Fenster verschieben?

Beitrag 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. :wink:
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

Code: Alles auswählen

   ClearScreen(0)
Mit der Meldung "Zeile 47: There is no open Screen"
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: Animation trotz Fenster verschieben?

Beitrag 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 :twisted:
Zuletzt geändert von ts-soft am 18.11.2009 17:03, insgesamt 2-mal geändert.
Benutzeravatar
edel
Beiträge: 3667
Registriert: 28.07.2005 12:39
Computerausstattung: GameBoy
Kontaktdaten:

Re: Animation trotz Fenster verschieben?

Beitrag von edel »

dx ist es ziemlich egal in welchem thread es laeuft. Es darf dann aber auch nur in einem laufen.
Benutzeravatar
Josh
Beiträge: 1028
Registriert: 04.08.2009 17:24

Re: Animation trotz Fenster verschieben?

Beitrag von Josh »

@ts-soft
so gehts bei mir besser :P

Code: Alles auswählen

SetTimer_(WindowID(MainWindow), 1, 100, @TimerCallback())
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: Animation trotz Fenster verschieben?

Beitrag 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 :mrgreen:
Ich bin noch nicht zu Hause :wink:
Benutzeravatar
Josh
Beiträge: 1028
Registriert: 04.08.2009 17:24

Re: Animation trotz Fenster verschieben?

Beitrag von Josh »

ts-soft hat geschrieben:Du hast ja auch PB zur Verfügung :mrgreen:
Ich bin noch nicht zu Hause :wink:
hmpfff. ohne zu testen würd ich mich nicht traun, eine einzige zeile zu posten :cry:
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: Animation trotz Fenster verschieben?

Beitrag von ts-soft »

Josh hat geschrieben:
ts-soft hat geschrieben:Du hast ja auch PB zur Verfügung :mrgreen:
Ich bin noch nicht zu Hause :wink:
hmpfff. ohne zu testen würd ich mich nicht traun, eine einzige zeile zu posten :cry:
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
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Re: Animation trotz Fenster verschieben?

Beitrag von Kaeru Gaman »

Code: Alles auswählen

  If uEventID = 1
:?:

Code: Alles auswählen

Debug #WM_TIMER
275
:?: :?:

zu deutsch: welches Event testest du da?
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: Animation trotz Fenster verschieben?

Beitrag 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 :wink:
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Re: Animation trotz Fenster verschieben?

Beitrag von Kaeru Gaman »

argkl Bild

uMsg ist das Event, gell?

... richtig lesen hätte geholfen.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Antworten