Sprites wieder wegnehmen?

Anfängerfragen zum Programmieren mit PureBasic.
Svking
Beiträge: 48
Registriert: 23.09.2005 15:19
Kontaktdaten:

Sprites wieder wegnehmen?

Beitrag von Svking »

Hallo,

wie genau kann ich sprites wieder vom screen nehmen?
wenn ich jetzt z.b. das habe

Code: Alles auswählen

DisplayTransparentSprite(1,0,0)
und ich das späer weider mit einem command wegbekommen will, wie geht das?
Das Ende meines Lebens:
If leben = 0
End
Endif
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

grundverständnis:

du zeichnest in jedem frame das, was du anzeigen willst.
ein sprite ist nicht irgendwie ein objekt,
das ist gleichsam ein "pinsel", mit dem du die pixels auf den screen zeichnest.
deshalb ist auch die zeichenreihenfolge wichtig, welches sprite welches überdeckt, nicht die nummern der sprites.

wenn du später etwas nicht anzeigen willst, zeichnest du einfach nicht.
Zuletzt geändert von Kaeru Gaman am 24.05.2006 19:21, insgesamt 1-mal geändert.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
bobobo
jaAdmin
Beiträge: 3873
Registriert: 13.09.2004 17:48
Kontaktdaten:

Beitrag von bobobo »

??

Das Sprite wird doch sicher in einer Schleife in der unter anderm
auch FlipBuffers() steht per DisplayTransparentSprite(...) zur
Darstellung aufgerufen ..
Wenn Du in dieser Schleife den Aufruf DisplayTransparentSprite(...) weglässt, wird das Sprite nicht dargestellt.

Ansonsten siehe PB_Hilfe Sprite(& Screen)
Ein Beispiel in dem mit den Shifttasten links und rechts ein Sprite
an und ausgeknipst werden kann.

Code: Alles auswählen


;PB4

If InitSprite() = 0 Or InitKeyboard() = 0
  MessageRequester("Error", "Can't open DirectX 7 or later", 0)
  End
EndIf

If OpenWindow(0,0,0,410,310,"A screen in a window... using gadget and sprites!",#PB_Window_SystemMenu|#PB_Window_SizeGadget|#PB_Window_ScreenCentered)
  If CreateGadgetList(WindowID(0))
    ButtonGadget(1,340, 10,60,20,"Button 1")
    ButtonGadget(2,340, 40,60,20,"Button 2")
    ButtonGadget(3,340, 70,60,20,"Button 3")
    TextGadget  (4,340,110,60,30,"")
  EndIf

  If OpenWindowedScreen(WindowID(0),5,5,320,300,0,0,0)
    CreateSprite(0,20,20)
    ; Draw some red line on our sprite
    If StartDrawing(SpriteOutput(0))
      FrontColor(RGB(255,0,0))
      For k = 0 To SpriteHeight(0) Step 2
        Line(0, k, SpriteWidth(0), 0)
      Next
      StopDrawing()
    EndIf
    CopySprite(0,1)
    CopySprite(0,2)
  Else
    MessageRequester("Error", "Can't open windowed screen!", 0)
    End
  EndIf

EndIf

direction = 1
playerX = 1
playerY = 1
sp=1

Repeat
  Event.l = WindowEvent()    
  
  If Event = #PB_Event_Gadget
    ; do the normal application stuff here...
    Gadget  = EventGadget()  

    Select Gadget
      Case 1, 2, 3
        SetGadgetText(4,"Button "+Str(Gadget)+" pressed.")
    EndSelect
  Else
    ; do the sprite & screen stuff here...
    FlipBuffers()       ; Inverse the buffers (the back become the front (visible)... and we can do the rendering on the back
    ExamineKeyboard()
    If KeyboardPushed(#PB_Key_Up)    And playerY > 0   : playerY -3 : EndIf  
    If KeyboardPushed(#PB_Key_Down)  And playerY < 280 : playerY +3 : EndIf  
    If KeyboardPushed(#PB_Key_Left)  And playerX > 0   : playerX -3 : EndIf  
    If KeyboardPushed(#PB_Key_Right) And playerX < 300 : playerX +3 : EndIf  
    
    If KeyboardPushed(#PB_Key_RightShift)    And SP=1:SP=0 : EndIf  
    If KeyboardPushed(#PB_Key_LeftShift)     And SP=0:SP=1 : EndIf  
    
    ; Clear the screen and draw our sprites
    ClearScreen(RGB(0,0,0))
    ClipSprite(0, 0, 0, x, x/8)
    DisplaySprite(0, x, 100)
    DisplaySprite(1, x, x)
    DisplaySprite(0, 300-x, x)
    If sp=1
      DisplaySprite(2, playerX, playerY)
    EndIf
    x + direction
    If x > 300 : direction = -1 : EndIf   ; moving back to the left with negative value
    If x < 0   : direction =  1 : EndIf   ; moving to the right with positive value
    
    Delay(1)
  EndIf
Until Event = #PB_Event_CloseWindow Or KeyboardPushed(#PB_Key_Escape)
End   
‮pb aktuel 6.2 windoof aktuell und sowas von 10
Ich hab Tinnitus im Auge. Ich seh nur Pfeifen.
Svking
Beiträge: 48
Registriert: 23.09.2005 15:19
Kontaktdaten:

Beitrag von Svking »

ah ok danke x) dann is das ja voll einfach :D

mir is aber derweil aber noch ne frage gekommen (bzw. 2 fragen)

Wie zooms man sprites und wie rotiert man sie? kann mir das auch jemand erklären?

-- benutze PB 3.94
Zuletzt geändert von Svking am 24.05.2006 22:45, insgesamt 1-mal geändert.
Das Ende meines Lebens:
If leben = 0
End
Endif
Benutzeravatar
roherter
Beiträge: 1407
Registriert: 10.04.2005 18:58
Kontaktdaten:

Beitrag von roherter »

Sprite3d benutzen. :o
Purebasic 5.0 32bit und 64 bit

I'm back from hell
Svking
Beiträge: 48
Registriert: 23.09.2005 15:19
Kontaktdaten:

Beitrag von Svking »

äh öh lol wie jetzt? wie benutzt man denn sprite3d?
Das Ende meines Lebens:
If leben = 0
End
Endif
Benutzeravatar
roherter
Beiträge: 1407
Registriert: 10.04.2005 18:58
Kontaktdaten:

Beitrag von roherter »

Ergebnis = CreateSprite3D(#Sprite3D, #Sprite)

Alles andere kannste in der hilfe nachlesen :o :shock:
Purebasic 5.0 32bit und 64 bit

I'm back from hell
Svking
Beiträge: 48
Registriert: 23.09.2005 15:19
Kontaktdaten:

Beitrag von Svking »

ok ^^ ich versuch mal mein glück damit thx :)
Das Ende meines Lebens:
If leben = 0
End
Endif
Antworten