Probleme mit Prospeed.dll

  • Hallo Community,

    ich versuche im Moment einen Kreis darzustellen, dafür verwende ich die Prospeed.dll.
    Ich lade eine (kreisförmige) Bitmap Datei und diese wird als Sprite angezeigt.
    Doch sobald ich die Geschwindigkeit änder, mit dem sich das Sprite bewegt, wird es "unsauber" dargestellt.
    Weiß jemand eine Lösung, dass der Kreis nicht "unsauber" wird?

    Hier alle nötigen Dateien :autoit.de/wcf/attachment/9230/

    Danke :)

  • Hallo Alizame,

    die GDI+ Befehle sind mir durchaus bekannt, doch ich müsste es schon mit der Prospeed.dll anzeigen lassen, aber trotzdem Danke.

  • In diesem Fall nicht, da ich so etwas wie Pong programmieren möchte.
    Das hab ich schon mit GDI+ versucht, was auch auf allen Computer flüssig lief,
    die ich getestete habe, außer die Schulcomputer (ist ein Schulprojekt).
    Woran das liegt, kann ich mir selbst nicht erklären, wahrscheinlich sind die einfach zu voll gemüllt ;)
    Nun hab ich mir gedacht, dass es mit der Prospeed.dll flüssiger läuft als mit GDI+,
    zudem sind bei der Dll Kollisionsabfragen dabei , die ich gleich verwenden könnte.

  • Hallo!
    Habe schon einiges mirt der Prospeed.dll verzapft, die Funktionen sind idR sehr schnell und auch mit AutoIt einfach zu nutzen .

    @hulle, da das Sprite automatisch den Weg zum Ziel findet ( auch durch ein Labyrinth^^) musst du nur den Zielpunkt angeben und die Geschwindigkeit dort hin, hab dein Beispiel mal abgewandelt

    Spoiler anzeigen
    [autoit]

    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #include <prospeed30.au3>

    [/autoit] [autoit][/autoit] [autoit]

    Opt("GUIOnEventMode", 1)
    $ball = loadsprite("Ball.bmp")

    [/autoit] [autoit][/autoit] [autoit]

    $Ball_x = 400
    $Ball_y = 400
    $Ball_speed_x = -2
    $Ball_speed_y = -2

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    $GUI_MAIN = GUICreate("Test", 640, 480, Default, Default, $WS_POPUP)
    GUISetOnEvent($GUI_EVENT_CLOSE, "_Exit")

    [/autoit] [autoit][/autoit] [autoit]

    GUISetState()
    GetHDC()
    $createbitmap = CreateImage(640,480)
    CreateBuffer(640,480)
    SetBuffer($createbitmap)
    PaintImage($hDC,0,0,640,480,$createbitmap,0,0,0)

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    ;$spaceship = Sprite($spaceship1, Destination, $S_offsetX, $S_offsetY, WIDTH, HEIGHT, FRAMES, START_FRAME, FRAME_SPEED, posX, posY)

    [/autoit] [autoit][/autoit] [autoit]

    $Ball_sprite = Sprite($ball, $hdc, 0, 0, 15 ,15, 1, 1, 1, $Ball_x, $Ball_y)

    [/autoit] [autoit][/autoit] [autoit]

    ; syntax : SetSpriteSpeed($S_Alias, Speed X, Speed Y)
    SetSpriteSpeed($Ball_sprite, 10, 10)

    [/autoit] [autoit][/autoit] [autoit]

    MoveSprite($Ball_sprite, 0,0)

    [/autoit] [autoit][/autoit] [autoit]

    ; syntax : Movesprite($S_Alias, $posx, $posy)
    While 1
    Sleep(20)
    ;~ $Ball_x += $Ball_speed_x
    ;~ $ball_y += $Ball_speed_y
    ; MoveSprite($Ball_sprite, $Ball_x, $Ball_y)

    [/autoit] [autoit][/autoit] [autoit]

    WEnd

    [/autoit] [autoit][/autoit] [autoit]

    Func _Exit()
    FreeImage($Ball)
    DeleteSprite($ball_sprite)
    DestroyBuffer()
    DllClose($S_DLL)
    Exit
    EndFunc

    [/autoit]


    Alizame, Ahnung hast du nicht, wieso gibst du dann deinen Senf dazu?
    Lad die Prospeed-AutoIt-Demo (Teil dieser Datei) runter und schau dir an, was damit machbar ist. Dann nimm dir in den kompletten Sommerferien nichts vor und mach das mit GDI+. Viel Spass....

    ciao
    Andy


    "Schlechtes Benehmen halten die Leute doch nur deswegen für eine Art Vorrecht, weil keiner ihnen aufs Maul haut." Klaus Kinski
    "Hint: Write comments after each line. So you can (better) see what your program does and what it not does. And we can see what you're thinking what your program does and we can point to the missunderstandings." A-Jay

    Wie man Fragen richtig stellt... Tutorial: Wie man Script-Fehler findet und beseitigt...X-Y-Problem

    Einmal editiert, zuletzt von Andy (29. April 2010 um 16:46)

  • Zuallererst einmal Danke für die Mühe Andy :thumbup:
    Aber bei mir sieht der Kreis immernoch nicht, wie ein Kreis aus :(
    Auch wenn ich bei SetSpriteSpeed die Geschwindigkeit auf 2 Stelle

  • hmmm, bei mir ist der Kreis ein weißer Kreis, auch wenn er sich langsam bewegt^^
    Mach doch mal ein Pic und stells rein, ggf funkt dir auch irgendetwas im Hintergrund dazwischen

  • Mit Screenshot wird wohl schwierig :D
    Aber ich werd vielleicht mal kurz aufnehmen und als Video hochladen, jedoch erst morgen.

    Was ich aber noch festgestellt habe ist, dass es bei manchen Koordinaten flüssig läuft und bei anderen nicht.
    So sieht es bei mir wie ein Kreis aus, wenn die Variabeln dies Werte annehmen:
    $Ball_x = 500
    $Ball_y = 500

    und unflüssig wenn sie diese Werte haben:

    $Ball_x = 250
    $Ball_y = 250

    ?(

  • Pinguin --> Andy : (Teil dieser Datei)

    Alizame, liest du überhaupt? ._.
    Ich sagte bereits, dass ich dieses zip Archiv NICHT downloaden kann und dann postest du hier denselben Link nochmal.

    Also an alle, falls irgendwer von euch diese .dll mitsamt der Anleitung hat. Könnte er die bitte selber archivieren und hier hochladen? Danke :)

  • Pinguin, der Hoster war heute zeitweise down. Probier den Link einfach nochmal, bei der Gelegenheit kann man sich auf Frank Abbings Seite etwas umsehen, sehr interessant!

  • Pinguin wenn du die Prospeed.dll + Anleitung runterladen möchstes kannste hier : http://frabbing.bplaced.net/
    Andy das Problem hat sich komischer Weise von selbst gelöst, funktioniert jetzt ohne, dass sich der Kreis verformt :D
    evtl. lags an einem Programm, muss ich mal testen ..
    Trotzdem Danke für die Mühe :thumbup: