Flimmern bei Bildern

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

the.fellowship

Betreff: Flimmern bei Bildern

BeitragDi, Mai 10, 2005 21:22
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi!
Ich habe ein Problem!
Ins BB geladene Bilder flimmern beim Abspielen jedes mal so.
Hat das was mit der Menge der Pixel der Bilder zutun?
Oder etwas mit den Puffern?
Könnt ihr mir helfen?
Danke!
 

noir

BeitragDi, Mai 10, 2005 21:24
Antworten mit Zitat
Benutzer-Profile anzeigen
schau dir mal in der onlinehiflfe:

BlitzBasic: [AUSKLAPPEN]
SetBuffer, BackBuffer()  und Flip an.



dann wird dein bild erst komplett sozusagen im hintergrund gezeichnet dann mit flip umgeschalten, sodass du das bild siehst. so wird ein flimmern vermieden.
Fragt und man wird euch helfen

Das Alternativ BlitzBasic-Forum: FreeCoder
Einfach chatten: BlitzChat
Code&Text schnell und einfach pasten: FreePasting

skey-z

BeitragDi, Mai 10, 2005 21:51
Antworten mit Zitat
Benutzer-Profile anzeigen
und am besten nur ein cls benutzen, habe mal den fehler gemacht und für jedes viewport ein cls benutzt, danach flimmerte es auch.
Awards:
Coffee's Monatswettbewerb Feb. 08: 1. Platz
BAC#57: 2. Platz
Twitter
 

the.fellowship

BeitragMo, Mai 30, 2005 13:03
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi...
Ich schreibe diesen Thread in dieses Thema...da es am besten hinein passt...(glaube ich)

Ich habe eine Demo version von BB. Wenn ich ein Spiel abspiele, funktioniert alles perfekt; nach ca. zehn sekunden fangt alles an zu "RUCKELN" Evil or Very Mad
Hat das mit der DEMO zutun (dass man die Demo version von BB nicht richtig abspielen kann, und man sich die ORIGINALE version kaufen sollte)
oder liegt es an etwas Anderem?
 

gamble

BeitragMo, Mai 30, 2005 13:08
Antworten mit Zitat
Benutzer-Profile anzeigen
Zeig uns mal deinen Code, vielleicht lädst du ja in jedem Schleifendurchgang ein 10 MB Bild in den Speicher Wink
 

the.fellowship

BeitragMo, Mai 30, 2005 13:19
Antworten mit Zitat
Benutzer-Profile anzeigen
gamble hat Folgendes geschrieben:
Zeig uns mal deinen Code, vielleicht lädst du ja in jedem Schleifendurchgang ein 10 MB Bild in den Speicher Wink

Denkst du dass es etwas mit der Bildgröße zutun hat?
Das könnte ich mir nicht vorstellen; (denn mein CPU ist nicht der schlechteste.... 2,8 GHZ und 512 MB RAM) ich habe einmal ein kleines Spiel programmiert (einen Hubschrauber mit Paint gemalen, er hatte nur 400 KB) bei dem man mit dem Hubschrauber landen musste (auf einer plattform; nur 300 KB) Und es hat gut funktioniert, nach ca. 10 sekunden hat alles geruckelt... Crying or Very sad Desswegen habe ich bis jetzt noch nie ein Spiel beenden können, da es einfach keinen Spaß macht......(bei so einem stocken/ruckeln)

skey-z

BeitragMo, Mai 30, 2005 13:48
Antworten mit Zitat
Benutzer-Profile anzeigen
wie schon gesagt, zeig uns mal deinen code.

an der Demo wird es nicht liegen, eher an einem Fehler, den du im Programm machst, wi gamble schon sagte, zb bei jedem schleifendurchlauf das Bild laden, kann eigentlich als einzige möglichkeit sein, warum es nach ein paar sekunden anfängt zu ruckeln, auch wenn du nen guten cpu hast, wenn du die Bilder immer wieder in den Speicher lädst, ist dieser auch irgendwann mal voll.
Awards:
Coffee's Monatswettbewerb Feb. 08: 1. Platz
BAC#57: 2. Platz
Twitter
 

E. Urbach

ehemals "Basicprogger"

BeitragMo, Mai 30, 2005 14:20
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich hatte sowas auch schon mal. Das war aber ein
anderer Zusammenhang:
Da hatte ich im Type-Field mehrere Bilder gehabt und
irgendwie mit ImageBuffer herumgespielt.

Aber wie gesagt: Ohne Code, kein Brot!
The box said, "Requires Windows XP or better", so I installed Ubuntu | Linux is NOT Windows
Flua :: Profiler für BB und BMax :: Partikel-Engine für BMax :: Lyphia-Projekt Quellcode (BMax) :: Automatische Parallelisierung :: Meine Musik
 

the.fellowship

BeitragSa, Jun 04, 2005 18:48
Antworten mit Zitat
Benutzer-Profile anzeigen
; Black Hawk, Hauptprogramm
Graphics 800, 600
AppTitle "Mission: Black Hawk"
SetBuffer BackBuffer()


titel = LoadImage("Images/starthawk.jpg")
DrawImage titel,120,30

fntArialI = LoadFont(Arial,32,False,False,False)


SetFont fntArialI
Text 200,200,"NAME: Mission Black Hawk"
Text 200,280,"STEUERUNG: Mit den Pfeiltasten"
Text 200,360,"START: bei Tastendruck"
Print
FreeFont fntArialI
WaitKey
Cls


; Unterprogramm
Graphics 800, 600
AppTitle "Mission: Black Hawk"
SetBuffer BackBuffer()

bild1 = LoadImage("Images/figure1.jpg")
bild2 = LoadImage("Images/figure2.jpg")

Repeat
Cls

O=580
P=550

If KeyDown(200) = 1 Then Y = Y - 2
If KeyDown(208) = 1 Then Y = Y + 2
If KeyDown(205) = 1 Then X = X + 2
If KeyDown(203) = 1 Then X = X - 2

Delay 1

; Kollidieren
Arial = LoadFont(Arial,32,True,False,True)
SetFont Arial
If ImagesOverlap (bild1, X, Y, bild2, O,P) Then
.success
Locate 265,280
Print "Mission erfolgreich!"
Delay 2000
Goto ende
EndIf
; /Kollidieren


; Rand
If X < 0 Then X = 0
If X > 595 Then X = 595
If Y < 0 Then Y = 0
If Y > 500 Then Y = 500
; /Rand



; CHEAT Smile
;;;;;;;;;;;;;;;;;;;;;;;;;
If KeyDown(30) And KeyDown(31) Then
Goto success
EndIf
;;;;;;;;;;;;;;;;;;;;;;;;;


DrawImage bild1,X,Y
DrawImage bild2,O,P
Delay 1

Flip
Until KeyDown(1)

.ende
; Ende
Graphics 800,600
AppTitle "Mission: Black Hawk"
Delay 900
arial = LoadFont(arial,32,True,False,True)
SetFont Arial
Text 265, 280,"Danke fürs Spielen!"
Delay 2000
End
 

hitokiri

BeitragSa, Jun 04, 2005 19:50
Antworten mit Zitat
Benutzer-Profile anzeigen
du lädst bei jedem schleifendurchlauf die arial font neu, setzt sie und freest sie aber nich wieder, bei keiner framebegrenzung und deiner cpu würde ich mal von mindestens 100 frames per sec ausgehen, font so knapp 40 bis 50kb macht nach 10 minuten nach adam riese:
circa 250mb Razz
kein wunder dasses ruckelt, er fängt an die swap datei zu vergrössern.
lade die font einmal am anfang des startens des subprogramms vor der schleife oder erst dann wenn auch die if abfrage true ist, also wirklich eine kollision stattfindet, und free sie dann wieder wenn du dir um speicher sorgen machst, aber eine font im speicher, 50 kb, kannste auch einfach am anfang laden und bis zum spielende geladen lassen.
 

the.fellowship

BeitragSa, Jun 04, 2005 21:53
Antworten mit Zitat
Benutzer-Profile anzeigen
DANKE!!!!!
Jetzt funktioniert es perfekt!!!
Jetzt werde ich weiter machen! (Feinde u.s.w)

Alfadur

BeitragSa, Jun 04, 2005 21:56
Antworten mit Zitat
Benutzer-Profile anzeigen
yeah, liegt wohl am font. überhaupt solltest du dir nochmal gedanken um die struktur deines programms machen...
grundsätzlich gehört alles was mit load- anfängt außerhalb eine schleife...das du 3mal, für jeden unterschiedlichen screen graphics, setbuffer, apptitle, loadfont etc machst ist auch quark ... auf delay solltest du auch verzichten, wenns zu schnell geht, schau dir waittimer() an ... ach, ich hatte gerade nix besseres zu tun und hab dir das mal gemacht ... das solltest du verstehen, die bilder mußte ich ersetzen, das kriegst du aber sicher wieder hin ...

BlitzBasic: [AUSKLAPPEN]

Graphics 800, 600
AppTitle \"Mission: Black Hawk\"

;bilder erstellen
Global img_titel = CreateImage(300,100):SetBuffer ImageBuffer(img_titel):ClsColor(255,0,0):Cls
Global img_bild1 = CreateImage(100,100):SetBuffer ImageBuffer(img_bild1):ClsColor(255,255,0):Cls
Global img_bild2 = CreateImage(1300,100):SetBuffer ImageBuffer(img_bild2):ClsColor(0,0,255):Cls
ClsColor(0,0,0)

SetBuffer BackBuffer()

;font nur einmal laden
Global fnt_Arial = LoadFont(Arial,32,False,False,False)
SetFont fnt_Arial

Global O=580
Global P=550

Global X,Y

;diese gamestates sind wichtig, siehst du dann unten. damit wechseln wir zwischen den screens...
Global gamestate=0
Const game_startscreen=0
Const game_main=1
Const game_success=2
Const game_ende=3

;hauptprogramm
While Not KeyHit(1)

Cls

Select gamestate
Case game_startscreen
start_screen()
Case game_main
main()
Case game_success
success()
Case game_ende
ende()
End Select

Flip 0

Wend

;hier kommen die einzelnen funktionen, die bei dem entsprechenden gamestate aufgerufen werden
;bei entsprechendem tastendruck wird zu nem anderen gamestate umgewechselt...
Function start_screen()
DrawImage img_titel,120,30
Text 200,200,\"NAME: Mission Black Hawk\"
Text 200,280,\"STEUERUNG: Mit den Pfeiltasten\"
Text 200,360,\"START: bei Tastendruck Leertaste\"
If KeyHit(57) Then gamestate=game_main:FlushKeys()
End Function

Function main()
DrawImage img_bild1,X,Y
DrawImage img_bild2,O,P
If KeyDown(200) = 1 Then Y = Y - 2
If KeyDown(208) = 1 Then Y = Y + 2
If KeyDown(205) = 1 Then X = X + 2
If KeyDown(203) = 1 Then X = X - 2
If X < 0 Then X = 0
If X > 595 Then X = 595
If Y < 0 Then Y = 0
If Y > 500 Then Y = 500
If ImagesOverlap (img_bild1, X, Y, img_bild2, O,P) Then gamestate=game_success
If KeyDown(30) And KeyDown(31) Then gamestate=game_success
End Function

Function success()
Text 265,280, \"Mission erfolgreich! - Enter drücken\"
If KeyHit(28) Then gamestate=game_ende:FlushKeys()
End Function

Function ende()
Text 265, 280,\"Danke fürs Spielen! - Esc drücken\"
If KeyHit(1) Then End
End Function




edit: noch ein paar tipps. vergiß am besten locate und print im graphics modus, dafür hast du text. wenn du mal weiter bist, dann vergiß auch text und erstell dir nen eigenen bitmap font... und wie du siehst, benutz funktionen und lass das goto sein ...
A Cray is the only computer that runs an endless loop in less than four hours.
 

the.fellowship

BeitragSo, Jun 05, 2005 9:26
Antworten mit Zitat
Benutzer-Profile anzeigen
DANKE!!!

Triton

BeitragSo, Jun 05, 2005 16:02
Antworten mit Zitat
Benutzer-Profile anzeigen
Arrow Verschoben ins Beginner-Forum..
Coding: silizium-net.de | Portfolio: Triton.ch.vu

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group