Créateur : King Kadelfek
Le lien de téléchargement :
Screenshots
Ça gâcherait la surprise.
Le Script
Note : il est très clair, pour aider à comprendre le précalcul.
- Code : Tout sélectionner
#==============================================================================
# ¦ Image Précalculée partant en traits
# Version 1.0
#------------------------------------------------------------------------------
# Par King Kadelfek
# http://rpgmakerxp-factory.net
#==============================================================================
class Partir
def initialize(pos_x, pos_y, fluidite, vitesse, hauteur)
# Pos_x et Pos_y
# les positions x et y de l'image à animer
# Fluidité : plus le chiffre est bas, et moins l'animation sera saccadée
@fluidite = fluidite
# Vitesse : plus le chiffre est important... plus ça va vite
@vitesse = vitesse
# La hauteur des traits (de la taille que vous voulez)
@hauteur = hauteur
@viewport = Viewport.new(0, 0, 640, 480)
# On place le viewport au-dessus de tout
@viewport.z = 9999
@bitmap = RPG::Cache.picture("image640x480.png")
@sprite = Sprite.new(@viewport)
@sprite.x = pos_x
@sprite.y = pos_y
@sprite.z = 100
@sprite.bitmap = @bitmap
# on rend le sprite invisible, pour que l'image ne s'affiche pas tout de suite
@sprite.visible = false
# On initialise les variables
@disposed = false
@compteur = 0
# On lance la fabrication des frames
fabrication
end
# Pour rendre l'animation visible ou invisible
def visible=(bool)
@sprite.visible = bool
end
# Pour fabriquer toutes les frames
def fabrication
width = @bitmap.width
height = @bitmap.height
@frames = []
i = 0
while (i<width+@fluidite)
bmp = Bitmap.new(width, height)
j = 0
while (j < height)
# On dessine une bande décalée vers la droite
bmp.blt(i, j, @bitmap, Rect.new(0, j, width, @hauteur))
# On dessine une bande décalée vers la gauche
bmp.blt(-i, j+@hauteur, @bitmap, Rect.new(0, j+@hauteur, width, @hauteur))
# On incrémente le positionnement vertical
j += 2*@hauteur
end
# On ajoute la frame créée aux autres
@frames.push(bmp)
# On incrémente le décalage horizontal
# (notez que c'est la fluidité, et pas la vitesse, qui est utilisée ici)
i += @fluidite
end
end
# Pour updater l'animation
def update
return if @disposed
@compteur += @vitesse
if @compteur >= @frames.size*@fluidite
# A la fin de l'animation, on libère la mémoire
dispose
end
@sprite.bitmap = @frames[@compteur/@fluidite]
end