Mam inny pomysł, daj mi 10min =3
EDIT
Finisz.
// argument0 - Sprit albo plik ktory przechowuje animacje
// argument1 - Ilosc klatek animacji
// argument2 - precise
// argument3 - transparent
// argument4 - smooth
// argument5 - xorig
// argument6 - yorig
// return - ID stworzonego sprita albo false w przypadku niepowodzenia
//Tymczasowe
var _spriteScript, _spriteOut, _surface;
//Ladujemy sprita
if( is_real( argument[0] ) )
//Z innego sprita
{
if( sprite_exists( argument[0] ) )
_spriteScript = argument[0];
else
return false; //false gdy nie istnieje
}
else
//Z pliku
{
if( file_exists( argument[0] ) )
_spriteScript = sprite_add( argument[0], 1, false, false, false, false, 0, 0 );
else
return false; //false gdy nie istnieje
}
//Tymczasowe surface
_surface = surface_create( sprite_get_width( _spriteScript ), sprite_get_height( _spriteScript ) );
//Przerzucamy sprita do surface - bo nie mozna zaladowac go automatycznie do surface >_<!
surface_set_target( _surface );
draw_clear( c_fuchsia );
draw_sprite( _spriteScript, 0, 0, 0 );
surface_reset_target();
//Kasujemy tymczasowego sprita
sprite_delete( _spriteScript );
//Ladujemy nowego sprita i jego pierwsza klatke
_spriteOut = sprite_create_from_surface( _surface, 0, 0, surface_get_width( _surface ) div argument[1], surface_get_height( _surface ), argument[2], argument[3], argument[4], true, argument[5], argument[6] );
//Ladujemy pozostale klatki
for( n = 1; n < argument[1]; n += 1 )
sprite_add_from_surface( _spriteOut, _surface, n * ( surface_get_width( _surface ) div argument[1] ), 0, surface_get_width( _surface ) div argument[1], surface_get_height( _surface ) );
//Kasujemy surface
surface_free( _surface );
//Zwracamy ID nowego sprita
return _spriteOut;
Babum, ładuje albo z pliku albo z sprita =) Oczywiście to jest funkcja (script). Dodałem opis.