Seite 1 von 1

Sprites wieder wegnehmen?

Verfasst: 24.05.2006 19:06
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?

Verfasst: 24.05.2006 19:15
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.

Verfasst: 24.05.2006 19:17
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   

Verfasst: 24.05.2006 22:43
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

Verfasst: 24.05.2006 22:45
von roherter
Sprite3d benutzen. :o

Verfasst: 24.05.2006 22:46
von Svking
äh öh lol wie jetzt? wie benutzt man denn sprite3d?

Verfasst: 24.05.2006 22:49
von roherter
Ergebnis = CreateSprite3D(#Sprite3D, #Sprite)

Alles andere kannste in der hilfe nachlesen :o :shock:

Verfasst: 24.05.2006 22:50
von Svking
ok ^^ ich versuch mal mein glück damit thx :)