Breite eines Videos festlegen

Übersicht BlitzBasic Beginners-Corner

Gehe zu Seite 1, 2, 3  Weiter

Neue Antwort erstellen

 

Bobo2040

Betreff: Breite eines Videos festlegen

BeitragMi, Aug 21, 2013 20:08
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi Leute Very Happy
Ich möchte um es Optisch schöner zu machen ein Video einer Explosion benutzen wenn ein Gegner zerstört wird...
Das einbinden klappt auch nur ist das Video zu groß... kann man da irgendwie die Breite festlegen ?
Und die Höhe? Und kann ich, da aus irgendeinem grund nach der Convertierung von .flv zu .avi der Hintergrund nicht mehr Transparent ist ihn irgendwie wieder Transparent machen ?
Hier ist mal mein bisheriger Code vllt. gibts ja was dran auszusetzen Very Happy
BlitzBasic: [AUSKLAPPEN]

Function Alien()
If AiLog=1 Then
AiHP=AiHP-Schaden
If AiHP > 1 Then
Color 205,0,0
Oval 239-KameraX,224-KameraY,100,100,0
Oval 241-KameraX,226-KameraY,98,98,0
Oval 239-KameraX,224-KameraY,96,96,0
EndIf
If AiHP < 1 Then
AiImage=AiDown
DrawMovie Explosion,250-KameraX,250-KameraY
EndIf
EndIf
End Function


Mfg

Tennisball

BeitragMi, Aug 21, 2013 20:18
Antworten mit Zitat
Benutzer-Profile anzeigen
Die Lösung lautet, nicht Videos dafür zu benutzen.
Stattdessen benutze eine einfache Animation (aus einer Bilddatei geladen mit z.B. LoadAnimImage).
 

Bobo2040

BeitragMi, Aug 21, 2013 20:19
Antworten mit Zitat
Benutzer-Profile anzeigen
Hmm okay Very Happy
Aber die Explosion hat mehrere Bilder (60) Und ich habe die auch alle aber das stopft doch dann den Ram Mega voll oder nicht ?

Tennisball

BeitragMi, Aug 21, 2013 20:21
Antworten mit Zitat
Benutzer-Profile anzeigen
Und wo landet das Video wenn nicht im RAM...?
 

Bobo2040

BeitragMi, Aug 21, 2013 20:24
Antworten mit Zitat
Benutzer-Profile anzeigen
Ja Very Happy
Aber es ist doch als Videoformat nicht so groß wie etliche Bilder Wink
Und ausserdem ist das sooo viel arbeit die Ganzen Bilder zu Includen Sad

EDIT:
Bin mal eben auf die Idee gekommen nen .gif zu nehmen Wink
1. Frage kann ich ein .gif nachträglich Transparent machen ?

Tennisball

BeitragMi, Aug 21, 2013 20:32
Antworten mit Zitat
Benutzer-Profile anzeigen
Wenn du Videos benutzt müsstest du:
- ...das Video immer wieder neuladen, siehe OpenMovie.
- ...für Transparenz das Video eh zunächst in ein Image rendern, um dieses dann zu maskieren.

Da kannst du auch gleich ein Image mit Animation nutzen.
Es gibt außerdem etliche Tools (Man kann sich auch mit wenig Aufwand selbst eines schreiben), die Einzelbilder zu einem Strip zusammenfügen.

Gruß,
Tennisball

Xeres

Moderator

BeitragMi, Aug 21, 2013 21:59
Antworten mit Zitat
Benutzer-Profile anzeigen
Selbst wenn das mit einem Video funktionieren könnte - was es nicht tut - würde der Schnippsel nicht funktionieren:
BlitzBasic: [AUSKLAPPEN]
If AiHP < 1 Then
AiImage=AiDown
DrawMovie Explosion,250-KameraX,250-KameraY
EndIf
Ganz einfach, weil du die Explosion nur einen Frame lang anzeigen würdest.

Die Frage ob man nicht ein gif benutzen könnte, kommt auch immer mal wieder vor und immer noch muss ich sagen: nein, dass ist weder eine einfache noch eine sinnvolle Methode Animationen dar zu stellen.
Zum ersten werden gifs von BlitzBasic wie filme behandelt (man kann sie mit openmovie abspielen) aber das gibt einem keine Kontrolle über die Animation. Du kannst ja gerne ausprobieren, ob man da Transparenz benutzen und gleichzeitig mehrere abspielen kann - für sinnvoll halte ich das aber nicht.

Exportiere die Frames vom gif zu einem ImageStrip und baue dir einen Explosions-Type. Davon kannst du dann beliebig viele Objekte erstellen - da wo oben im Code DrawMovie steht - und die Explosionen werden unabhängig vom Gegner verwaltet. Das ist so ziemlich die einzige Möglichkeit, wie man Animationen steuern und das Spiel gleichzeitig laufen lassen kann.

Ich würde dir die Beginner's Practice Series ans Herz legen, besonders BPS #5: Seifenblasenmaschine sollte dir da enorm weiterhelfen.
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)

DAK

BeitragMi, Aug 21, 2013 22:04
Antworten mit Zitat
Benutzer-Profile anzeigen
Wie Tennisball gesagt hat, machst du sowas mit AnimImage. Wenn du das Bild in einem sinnvollen, komprimierten Format hast, wie .png, dann wirst du sehen, dass es kaum mehr verbraucht, als das Video, vor allem, wenn du es schon vorher in die passende Größe (Auflösung) bringst.

@viele Bilder: hast du dir die Hilfedatei zu LoadAnimImage angeschaut, also den Link, den dir Tennisball gegeben hat? AnimImages funktionieren so, dass du eine Bilddatei mit allen Frames der Animation nebeneinander hast. Das lädst du per LoadAnimImage als ein Bild und zeichnest es per DrawAnimImage, wobei du da im Vergleich zu DrawImage einen weiteren Parameter, mit dem du festlegen kannst, welches Frame du zeichnen willst.

Warum du Bilder und nicht Videos verwenden solltest:
-Viel bessere Kontrolle: Du kannst die Dinger schön pixelgenau positionieren, steuern, welches Frame angezeigt werden soll, und somit die Geschwindigkeit bestimmen, kannst so sogar mehrere Animationen in das gleiche Ding packen und auch Frames überspringen
-Masking geht viel einfacher
-Wenn du .png verwendest hast du auch keine Komprimierungs-Artefakte, schaut also schöner aus
-Lässt sich viel einfacher erstellen (Paint oder Gimp reichen dafür völlig)
-Du kriegst keine Probleme, weil du anderer Leute Animationen von Youtube klaust
-Es gibt haufenweise fertige, frei verwendbare Animationen in dem Format (immer schauen, was die Lizenzbestimmungen dazu sagen, ob du es verwenden darfst)

Als Beispielbild, wie sowas ausschauen kann: user posted image

Edit: Sorry, Xerxes, hab nicht gesehen, dass du schon geschrieben hast.
@Bobo, das ist wieder mal ne Aufforderung gewesen, dass du dir Types anschaust Wink
Gewinner der 6. und der 68. BlitzCodeCompo

Hubsi

BeitragDo, Aug 22, 2013 10:32
Antworten mit Zitat
Benutzer-Profile anzeigen
Video ist ungeeignet für sowas, siehe auch vorherige Posts. Aber um Deine eigentliche Frage zu beantworten im Hinblick auf anderweitige spätere Verwendung:

BlitzBasic: [AUSKLAPPEN]
DrawMovie video,x,y, video_weite , video_hoehe


Also recht simpel Very Happy
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn...
 

Bobo2040

BeitragDo, Aug 22, 2013 15:28
Antworten mit Zitat
Benutzer-Profile anzeigen
Okay Very Happy
Habe mir den Link mal angeguckt und es getestet klappt auch ...
nur wie kann ich jetzt mehrere Bilder hintereinander Abspielen lassen ?
PS: Sry wenn das ne blöde Frage ist Very Happy

DAK

BeitragDo, Aug 22, 2013 16:28
Antworten mit Zitat
Benutzer-Profile anzeigen
Einfach jedes Frame (oder wenn du es langsamer haben willst alle paar Frames) die Zahl des momentan angezeigten Frames erhöhen.
Gewinner der 6. und der 68. BlitzCodeCompo
 

Bobo2040

BeitragDo, Aug 22, 2013 17:04
Antworten mit Zitat
Benutzer-Profile anzeigen
okay gut danke Very Happy
Versuch das nachher mal ^^

PS: @DAK du hast ne PM Wink

Und hätte da noch ne Frage und zwar möchte ich wenn man Tod ist das Fenster komplett Schwarz werden lassen und dann soll da ein Textfeld sein wo steht du bist gestorben oder so ... nur wie kann ich das machen ?
Also Text weiß ich und nen Großes Viereck was Schwarz ist auch... und wie ich das vor allen andren Bildern machen kann weiß ich auch nur wie kann ich danach das Spiel beenden ?

Jamagin

BeitragDo, Aug 22, 2013 17:48
Antworten mit Zitat
Benutzer-Profile anzeigen
@Bobo2040

ohne irgend jemanden persönlich anzugreifen auch mir wurde hier sehr viel geholfen, doch bei Bobo2040 hat es den Anschein als ob andere sein Spiel programmieren sollten! Es gibt so viele und vor allem schöne Tutorials, man muß diese eben lesen und ausprobieren.
Programmieren lernt man nicht durch Wie geht das und Warum so und nicht so, sondern, man sollte sich da schon auch selbst durcharbeiten um das zu verstehen was man macht oder warum Beispielcode die einem gegeben werden, genau so funktionieren und nicht anders!

Bitte nicht persönlich nehmen Bobo2040, aber deine Fragen (alle bisherigen) sind so ausgelegt, daß du ohne viel Aufwand ein Spiel haben möchtest und das klappt so aber nicht!

Man sollte schon so ehrgeizig sein und sich die Tutorials reinziehen, auch BlitzBasic selbst hat viele, viele Beispiele und Programme aus diesen man sehr gut lernen kann.

Und ja, es führt kein Weg bei den Types vorbei. Einmal verstanden, immer gern verwendet. Man kann auch mit DIM arbeiten aber ich persönlich bevorzuge Types!

Dieses Forum ist einfach klasse und es wird einem echt schnell geholfen aber man sollte auch Problemstellungen zuerst versuchen alleine zu lösen bevor man seine ganzen Fragen stellt.

Zumal, bevor man ein Spiel schreibt, sollte man ein Konzept entwerfen damit man nicht irgendwann den Überblick verliert.

Sonst bleibt nur noch zu sagen, learning by doing....!

lg. Jamagin
Bevor du etwas neues beginnst, erledige das alte
 

Bobo2040

BeitragDo, Aug 22, 2013 18:32
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich versuche immer meine Probleme vorerst alleine und danach über Google zu lösen...
Nur kann ich nicht riechen das ImageAnim... besser ist als Videos und in der Help ist nur ein Beispiel von 1 Bild
Dort wird dann Oben Links die Ecke gezeigt und unten rechts...
Wink
und lieber Frage ich anstatt die Motivation zu verlieren und damit aufzuhören Wink
Hätte DAK mich nicht wieder motiviert hätte ichs nicht weitergemacht sondern hätte mich wieder auf mein Forensystem Konzentriert Wink
Mfg

Jamagin

BeitragDo, Aug 22, 2013 18:46
Antworten mit Zitat
Benutzer-Profile anzeigen
@bobo

in der hilfe ist

Code: [AUSKLAPPEN]

Bild = LoadAnimImage (Datei$, width, height, Start, Frames [,Modus])


angegeben und im Beispielcode sind es 3 Bilder!
Was soll an diesem Befehl so schwer zu verstehen sein? Gezeichnet werden sie ja doch alle mit DrawImage, die Frames kannst du ja über Timer steuern und zu diesem Zweck --> Types.

Den Spass am Programmieren will ich dir nicht verderben. Du hast ja Recht wenn du fragst, aber es hat für mich so den Anschein gehabt, das deine Fragen genau so gestellt waren, als ob man dir ein fertiges Spiel vorlegen sollte!

lg. Jamagin
Bevor du etwas neues beginnst, erledige das alte
 

Bobo2040

BeitragDo, Aug 22, 2013 18:56
Antworten mit Zitat
Benutzer-Profile anzeigen
Achssooooooooooo Very Happy
Jetzt hab ichs glaub verstanden man braucht ein Bild das aus mehreren Bildern zusammengefügt ist und dann wird sozusagen der focus immer nen Stück nach Rechts/Links verlegt so wie bei den alten Filmstreifen oder ?
Weil ich hab da nur einmal DrawImage gesehen Very Happy

Xeres

Moderator

BeitragDo, Aug 22, 2013 19:13
Antworten mit Zitat
Benutzer-Profile anzeigen
Bobo2040 hat Folgendes geschrieben:
Und hätte da noch ne Frage und zwar möchte ich wenn man Tod ist das Fenster komplett Schwarz werden lassen und dann soll da ein Textfeld sein wo steht du bist gestorben oder so ... nur wie kann ich das machen ?

Dafür würde ich Gamestates empfehlen - Eine Variable die ganz früh in der Hauptschleife entscheidet, welcher Teil des Programms ausgeführt werden soll.

Pseudo BlitzBasic: [AUSKLAPPEN]

Const GS_MENU%=0, GS_PLAY%=1, GS_TOD%=2, GS_HIGH%=3, GS_CRED%=4
Global GameState% = GS_MENU

;[...]

Repeat

;[...]

Select GameState
Case GS_MENU
Main_Menu()

Case GS_PLAY()
Play_Game()

Case GS_TOD
Show_Death_Screen()

Case GS_HIGH
Show_Highscore()

Case GS_CRED
Show_Credits()

End Select

;[...]

Flip(0)
WaitTimer(FrameTimer)
Forever
End


;[...]

Function GetHit()
;[...]

If PlayerHP =< 0 Then
GameState = GS_TOD
Return
EndIf

;[...]

End Function


Konstanten sind super lesbar und man wechselt den State einfach, in dem man der Variable einen neuen Wert gibt und den Rest abbricht.
Es geht natürlich komplizierter, aber das ist das Minimum an Ordnung, die man in einem kleinen Spiel schaffen sollte, wenn man sich nicht im Code verheddern will.
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)
 

Bobo2040

BeitragDo, Aug 22, 2013 19:16
Antworten mit Zitat
Benutzer-Profile anzeigen
Okay cool Very Happy
Ich versuche mal nachher den Code so umzuschreiben, das nur je nach action eine Function ausgeführt wird
spart dann doch auch ressorucen oder ?
PS: Noch ne Frage und zwar kennt ihr nen Programm mit dem ich das machen kann ?
Also direkt unterteilen also z.b. nen 1800 px großes "Banner" das dann in 200px abschnitten unterteilt ist und wo ich sehen kann wo die Mitte ist usw... braucht halt eig. nur die Funktionen die Paint auch hat.. nur das die Bilder Transparent gemacht werden können... habe eben nen bisschen geguckt und mit CS6 versucht nur iwie siehts so scheiße aus.. weil ich nicht weiß wo das nächste "frame" beginnt Very Happy

Xeres

Moderator

BeitragDo, Aug 22, 2013 19:25
Antworten mit Zitat
Benutzer-Profile anzeigen
Nein, sparen tut man dabei nichts außer Entwicklungszeit, weil man ganz klar sieht, was wann im Code passiert. Wink
Es gilt immer noch, das man Ressourcen nur einmal Lädt (am besten vor der Hauptschleife) und den Code so optimiert, dass man nur das nötigste tut. Aber dass muss man in jedem Fall tun.
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)
 

Bobo2040

BeitragDo, Aug 22, 2013 19:36
Antworten mit Zitat
Benutzer-Profile anzeigen
Okay Very Happy
kennst du tricks um die cpu leistung zu senken ? momentan zieht das spiel 20-40% manchmal mehr ...
würde das noch nen bisschen senken ...

Gehe zu Seite 1, 2, 3  Weiter

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group