In Anbetracht der Tatsache, dass Master Gaman anscheinend immer noch
unzfrieden ist, gibt hier nochmal eine veränderte Variante, mit zwei Variablen
mehr:
Code: Alles auswählen
Procedure.b LoadAnimSprite(AnimSprite.l,FileName$, TileWidth.l,TileHeight.l, Mode.l, MaskRed.l,MaskGreen.l,MaskBlue.l)
If FileSize(FileName$) >= 0
LoadSprite(#TMP_AnimSprite, FileName$, 0)
widthtiles = SpriteWidth(#TMP_AnimSprite) / TileWidth
heighttiles =SpriteHeight(#TMP_AnimSprite) / TileHeight
UseBuffer(#TMP_AnimSprite)
zxend = widthtiles - 1
zyend = heighttiles - 1
For zy = 0 To zxend
For zx = 0 To zyend
GrabSprite(AnimSprite + z, zx*TileWidth,zy*TileHeight, TileWidth,TileHeight, Mode)
TransparentSpriteColor(AnimSprite + z, MaskRed,MaskGreen,MaskBlue)
z = z + 1
Next
Next
ReturnCode = 1
FreeSprite(#TMP_AnimSprite)
UseBuffer(-1)
Else
ReturnCode = 0
EndIf
ProcedureReturn ReturnCode
EndProcedure
Obwohl ich jetzt auch keine Klammern mehr ausrechnen muss, finde ich
es in dieser Situation in dieser Sprache nicht nötig. Meist hat man in
solchen Bilder kleine Sprites, mit mittlerer Anzahl, da geht das schon in
Ordnung. Aber überlegt dochmal, die hauptsächlichen Zeitschlucker sind
doch die Grabimage- und Ladefunktion, die nehmen mehr Zeit weg als
simple Divisionen im Code.
@Master Gaman (klingt cool):
Willkommen im Club, ich bin auch Perfektionist, aber nur wenn es auch
angebracht oder nötig ist. ABER BEI SOLCHEN KLEINIGKEITEN IST DAS
DOCH KAUM EINE WELT. Naja, egal, Geschmackssache... Auf jeden Fall
kann ich es nicht leiden, wenn Anwendungen schelcht und nicht perfekt,
bzw. synchron gesetzte Gadgets haben.
@bluejoke:
Muss ich dir zustimmen, hier ist es kaum eine Steigerung (höchstens in
ausgewachsenen Word-Bereichen). Hätte ich das beispielsweise in
Quickbasic oder auch Blitzbasic gemacht (wo so eine Funktion sogar noch
schneller, besser und handlicher vorhanden ist), dann hätte ich von
grundauf alle Werte so wenig wie nur möglich berechnet.