Seite 1 von 1

There is no current 2D drawing object

Verfasst: 02.08.2010 20:29
von mbuettner
Guten Abend @all,

Ich habe mal wieder ein Problem mit 3.3. Ich will mal ein Game of Life-Spiel programmieren, doch leider bringt er mir nach dem zeichnen des Spielfeldes immer die Meldung:
Error at line 13: There is no current 2D drawing object.
Anscheinend kommt die Meldung, weil in Zeile 50 die Prozedur Spielfeld() aufgerufen wird, allerdings nur wenn der Fensterinhalt neu gezeichnet werden muss, oder wird #PB_Event_Repaint auch beim ersten Zeichnen ausgeführt.

Code: Alles auswählen

; Game of Life
; (c) by Markus Büttner
Structure Feld
  id.l
  xkoor.l
  ykoor.l
  zustand.l
EndStructure  

Dim Felder.Feld(499)

Procedure LineBox(id,x1,y1,x2,y2)
  LineXY(x1,y1,x2,y1)
  LineXY(x1,y1,x1,y2)
  LineXY(x2,y1,x2,y2)
  LineXY(x1,y2,x2,y2)
EndProcedure

Procedure Spielfeld()
  For x = 1 To 500 Step 20
    Debug "X: " + Str(x)
    For y = 1 To 400 Step 20 
      LineBox(x/20*y/20,x,y,x+20,y+20)
      Debug "Y: " + Str(y)
      Debug "Y/20+1:" + Str(y/20+1)
    Next y
  Next x
EndProcedure

If OpenWindow(0,0,0,505,500,#PB_Window_SystemMenu,"Game of Life")
  If StartDrawing(WindowOutput())
    Spielfeld()
    StopDrawing()
  Else
    MessageRequester("Game of Life","Kann nicht zeichnen",0) : End
  EndIf
  For x = 1 To 25
    For y = 1 To 20
      Felder(x*y)\id = x*y
      Felder(x*y)\xkoor = x
      Felder(x*y)\ykoor = y
      Felder(x*y)\zustand = 0
    Next y
  Next x 
  Repeat
    Select WaitWindowEvent()
      Case #PB_Event_CloseWindow
        Quit = 1
      Case #PB_Event_Repaint
        Spielfeld()
    EndSelect
  Until Quit = 1
EndIf
End
Euer Hilfesuchender
Markus

Re: There is no current 2D drawing object

Verfasst: 02.08.2010 20:56
von HeX0R
Du musst natürlich erst wieder ein StartDrawing ausführen, bevor du Zeichenoperationen ausführen kannst.

Am besten packst du das gleich mit in die Spielfeld-Prozedur.