Hilfe bei Adventure Game - imgbox flackert bei verschieben und wie imgbox verkleinern ?

  • VB6

Es gibt 11 Antworten in diesem Thema. Der letzte Beitrag () ist von Eistee.

    Hilfe bei Adventure Game - imgbox flackert bei verschieben und wie imgbox verkleinern ?

    Hallo

    Ich habe begonnen ein point & click Adventure mit VB6 zu programmieren. (ist mittlerweile schon mein drittes Adventure) :D
    Akt1 ist schon fast abgeschlossen.
    Form1 = Das Hauptmenü / Form2 = Der Prolog (Einführung) Form3 ist Kapitel1 und Form4 ist Kapitel2 usw.

    nun habe ich da 2 Problemchen.
    Hoffe ihr könnt mir hier weiterhelfen. :rolleyes:

    1.
    wenn die Imagebox (Spielfigur) mit transparentem gifbild verschoben wird, flackert das bild ab und an, aber nicht immer. (graue Umrandung)
    Diesen Code verwende ich für das verschieben, dabei werden zwei Bilder Abwechselnd geladen und es wirkt als ob die Figur gehen würde.
    für die Hauptkulisse und für die Spielfigur verwende ich Imageboxen wegen transparent, auch für alle Objekte im Raum und Gegenstände.

    Frage: kann es sein das es nur flackert weil das Bild bei jedem verschieben neu geladen wird wegen geh Animation ?(
    falls dies die Ursache ist, müsste ich für eine Spielfigur satte 16 Imageboxen verwenden und die Bilder fest zuweisen.
    wie viele Steuerelemente sind denn pro Form maximal möglich ?

    Visual Basic-Quellcode

    1. For a = 1 To 15
    2. Tony.Left = Tony.Left - 120
    3. Tony.Picture = LoadPicture("Tony Links Schritt 1.gif")
    4. Timer9_Timer
    5. Tony.Left = Tony.Left - 120
    6. Tony.Picture = LoadPicture("Tony Links Schritt 2.gif")
    7. Timer9_Timer
    8. Next a



    2.
    im akt2 wird die Spielfigur in eine Höhle, Labyrinth hineingehen und einen weg nach vor gehen,
    hier ist mir wichtig das Tony.Picture wenn er nach vor geht oder wenn er aus der Höhle kommt verkleinert bez vergrößert wird ! als würde er sich weit entfernen oder näher an den Bildschirm herankommen.
    k.a wie ich hier den Befehl Resize anwenden muss.
    speichern wie bei ResizeAndSave will ich es nicht.

    habe keine Lust die Bilder mittels Photoshop zu Verkleinern.

    habt ihr irgendeine Idee wie ich den code fürs verkleinern im obigen Quellcode einfüge ? möchte wenn möglich es über einen Timer ausführen.

    Vielen Dank

    lg
    DragonLord
    Nein.

    -> GDI.
    „Was daraus gefolgert werden kann ist, dass jeder intelligentere User sein Geld lieber für Bier ausgibt, um einen schönen Rausch zu haben, und nicht dieses Ranzprodukt.“

    -Auszug aus einer Unterhaltung über das iPhone und dessen Vermarktung.
    Ich meine, dass du die Spielfigur mit GDI zeichnen solltest, denn 16 Pictureboxen fressen da wesentlich mehr und sind unperformant wie ein Holzbalken.
    „Was daraus gefolgert werden kann ist, dass jeder intelligentere User sein Geld lieber für Bier ausgibt, um einen schönen Rausch zu haben, und nicht dieses Ranzprodukt.“

    -Auszug aus einer Unterhaltung über das iPhone und dessen Vermarktung.
    Man weiß, was gemeint ist, oder?^^
    „Was daraus gefolgert werden kann ist, dass jeder intelligentere User sein Geld lieber für Bier ausgibt, um einen schönen Rausch zu haben, und nicht dieses Ranzprodukt.“

    -Auszug aus einer Unterhaltung über das iPhone und dessen Vermarktung.
    Hallo DragonLord,
    das Image-Controls beim Verschieben flackern lässt sich
    nicht vermeiden (Light-Controls). Du brauchst nicht für
    jede Animationsphase ein Image-Control. Du kannst die
    Bilder in Variablen vom Typ StdPicture laden.
    Du kannst bis zu 255 Steuerelemente verwenden. Wenn du
    ein Steuerelementefeld verwendest, je Feld bis zu 32768
    Controls (sollte reichen).
    Image-Control vergrössern/verkleinern:

    Visual Basic-Quellcode

    1. With Image1
    2. .Stretch = True
    3. .Width = 1500 ' neue Breite
    4. .Height = 1000 ' neue Höhe
    5. End With

    Visual Basic-Quellcode

    1. Timer9_Timer

    So wie du den Timer benutzt, hat er keine Wirkung.

    Die Bilder für die Animationen ständig von der Festplatte
    zu laden belastet diese nur unnötig. Lade die Bilder
    einmal beim Programmstart in Variablen vom Typ StdPicture.
    Gruss,

    Neptun
    @Neptun ist ja schön und gut aber Controls?!
    Controls (deut. Steuerelemente) sind Controls (deut. Steuerelemente).

    Wenn "DragonLord" 4 Stück davon hat welche z.B. die Tasten W, A, S, D ersetzen sollen ö. ä. ist das ja noch schön und gut.
    Denn diese werden dann benutzt um z. B. eine Figur zu steuern.

    Aber damit erstellt mann kein Spiel.
    Niemals, nicht einmal in der Hölle.

    Gruß Eistee

    Eistee schrieb:

    Niemals, nicht einmal in der Hölle.
    Da sind wir doch schon längst (siehe Grundlagenforum) :D
    Spass beiseite, für ein Adventure Game reicht noch nicht einmal GDI+, da ist DirectX oder XNA (basiert ja drauf) einfach die bessere Wahl.
    @Neptung: Wenn man das schon macht, dann würde ich das Bild eher zoomen lassen (dafür gibts auch irgendeine eine Property)

    Neptun schrieb:

    Hallo DragonLord,
    das Image-Controls beim Verschieben flackern lässt sich
    nicht vermeiden (Light-Controls). Du brauchst nicht für
    jede Animationsphase ein Image-Control. Du kannst die
    Bilder in Variablen vom Typ StdPicture laden.
    Du kannst bis zu 255 Steuerelemente verwenden. Wenn du
    ein Steuerelementefeld verwendest, je Feld bis zu 32768
    Controls (sollte reichen).
    Image-Control vergrössern/verkleinern:

    Visual Basic-Quellcode

    1. With Image1
    2. .Stretch = True
    3. .Width = 1500 ' neue Breite
    4. .Height = 1000 ' neue Höhe
    5. End With

    Visual Basic-Quellcode

    1. Timer9_Timer

    So wie du den Timer benutzt, hat er keine Wirkung.

    Die Bilder für die Animationen ständig von der Festplatte
    zu laden belastet diese nur unnötig. Lade die Bilder
    einmal beim Programmstart in Variablen vom Typ StdPicture.
    Hallo Neptun

    Das ist Genial mit der Stretch Eigenschaft :rolleyes: Danke.
    Ja stimmt, die Bilder immer wieder neu einladen is umständlich, ich wusste auf Anhieb keine alternative als vll alles Fix in image Boxen abzulegen.
    Das mit StdPicture geht das unter Vbasic 6 auch ?

    naja ich bin mit meinen Game schon Fast fertig, wenn alles läuft werde ich es überarbeiten (StdPicture).

    Sollte ich irgendwas nicht schnallen melde ich mich.

    Danke Schön. :thumbsup:

    lg
    Dragonlord
    Hallo Dragonlord,

    Das mit StdPicture geht das unter Vbasic 6 auch ?


    Ja, das geht. Hier ein Beispiel:

    Visual Basic-Quellcode

    1. ' Controls: 1 * Timer, 1 * Image
    2. Private PicList() As StdPicture
    3. Private Bilder&, Phase&
    4. Private Sub Form_Load()
    5. Dim i&, Dat1$
    6. Bilder = 5 ' Zahl der Animationsphasen
    7. ReDim PicList(Bilder - 1)
    8. For i = 0 To Bilder - 1
    9. ' Die Bilddateien heissen Bild1.jpeg, Bild2.jpeg, Bild3.jpeg ...
    10. Dat1 = App.Path & "\Bild" & i & ".jpeg" ' Pfad
    11. If Dir$(Dat1) = "" Then
    12. MsgBox "Datei nicht gefunden:" & vbCr & Dat1, vbExclamation + vbOKOnly
    13. Else
    14. Set PicList(i) = LoadPicture(Dat1)
    15. End If
    16. Next i
    17. Phase = 0
    18. Call Timer1_Timer
    19. Timer1.Interval = 200 ' Animationsgeschwindigkeit
    20. Timer1.Enabled = True
    21. End Sub
    22. Private Sub Timer1_Timer()
    23. Set Image1.Picture = PicList(Phase)
    24. Phase = (Phase + 1) Mod Bilder
    25. End Sub


    @Eistee:
    Ich habe keine Controls empfohlen. Bei einfachen Spielen
    ist es aber durchaus sinnvoll, sie zu verwenden. Wenn
    ich mich an ältere Postings von dir erinnere, hattest
    du mit Controls so deine Probleme. Ich kann daher verstehen,
    dass du sie nicht magst. :)

    @tt-Studios
    @Neptung: Wenn man das schon macht, dann würde ich das Bild eher zoomen lassen (dafür gibts auch irgendeine eine Property)


    Ja, die Property habe ich genannt. Sie heisst Stretch.
    GDI+ und DirectX mögen ja die bessere Wahl bei Spielen sein, aber es
    hat auch nicht jeder die Lust oder die Zeit sich da einzuarbeiten.
    Das macht man nicht mal so eben in der Mittagspause.
    Gruss,

    Neptun
    @Neptun: ^^ das hat nichts mit mögen oder nicht mögen zu tuhen.

    Denn auch wenn man Pictureboxen liebt, kann man damit kein ordentliches "Game" erstellen.
    Da kann die Liebe noch so groß und für immer und ewig bindent sein. ^^

    PS: So ein Schrott kommt dabei herraus, wenn man mit Controls ein Spiel erstellt [Youtube-Video]

    oder Siehe FF Black Jack in meiner Signatur...

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von „Eistee“ ()