Bilder scrollen und Zoomfunktion

  • Guten Abend allerseits.


    Ich bin gerade drauf und dran mir ein kleines TowerDefense zu basteln, doch mir stellen sich zwei Probleme in den Weg.


    Problem1:
    Da ich natürlich nicht die ganze Map in den Bildschirm zwengen will, brauche ich eine Funktion, die es mir erlaubt, über die Map bzw. das ImageView zu Scrollen. Leider findet man im Internet nur sehr wenig dazu, weswegen ich eure Hilfe brauche. Ich nehme mal an, dass man nicht zwei ScrollViews (eine Horizontal, die andere Vertikal) übereinander legt (erscheint mir umständlich)?


    Problem2:
    Ich möchte dem Benutzer die möglichkeit geben, näher an das Geschehen heran zu zoomen, oder weg zu zoomen. Deshalb benötige ich eine Zoomfunktion. Da aber Informationen oder vernünfigte Tutorials zu diesem Thema eher rar gesät sind, benötige ich hierbei ebenfalls eure Hilfe :D .


    Vielleicht hab ich ein paar gute Tutorials übersehen, die ihr mir posten könnt.


    Freue mich auf eure Antworten!
    MfG XoR

  • Lesestoff:


    http://www.androidpit.de/de/an…iew/Spieleentwicklung_101



    Hier im Forum hat letztens jemand auch eine eigene Tutorialvideoreihe gepostet "pan"... verdammt Namen vergessen, findest du aber hier irgendwo... da wird ein Spiel von A bis Z entwickelt.



    Zu deiner Idee.


    Das Prinzip bei übergrossen Maps funktioniert anders.
    Dein Spielfeld zeichnet immer nur den Teil der sichtbar ist. Die Logik sprich der Rest der Map ist zwar im Speicher, wird aber nur gezeichnet wenn er auch sichtbar ist.
    Du verschiebst also lediglich dein sichtbares "Fenster" auf der Map und je nachdem wie dein XY ist, bekommst du raus was du zeichnen musst und was nicht. Ebenso der Zoom , das ist dann nur noch Mathematik.
    Die Frage ist ob du Dir wirklich die Mühe machen willst eine eigene Gameengine zu entwickeln.


    Da draussen in der Androidwelt gibt es bereits diverse Engines, welche man nutzen kann. --> ANDEngine für 2D Spiele / Unity -> 3D

  • Danke für deine Antwort. Habe die Tutorials gefunden, welche die Frage nach dem Zoomen und Scrollen leider nicht beantworten. Kennst du eventuell ein paar gute Tutorials, welche sich auf Zoomen und Scrollen beziehen?

  • Habe mir die Tutorials mal angeschaut, doch anscheinend hat man da immer eine minimum Scrolldistanz von einem Block(in dem Spiel).
    Daher habe ich versucht es selbst umzusetzen, was im Prinzip funktioniert:
    Ich habe die eine eigene Klasse erstellt, die vom SurfaceView erbt(aus Panjutorials). Diese lass ich dann meine Map(ein teil davon) anzeigen.
    In meiner Activity habe ich dann einen GestureDetector erstellt, der die onFling-Methode aufruft, wenn der User über den Bildschirm "wischt".
    Anschliesend berechne ich die zurückgelegte X- und Y-Koordinate, und verschiebe mit hilfe des SurfaceViews meine map, indem ich X- und Y-Margin setze.


    Hier der Code zur verdeutlichung:
    (die onDraw-Methode des SurfaceViews:)



    onFling-Methode des GestureDetectors:



    Mein Problem ist nun folgendes:
    Der neue sichtbare Teil der Map wird erst dann gezeichnet, wenn ich den Finger wieder runternehme vom Display. Wenn ich also den Display an Punkt1 berühre, aber nicht vom Display wieder runtergehe, dann ca. 100pixel nach links "wische", passiert noch gar nichts. Erst wenn ich dann meinen Finger herunternehme, wird die Map neu ausgerichtet und gezeichnet. Dass macht das Ganze etwas "unflüssig" was ich natürlich beheben will.


    Hat irgenteiner eine Idee? Oder gehe ich das Ganze falsch an?


    EDIT:


    Problem behoben. Hatte die Methode onScroll total übersehen ^^

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!