collapse collapse

 Community


 User Info




Willkommen Gast. Bitte einloggen oder registrieren.

 Partnerseiten

rpgvx.net

Das Forum ist offline

Autor Thema: Smooth Cursor Movement  (Gelesen 1238 mal)

Offline Ðeity

  • No Pain, no gain!
  • Administrator
  • Eventmeister
  • ****
  • Beiträge: 427
  • No Pain, no Gain!
    • Deity-VX
Smooth Cursor Movement
« am: November 18, 2010, 18:43:28 »
Smooth Cursor Movement

Updates
18.11.2010: Publish

Was macht das Script?
Das Script überarbeitet die bisherige Bewegung des Cursors, der Klasse Window_Selectable. (Also fast alle Menüs.) Der Cursor springt nicht von Punkt zu Punkt, sondern bewegt sich von einem Punkt zum nächsten.

Wie nutze ich das Script?
Die Benutzung ist sehr einfach. Man muss nur die Anzahl an Frames auswählen, in denen sich der Cursor auf den neuen Punkt bewegen muss.
Schon kann es losgehen.

Demo
n.A.

Video
n.A.

Screenshots
n.A.

Das Script
Spoiler for Hiden:
class Window_Selectable
  FRAMES_FOR_MOVEMENT = 10 # should not be to big or to small ~(8-20)
  #--------------------------------------------------------------------------
  # * Update cursor
  #--------------------------------------------------------------------------
  def update_cursor
    if @new_rect.nil?
      if @index < 0                   # If the cursor position is less than 0
        self.cursor_rect.empty        # Empty cursor
      else                            # If the cursor position is 0 or more
        row = @index / @column_max    # Get current row
        if row < top_row              # If before the currently displayed
          self.top_row = row          # Scroll up
        end
        if row > bottom_row           # If after the currently displayed
          self.bottom_row = row       # Scroll down
        end
        rect = item_rect(@index)      # Get rectangle of selected item
        rect.y -= self.oy             # Match rectangle to scroll position
        @new_rect = self.cursor_rect == rect ? nil : rect
        if !@new_rect.nil?
          @pixel_to_move_x = ((@new_rect.x - self.cursor_rect.x)/FRAMES_FOR_MOVEMENT).to_i
          @pixel_to_move_y = ((@new_rect.y - self.cursor_rect.y)/FRAMES_FOR_MOVEMENT).to_i
        else
          @pixel_to_move_x = 0
          @pixel_to_move_y = 0
        end
      end
    else
      if self.cursor_rect != @new_rect
        if (self.cursor_rect.x - @new_rect.x).abs <= @pixel_to_move_x.abs
          self.cursor_rect.x += @pixel_to_move_x < 0 ? -(self.cursor_rect.x - @new_rect.x).abs : (self.cursor_rect.x - @new_rect.x).abs
        else
          self.cursor_rect.x += @pixel_to_move_x
        end
        if (self.cursor_rect.y - @new_rect.y).abs <= @pixel_to_move_y.abs
          self.cursor_rect.y += @pixel_to_move_y < 0 ? -(self.cursor_rect.y - @new_rect.y).abs : (self.cursor_rect.y - @new_rect.y).abs
        else
          self.cursor_rect.y += @pixel_to_move_y
        end
      else
        @new_rect = nil
      end
    end
  end
  alias index_slide_cursor index= unless $@
  def index=(*args)
    index_slide_cursor(*args)
    rect = item_rect(@index)      # Get rectangle of selected item
    rect.y -= self.oy             # Match rectangle to scroll position
    self.cursor_rect = rect       # Refresh cursor rectangle
  end
end

Schlusswort
Bitte meldet alle Bugs, so kann das System optimiert werden. Es gibt keine bekannten Fehler, aber da eine Methode überschrieben wird, würde ich empfehlen, das Script möglichst weit oben einzufügen, wenn möglich direkt unter Window_Selectable.

MfG
Deity



Re:Smooth Cursor Movement

Offline Kyoshiro

  • Global Mod
  • RPGVX-Forengott
  • ****
  • Beiträge: 1623
  • Stand up and fight!
    • Mein Blog
Re:Smooth Cursor Movement
« Antwort #1 am: November 18, 2010, 18:48:19 »
Eine nette Idee, ich habe es auch gleich mal ausprobiert, es funktioniert sehr gut.^^
Ich weiß nicht ob es Absicht ist oder nicht, im Speichermenü springt er wie früher hin und her.

Re:Smooth Cursor Movement

Offline Kiige

  • a Lonely Artist Genre
  • Database-Verunstalter
  • **
  • Beiträge: 197
  • Mr. Anything is possible party rocket launcher
Re:Smooth Cursor Movement
« Antwort #2 am: November 18, 2010, 18:49:42 »
geniales Script ^^
wird gleich benutzt

ein hoch auf Deitys Scripte, du solltest mehr veröffentlichen XD
KleX und Ich über Zombies
Spoiler for Hiden:
KleX:
aber findest du nicht, dass man manchmal, um eine illusion zu erschaffen die logik etwas nach hinten schieben muss?
z.B. bei zombiefilmen. da sind immer ca 100x mehr zombies, als in der stadt menschen gelebt haben. aber es wäre ja langweilig, wenn nach der hälfte des films keine zombies mehr da sind

Kiige:
weil Zombies Herdentiere sind
Zombies wandern aus städte aus, in denen kein leben mehr existiert

KleX:
herdentiere *lach* xD

Re:Smooth Cursor Movement

Offline Ðeity

  • No Pain, no gain!
  • Administrator
  • Eventmeister
  • ****
  • Beiträge: 427
  • No Pain, no Gain!
    • Deity-VX
Re:Smooth Cursor Movement
« Antwort #3 am: November 18, 2010, 19:03:37 »
@Kyo
ALso Absicht ist es nicht, aber wie ich oben geschrieben habe, bearbeitete ich nur die Cursor von Window_Selectable und der Cursor in Scene_File wird leider etwas anders gereglt.
Danke das du mich drauf aufmerksam gemacht hast, ich ändere es bei Gelegenheit. ;)

@Kiige
Vielen Dank! :D
Vllt. kommen gleich noch welche, war ja nicht ganz untätig in der Downtime. :P

MfG
Deity



 


 Bild des Monats

rooftop party

Views: 3581
By: papilion

 Umfrage

  • Wer soll das BdM gewinnen?
  • Dot Kandidat 1
  • 3 (25%)
  • Dot Kandidat 2
  • 1 (8%)
  • Dot Kandidat 3
  • 2 (16%)
  • Dot Kandidat 4
  • 0 (0%)
  • Dot Kandidat 5
  • 6 (50%)
  • Stimmen insgesamt: 12
  • View Topic

 Schnellsuche





SimplePortal 2.3.3 © 2008-2010, SimplePortal