SpecialFX()

Anfängerfragen zum Programmieren mit PureBasic.
Janno
Beiträge: 99
Registriert: 27.10.2006 21:38
Wohnort: Niedersachsen

SpecialFX()

Beitrag von Janno »

habe ein problem mit dem specialfx() befehl
sobald ich den specialfx() befehl einbaue läuft alles was sich bewegen soll langsamer ab...
hier ein beispiel:

Code: Alles auswählen

InitSprite()
InitKeyboard()

OpenScreen(800,600,16,"")
  LoadSprite(1,"Bilder\Cursor.bmp",0)
  LoadSprite(2,"Bilder\Back.bmp",0)
  
Cursorx = 377
Cursory = 275
  
Repeat
FlipBuffers()
StartSpecialFX()
ClearScreen(0)
ExamineKeyboard()

DisplayTranslucentSprite(2,0,0,110)
DisplayTransparentSprite(1,Cursorx,Cursory)

If KeyboardPushed(#PB_Key_Left)
  Cursorx-4
ElseIf KeyboardPushed(#PB_Key_Right)
  Cursorx+4
EndIf

If KeyboardPushed(#PB_Key_Up)
  Cursory-4
ElseIf KeyboardPushed(#PB_Key_Down)
  Cursory+4
EndIf

StopSpecialFX()
Until KeyboardPushed(#PB_Key_Escape)
Was mache ich falsch?
Benutzeravatar
#NULL
Beiträge: 2238
Registriert: 20.04.2006 09:50

Beitrag von #NULL »

die keyboard-sachen haben in dem block eigentlich nichts zu suchen. der perfomance einbruch wird einfach an der größe des sprites 2 liegen. dem namen nach ist es ja wohl sehr groß. wieso willst du denn den hintergund als TransLucidSprite darstellen?, das ist sehr ungünstig.

Code: Alles auswählen

InitSprite()
InitKeyboard()

OpenScreen(800,600,32,"")

;LoadSprite(1,"Bilder\Cursor.bmp",0)
;LoadSprite(2,"Bilder\Back.bmp",0)

LoadSprite(1,"c:\test\test32.bmp",0)
;LoadSprite(2,"c:\test\test32.bmp",0)
CreateSprite(2, 800,600,0)
 
Cursorx = 377
Cursory = 275
 
Repeat
  FlipBuffers()
  ExamineKeyboard()
  If KeyboardPushed(#PB_Key_Left)
    Cursorx-4
  ElseIf KeyboardPushed(#PB_Key_Right)
    Cursorx+4
  EndIf
  If KeyboardPushed(#PB_Key_Up)
    Cursory-4
  ElseIf KeyboardPushed(#PB_Key_Down)
    Cursory+4
  EndIf
  
  StartSpecialFX()
    ClearScreen(0)
    DisplayTranslucentSprite(2,0,0,110)
    DisplayTransparentSprite(1,Cursorx,Cursory)
  StopSpecialFX()
  
  FR+1
  If ElapsedMilliseconds()>FRt
    FR$=Str(FR) 
    FR=0
    FRt=ElapsedMilliseconds()+1000
  EndIf
  StartDrawing(ScreenOutput())
    DrawText(100,100,FR$,$00ff00,0)
  StopDrawing()
Until KeyboardPushed(#PB_Key_Escape)
my pb stuff..
Bild..jedenfalls war das mal so.
Janno
Beiträge: 99
Registriert: 27.10.2006 21:38
Wohnort: Niedersachsen

Beitrag von Janno »

#NULL hat geschrieben: wieso willst du denn den hintergund als TransLucidSprite darstellen?, das ist sehr ungünstig.
war nur ein beispiel um mein problem zu zeigen
und dein code hilft mir nicht wirklich... ist alles wie vorher
Benutzeravatar
#NULL
Beiträge: 2238
Registriert: 20.04.2006 09:50

Beitrag von #NULL »

hab's :D : du mußt natürlich bei load die #PB_Sprite_Memory -flag setzen. [ich hatte SpecialFX bisher noch nicht benutzt]

Code: Alles auswählen

InitSprite()
InitKeyboard()

OpenScreen(800,600,32,"")

;LoadSprite(1,"Bilder\Cursor.bmp",0)
;LoadSprite(2,"Bilder\Back.bmp",0)

LoadSprite(1,"c:\test\test32.bmp",#PB_Sprite_Memory)
;LoadSprite(2,"c:\test\test32.bmp",#PB_Sprite_Memory)
CreateSprite(2, 800,600,#PB_Sprite_Memory)
 
Cursorx = 377
Cursory = 275
 
Repeat
  FlipBuffers()
  ExamineKeyboard()
  If KeyboardPushed(#PB_Key_Left)
    Cursorx-4
  ElseIf KeyboardPushed(#PB_Key_Right)
    Cursorx+4
  EndIf
  If KeyboardPushed(#PB_Key_Up)
    Cursory-4
  ElseIf KeyboardPushed(#PB_Key_Down)
    Cursory+4
  EndIf
 
  StartSpecialFX()
    ClearScreen(0)
    DisplayTranslucentSprite(2,0,0, 255)
  StopSpecialFX()
  
  DisplayTransparentSprite(1,Cursorx,Cursory)
 
  FR+1
  If ElapsedMilliseconds()>FRt
    FR$=Str(FR)
    FR=0
    FRt=ElapsedMilliseconds()+1000
  EndIf
  StartDrawing(ScreenOutput())
    DrawText(100,100,FR$,$00ff00,0)
  StopDrawing()
Until KeyboardPushed(#PB_Key_Escape)
my pb stuff..
Bild..jedenfalls war das mal so.
Janno
Beiträge: 99
Registriert: 27.10.2006 21:38
Wohnort: Niedersachsen

Beitrag von Janno »

stimmt.... danke!! jetz funzts
Antworten