Schönen guten abend, erneut habe ich eine kleine Frage zur performance folgender Programmierung:
Um die Animationen meiner Figuren besser unter Kontrolle zu haben habe ich eine Klasse erstellt welche ich "Model" nenne. Dieses Model speichert eine Bilddatei, zum Beispiel "001-Fighter01" und dazu einige verschiedene Rects(x,y,width,height).
Das Model besitzt eine Anzahl an Abfragen welche jeweils ein Bitmap liefern, nämlich einen Ausschnitt aus dem im Model gespeicherten Ur-Bitmaps.
hier ein Beispiel:
Code:
def initialize
    @bitmap = RPG::Cache.character("001-Fighter01",0)
    @stand = [1,
              Rect.new(0,0,32,48)  ,
              Rect.new(0,49,32,48) ,
              Rect.new(0,97,32,48) ,
              Rect.new(0,144,32,48)
             ]
end

def animation(animation_name,direction=1)
    return animation_stand(direction) if animation_name == "stand"
end

def animation_stand(direction)
    bitmap = Bitmap.new(@stand[direction].width,@stand[direction].height)
    bitmap.blt(0,0,@bitmap,@stand[direction])
    return bitmap
end
In jedem Frame würde ein Sprite nun die zu ihm gehörige Model-Instanz nach einem Bitmap für die zu spielende Animation abfragen. Beispiel:
Code:
def update
    self.bitmap = @character.model.animation(@character.animation)
    self.bitmap.hue_change(@character.hue)
    @width = self.bitmap.width
    @height = self.bitmap.height
    self.ox = @width/2
    self.oy = @height/2
    self.src_rect.set(0,0,@width,@height)
    self.x = @character.x
    self.y = @character.y
    self.z = @character.z
  end
Ist dies effektiv? Beziehungsweise, würde es zu großen Performance einbußen führen für eine größere Anzahl von Sprites?
Im ursprünglichen RMXP standard Sprite wird ja das Bitmap für den Sprite nur sehr selten gewechselt, in diesem Fall würde ich in jedem Frame für jeden Sprite ein neues Bitmap abfragen und setzen.