Frame-Frage (ich bin ein Noob)-Noch nicht gelöst

Übersicht BlitzBasic Beginners-Corner

Gehe zu Seite 1, 2, 3, 4  Weiter

Dieses Thema ist gesperrt, du kannst keine Beiträge editieren oder beantworten.

 

petecoolbelab

Betreff: Frame-Frage (ich bin ein Noob)-Noch nicht gelöst

BeitragDi, März 25, 2008 20:05
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi,
hab da mal eine frage:

Ich hab bei Robs BB Kurs den Frame Teil nicht zu 100% verstanden und habs einfach Versucht. Ich habe das hingeschrieben:
Graphics 640, 480, 16, 3
SetBuffer FrontBuffer()

R[color=indigo]epeat
Cls

Bild1 = LoadAnimImage("C:\Dokumente und Einstellungen\Peter\Eigene Dateien\Eigene Bilder\AL_HEroes.png", 100, 180, 0, 11)
DrawImage Bild1, 100, 180, frame = frame + 1
MaskImage Bild1, r255, g255, b255

Flip

Until frame = 11

WaitKey
End

[/color]

Und irgendwie funktioniert das nicht.

Könnt ihr das oben korrigieren und mir helfen?
  • Zuletzt bearbeitet von petecoolbelab am Do, März 27, 2008 20:02, insgesamt einmal bearbeitet
 

Dreamora

BeitragDi, März 25, 2008 20:15
Antworten mit Zitat
Benutzer-Profile anzeigen
so kann das auch net gehen.
Beim bild das frame muss eine Integer sein
du packst aber eine boolean da rein (irgendwas = irgendwas)

du musst frame da rein packen und die erhöhung in einen weiteren schritt. in einem geht net.
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.
 

petecoolbelab

BeitragDi, März 25, 2008 20:16
Antworten mit Zitat
Benutzer-Profile anzeigen
Wie geht des?
(Könntest du mir nen klöeinen Code dazu geben?)

Caesium

Betreff: Re: Frame-Frage (ich bin ein Noob)

BeitragDi, März 25, 2008 20:17
Antworten mit Zitat
Benutzer-Profile anzeigen
bin zwar selbst noch anfänger, dennoch:

wenn du auf den frontbuffer schaltest solltest du das flip in der schleife weglassen, da flip front- und backbuffer tauscht. btw. würde ich dir da sowieso zu BackBuffer() raten.
bilder/animationen/etc. nicht in der schleife laden, das kostet nur unnötig zeit.
das r-g-b bei maskimage weglassen, soll heißen: MaskImage Bild1, 255, 255, 255 anstelle von MaskImage Bild1, r255, g255, b255.

wenn ich mich nicht irre, sollte es jetzt funktionieren - ABER da die schleife seehr oft pro sekude durchlaufen wird, wirst du nichts erkennen können. bau also am besten eine "zeitbegrenzung" ein, dass (z.b. alle 40millisekunden) die frame-variable um eins erhöht wird. schau dir dazu mal den Befehl MilliSecs() an.

gruß,
Caesium

EDIT: war wohl zu langsam, aber habe offensichtlich sowieso den eigentlichen fehler übersehn ~.~
Der Vorteil der Klugheit liegt darin, dass man sich dumm stellen kann. Das Gegenteil ist da schon schwieriger. Smile
  • Zuletzt bearbeitet von Caesium am So, März 30, 2008 13:54, insgesamt einmal bearbeitet
 

Dreamora

BeitragDi, März 25, 2008 20:20
Antworten mit Zitat
Benutzer-Profile anzeigen
petecoolbelab hat Folgendes geschrieben:
Wie geht des?
(Könntest du mir nen klöeinen Code dazu geben?)


Schau dir das tutorial nochmal genau an bzw. arbeite es durch.
Dann siehst du das da sowas wie

<irgendwo>
DrawImage img, x,y, frame

<irgendwo anders>
frame = frame + 1

oder so stehen wird.
Auch die Art wie du farben setzt ist falsch. Die r,g,b in der Hilfe sind parameter die du durch zahlen ersetzen musst.
-> maskimage img, 255,255,255 ohne die r,g,b
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.
 

petecoolbelab

BeitragDi, März 25, 2008 20:22
Antworten mit Zitat
Benutzer-Profile anzeigen
Könnt ihr mir einfach nur einen Code geben?
 

Dreamora

BeitragDi, März 25, 2008 20:24
Antworten mit Zitat
Benutzer-Profile anzeigen
hab ich doch

Mehr als das gibts nicht, du sollst ja auch selbst etwas lernen und programmieren lernt man nunmal nur durch "es tun" und fehler machen die man dann ausbügelt und weiss was falsch war.

mit obigem von mir sollte es ohne probleme möglich sein und sonst robs BB Kurs 1 und 2 nochmal machen, diesmal einfach durcharbeiten statt nur durchlesen, denn Tutorials sind net zum lesen sondern bearbeiten da.
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

Caesium

Betreff: Re: Frame-Frage (ich bin ein Noob)

BeitragDi, März 25, 2008 20:27
Antworten mit Zitat
Benutzer-Profile anzeigen
Code: [AUSKLAPPEN]
Graphics 640, 480, 16, 3
SetBuffer BackBuffer()

Bild1 = LoadAnimImage("C:\Dokumente und Einstellungen\Peter\Eigene Dateien\Eigene Bilder\AL_HEroes.png", 100, 180, 0, 11) ;animation laden

MaskImage Bild1, 255, 255, 255 ;transparenz

Local frame ;variable deklarieren

Repeat
    Cls

    If zeit + 40 < MilliSecs() Then
        zeit = MilliSecs()
        frame = frame + 1
    EndIf

    DrawImage Bild1, 100, 180, frame
   
    Flip
Until frame = 11

WaitKey
End


trotzallem kann ein kompletter code, bzw. ein komplettes beispiel mehr bringen. helfen es zu verstehn, nicht um es abzuschreiben versteht sich. wenn man nochmal genau den aufbau sieht, versteht man es auch eher. diese erfahrung habe ich auch gemacht.

gruß,
caesium
Der Vorteil der Klugheit liegt darin, dass man sich dumm stellen kann. Das Gegenteil ist da schon schwieriger. Smile
 

petecoolbelab

BeitragDi, März 25, 2008 20:51
Antworten mit Zitat
Benutzer-Profile anzeigen
Vielen Dank.

Logischerweiße steht nach einiger Zeit "Image out of Frame"
Kann ich die Ani auch unendlich lang laufen lassen (wenn ja, wie?)?

Rallimen

Sieger des 30-EUR-Wettbewerbs

BeitragDi, März 25, 2008 20:55
Antworten mit Zitat
Benutzer-Profile anzeigen
Code: [AUSKLAPPEN]
If Frame > Frameanzahl then Frame = 0
[BB2D | BB3D | BB+]
 

petecoolbelab

BeitragDi, März 25, 2008 21:12
Antworten mit Zitat
Benutzer-Profile anzeigen
Kann ich auch per KeyHit meinee Ani so einstellen, dass wenn ich "P" drücke meine Ani stehen bleibt?

The_Nici

BeitragDi, März 25, 2008 21:12
Antworten mit Zitat
Benutzer-Profile anzeigen
Einfacher:
frame=frame MOD framelimit
 

petecoolbelab

BeitragDi, März 25, 2008 21:27
Antworten mit Zitat
Benutzer-Profile anzeigen
Kannst mir nen Beispiel code geben?

Rallimen

Sieger des 30-EUR-Wettbewerbs

BeitragDi, März 25, 2008 21:28
Antworten mit Zitat
Benutzer-Profile anzeigen
petecoolbelab hat Folgendes geschrieben:
Kann ich auch per KeyHit meinee Ani so einstellen, dass wenn ich "P" drücke meine Ani stehen bleibt?

Dazu brauchst du eine StatusVar die dann deine Frames nicht weiterschaltet
Code: [AUSKLAPPEN]
if keyhit( [Scancode] ) then pause = pause xor 1;schaltet zwischen 0 und 1
;oder
if keyhit( [Scancode] ) then pause = 1 - pause ;schaltet zwischen 0 und 1


die Pause kannst du dann hier einbauen
Code: [AUSKLAPPEN]
    If zeit + 40 < MilliSecs() Then
        zeit = MilliSecs()
        if pause = 0 then frame = frame + 1
    EndIf
[BB2D | BB3D | BB+]

BladeRunner

Moderator

BeitragMi, März 26, 2008 0:21
Antworten mit Zitat
Benutzer-Profile anzeigen
Zitat:
Kannst mir nen Beispiel code geben?

Sorry wenn ich jetzt mal sehr deutlich werde:
Nein, man lernt programmieren indem man sich für jeden Mist ein Beispiel von anderen liefern lässt.
Also: Setz dich auf deine vier Buchstaben und probier es selbst. Spiel mit den Befehlen rum. Erstelle Testcodes um die Wirkung von den Befehlen zu verstehen und feil solange dran rum bis du sie wirklich verstehst.
Alles andere bringt dir nix.

Und wenn nach dem x-ten Test es immer noch nicht funktioniert (die man btw erst mal durchdenken sollte, sprich, überleg dir was du glaubst was die Befehle in welcher Reihenfolge bewirken. Wenn Fehler auftreten, schau nach wie es zu den Fehlern kam (Stichwort: Debugger)), nutze Google, Blitzbase, Forensuche.)
, dann UND ERST DANN ist der Zeitpunkt gekommen eine Anfrage hier zu stellen. Und die sollte mit Code von dir erfolgen, der das Problem aufzeigt und auch zeigt dass Du dich mit dem Problem beschäftigt hast. Und dann das Ganze bitte noch ordentlich verpackt in eine sinnvolle und durchdachte Frage. Danke.

An dieser Stelle erfolgt mein üblicher Hinweis auf die Onlinehilfe, welcher eigentlich unnötig wäre würden die Neuankömmlinge sich mal die Mühe machen die gepinnten Threads aufmerksam durchzulesen.
Besorg dir die, installier sie und lern aus den Beispielen dort.
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3
Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64
B3D BMax MaxGUI

Stolzer Gewinner des BAC#48, #52 & #92
 

petecoolbelab

BeitragMi, März 26, 2008 19:53
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi hab nochmal ne Frage.
Ich brauche diesmal keinen genauen code.
Habe übrigens schon mit google und hier gesucht und nix gefunden

Mein Code lautet so:


[color=indigo]Graphics 640, 480, 16, 3
SetBuffer BackBuffer()

Bild1 = LoadAnimImage("C:\Dokumente und Einstellungen\Peter\Eigene Dateien\Eigene Bilder\AL_HEroes2.png", 100, 180, 0, 11) ;animation laden

MaskImage Bild1, 255, 255, 255 ;transparenz

Local frame ;variable deklarieren
Repeat

For Bild1 = 0 To 640 Step 20 Cls

If zeit + 120 < MilliSecs() And pause = 0Then
zeit = MilliSecs()
frame = frame + 1
EndIf
If frame =10 Then
frame = 1
EndIf


If KeyHit(25) Then
pause = pause Xor 1;schaltet zwischen 0 und 1
EndIf

If pause = 0 Then
frame = frame

ElseIf pause = 1 Then
frame = frame = 1
EndIf
Flip

Next
Until KeyHit(25
)
WaitKey
End[/color]

Bin mir ziemlich sicher dass es an dem For Bild1= 0 to640 Step 20
liegt. Ihr müsst mir diesmal aber keinen genauen Code geben. (Es wäre jedoch nett). Ein Tipp würde aber auch schon reichen (wenn es den Moderatoren so recht ist)

Danke

Rallimen

Sieger des 30-EUR-Wettbewerbs

BeitragMi, März 26, 2008 20:14
Antworten mit Zitat
Benutzer-Profile anzeigen
Zitat:
Hi hab nochmal ne Frage.

ich habe gesucht aber wo ist die Frage bzw. wo liegt das Problem

Code: [AUSKLAPPEN]
    ;Diese Schleife ist doch total überflüssig
    For Bild1 = 0 To 640 Step 20 ;die Var Bild1 ist doch ein Bild und sollte demnach nicht als Schleifenzähler herhalten
    ;da du dir das laden des Bildes dann auch sparen kannst
    Cls
        If zeit + 120 < MilliSecs () And pause = 0 Then
            zeit = MilliSecs ()
            frame = frame + 1
        EndIf
        If frame = 10 Then
            frame = 1
        EndIf
        If KeyHit (25) Then
            pause = pause Xor 1;schaltet zwischen 0 und 1
        EndIf
        If pause = 0 Then
            frame = frame ; ist auch über macht ja nichts
         ElseIf pause = 1 Then
            frame = frame = 1 ; 2x "=" geht nicht sollte wohl "+" sein
        EndIf
        Flip
    Next
Until KeyHit (25)
WaitKey
End

Vieleicht hilft dir das !
[BB2D | BB3D | BB+]
 

petecoolbelab

BeitragMi, März 26, 2008 20:20
Antworten mit Zitat
Benutzer-Profile anzeigen
Könntest du mir das event. genauer geben (ein code wäre gut aber nicht nötig-trotzdem könntest du mir nen code gebn)

BladeRunner

Moderator

BeitragMi, März 26, 2008 21:15
Antworten mit Zitat
Benutzer-Profile anzeigen
Da wir immer noch nicht wissen wo dein Problem liegt wird das schwierig. Wink
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3
Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64
B3D BMax MaxGUI

Stolzer Gewinner des BAC#48, #52 & #92

hectic

Sieger des IS Talentwettbewerb 2006

BeitragMi, März 26, 2008 21:20
Antworten mit Zitat
Benutzer-Profile anzeigen
Tipp:

Wenn du Code: [AUSKLAPPEN]
Bild1 = LoadAnimImage...
machst.

Dann solltest du das Handle (in diesem Fall) Bild1 nicht durch Code: [AUSKLAPPEN]
For Bild1 = 0 To 640 Step 20 Cls
wieder überschreiben.

Ein Handle ist eine variable Nummer die vom System per Laufzeit erstellt wird. Diese Nummer ist einmalig und gibt im grunde eine Adresse zu einem Bild, Sound oder irgend was anderes wieder. Mit der For/Next -Schleife würde die vergebene Nummer wieder gelöscht sein. Ausserdem kannst/solltest du nicht zwei oder mehr Befehle hintereinander reihen. Schreibe sie untereinander und wenn unbedingt nicht anders erwünscht durch ein '':'' getrennt.

Benutze relative Pfade, keine absoluten.
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D

Gehe zu Seite 1, 2, 3, 4  Weiter

Dieses Thema ist gesperrt, du kannst keine Beiträge editieren oder beantworten.


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group