AccueilAccueil  FAQFAQ  RechercherRechercher  S'enregistrerS'enregistrer  MembresMembres  Connexion  

Partagez
 

 Scrolling texte sinusoidal

Aller en bas 
AuteurMessage
Invité
Invité



Scrolling texte sinusoidal Empty
MessageSujet: Scrolling texte sinusoidal   Scrolling texte sinusoidal EmptyLun 4 Jan 2010 - 17:41

tout est dans le titre harpe

Scrolling texte sinusoidal Sin10

Code:
//draw_text_sinus(x,y,string,freq,ceil,ang,move,xscale,yscale,color1,color2,alpha)

var xx,yy,str,freq,cei,ang,move,xs,ys,co1,co2,al,lt;

xx=argument0 yy=argument1 str=argument2 freq=argument3
cei=argument4 ang=argument5 move=argument6 xs=argument7
ys=argument8 c1=argument9 c2=argument10 al=argument11

lt=string_length(str)

for (i=0; i<lt; i+=1;)
{
draw_text_ext_transformed_color(xx+string_width(string_copy(str,0,i))*xs,
yy+lengthdir_y(cei,ang+i*(360*freq/lt))*ys,string_copy(str,i+1,1)
,-1,-1,xs,ys,lengthdir_y(cei,ang+i*(360*freq/lt))*move,c1,c1,c2,c2,al)
}

Scrolling texte sinusoidal Link

Exclamation la version ultra optimisé d'onilink Exclamation (3X (et quelques) plus de rapidité )

Code:

//draw_text_sinus(x,y,string,freq,ceil,ang,move,xscale,yscale,color1,color2,alpha)
var i, tt;

if( !variable_local_exists('__DCreate') )
{
    __DCreate = 1
    __Strl[0] = 0
    __Len = string_length(argument2)
    for(i=0 ; i<__Len ; i+=1)
    {
        __Strc[i] = string_copy(argument2, i+1, 1)
        __Strl[i+1] = __Strl[i] + string_width(__Strc[i])
 
    }
}
tt = 360*argument3/__Len

for (i=0; i<__Len; i+=1;)
{
    ly = lengthdir_y( argument4, argument5 + i*tt )
    draw_text_ext_transformed_color(argument0 + __Strl[i]*argument7
    , argument1 + ly*argument8, __Strc[i]
    , -1, -1, argument7, argument8, ly*argument6, argument9, argument9, argument10, argument10, argument11)
}


Dernière édition par shm39 le Jeu 24 Juin 2010 - 16:47, édité 4 fois
Revenir en haut Aller en bas
bibi675
Utilisateur confirmé: Rang *****
bibi675

Messages : 2456
Localisation : Oise
Projet Actuel : Jeu par navigateur original

Scrolling texte sinusoidal Empty
MessageSujet: Re: Scrolling texte sinusoidal   Scrolling texte sinusoidal EmptyLun 4 Jan 2010 - 18:03

Excellent, pas très léger niveau perfs mais ça m'étonnerait que l'on puisse faire mieux.

_________________
Scrolling texte sinusoidal 1005394
Revenir en haut Aller en bas
Invité
Invité



Scrolling texte sinusoidal Empty
MessageSujet: Re: Scrolling texte sinusoidal   Scrolling texte sinusoidal EmptyLun 4 Jan 2010 - 18:11

merci , et oui justement c'est normal le script execute un draw_text pour chaque caractère :gniah:
Revenir en haut Aller en bas
red-error
Utilisateur confirmé: Rang ****
red-error

Messages : 1015
Projet Actuel : Scrolling texte sinusoidal Bas-machoire2000

Scrolling texte sinusoidal Empty
MessageSujet: Ce message est ironique ^-^   Scrolling texte sinusoidal EmptyMar 5 Jan 2010 - 21:08

Y'aurait moyent de l'optimiser en mettant tous les caractères à même auteur dans un même draw.
Bien sûr. :gniah:


Dernière édition par red-error le Lun 8 Fév 2010 - 18:47, édité 1 fois
Revenir en haut Aller en bas
[TheDarkTiger]
Modérateur
[TheDarkTiger]

Messages : 7420
Localisation : Essonne

Scrolling texte sinusoidal Empty
MessageSujet: Re: Scrolling texte sinusoidal   Scrolling texte sinusoidal EmptyDim 7 Fév 2010 - 23:54

non
déjà avec l'espacement des cratères, ça boufferait presque plus à tout calculer, ensuite, il faudrait remplir d'espaces, et c'est pas dit que ça soit mieux ...

_________________
Bonne chance pour vos projets actuels ! Prêt à aider ceux qui en ont besoin ^^
Scrolling texte sinusoidal U3dfr2 l'antique http://www.membres.lycos.fr/thedarkminousite/Scrolling texte sinusoidal Sign
Bienvenue au 2544eme utilisateur : sachem !
Revenir en haut Aller en bas
http://www.tdms.fr
onilink_
Modérateur
onilink_

Messages : 9094
Localisation : Montpellier
Projet Actuel : Planet Centauri
OniDev

Scrolling texte sinusoidal Empty
MessageSujet: Re: Scrolling texte sinusoidal   Scrolling texte sinusoidal EmptyLun 8 Fév 2010 - 19:10

...tout est possible ^^

J'ai reussi a rendre la fonction 3 fois plus rapide en diminuant les calculs, voila ce que ça donne :

Spoiler:
 

_________________
Scrolling texte sinusoidal Runningpotato1Scrolling texte sinusoidal TvF6GED
Revenir en haut Aller en bas
Invité
Invité



Scrolling texte sinusoidal Empty
MessageSujet: Re: Scrolling texte sinusoidal   Scrolling texte sinusoidal EmptyLun 8 Fév 2010 - 19:38

eh ben... c'est un peu comme dire : "Eh regardez moi ! mon zizi est 3 fois plus grand que le sien, tin tin din !"
'fin je sais que c'était de bonne foi... hap mais bon, je vais regarder ton script de plus près, merci pour ton effort onilink.

Spoiler:
 
Revenir en haut Aller en bas
onilink_
Modérateur
onilink_

Messages : 9094
Localisation : Montpellier
Projet Actuel : Planet Centauri
OniDev

Scrolling texte sinusoidal Empty
MessageSujet: Re: Scrolling texte sinusoidal   Scrolling texte sinusoidal EmptyLun 8 Fév 2010 - 20:01

shm31 a écrit:
eh ben... c'est un peu comme dire : "Eh regardez moi ! mon zizi est 3 fois plus grand que le sien, tin tin din !"
'fin je sais que c'était de bonne foi... hap mais bon, je vais regarder ton script de plus près, merci pour ton effort onilink.

Spoiler:
 

OMG ! Quelle comparaison kill
Sinon ben ça m'éclate d'optimiser des fonctions, chacun ses passes temps :p_lol:

_________________
Scrolling texte sinusoidal Runningpotato1Scrolling texte sinusoidal TvF6GED
Revenir en haut Aller en bas
bibi675
Utilisateur confirmé: Rang *****
bibi675

Messages : 2456
Localisation : Oise
Projet Actuel : Jeu par navigateur original

Scrolling texte sinusoidal Empty
MessageSujet: Re: Scrolling texte sinusoidal   Scrolling texte sinusoidal EmptyMar 9 Fév 2010 - 9:24

Tu dois t'éclater tous les soirs toi. gnii

_________________
Scrolling texte sinusoidal 1005394
Revenir en haut Aller en bas
Invité
Invité



Scrolling texte sinusoidal Empty
MessageSujet: Re: Scrolling texte sinusoidal   Scrolling texte sinusoidal EmptyJeu 24 Juin 2010 - 13:42

onilink_ a écrit:
...tout est possible ^^

J'ai reussi a rendre la fonction 3 fois plus rapide en diminuant les calculs, voila ce que ça donne :

Spoiler:
 

en fait, comment t'as réussi a trouver les bons calculs pour le script ?
je ne sais pas mais je trouve ça plutôt impressionnant.

et pis je n'ai jamais été bon en ce qui concerne l'analyse des scripts, lol
Revenir en haut Aller en bas
onilink_
Modérateur
onilink_

Messages : 9094
Localisation : Montpellier
Projet Actuel : Planet Centauri
OniDev

Scrolling texte sinusoidal Empty
MessageSujet: Re: Scrolling texte sinusoidal   Scrolling texte sinusoidal EmptyJeu 24 Juin 2010 - 14:02

Ben je sais plus trop ce que j'avais fait mais le but est de repeter le moins de fois possible les longs calculs ainsi que les fonctions qui prennent pas mal de temps.

Ici si je me souviens bien string_width prenais pas mal de temps donc j'ai tout mis dans un tableau afin de ne faire les calculs qu'une seule fois.
Pareil pour la trigo, et d'ailleur je pense qu'il est encore possible d'optimiser ta fonction la vu qu'avant j'utilisais pas les lengthdir

Edit
Encore une chose : utiliser le mot clé var pour detruire et reconstruire les variables prend pas mal de temps aussi, et j'avais aussi contourné ce probleme...

_________________
Scrolling texte sinusoidal Runningpotato1Scrolling texte sinusoidal TvF6GED
Revenir en haut Aller en bas
onilink_
Modérateur
onilink_

Messages : 9094
Localisation : Montpellier
Projet Actuel : Planet Centauri
OniDev

Scrolling texte sinusoidal Empty
MessageSujet: Re: Scrolling texte sinusoidal   Scrolling texte sinusoidal EmptyJeu 24 Juin 2010 - 14:24

J'ai regardé ce que je t'avais posté et j'ai presque été choqué x)

Plus joli, et on gagne encore en fps
Code:

//draw_text_sinus(x,y,string,freq,ceil,ang,move,xscale,yscale,color1,color2,alpha)
var i, tt;

if( !variable_local_exists('__DCreate') )
{
    __DCreate = 1
    __Strl[0] = 0
    __Len = string_length(argument2)
    for(i=0 ; i<__Len ; i+=1)
    {
        __Strc[i] = string_copy(argument2, i+1, 1)
        __Strl[i+1] = __Strl[i] + string_width(__Strc[i])
   
    }
}
tt = 360*argument3/__Len

for (i=0; i<__Len; i+=1;)
{
    ly = lengthdir_y( argument4, argument5 + i*tt )
    draw_text_ext_transformed_color(argument0 + __Strl[i]*argument7
    , argument1 + ly*argument8, __Strc[i]
    , -1, -1, argument7, argument8, ly*argument6, argument9, argument9, argument10, argument10, argument11)
}

_________________
Scrolling texte sinusoidal Runningpotato1Scrolling texte sinusoidal TvF6GED
Revenir en haut Aller en bas
Wargamer
*Excellent utilisateur*
Wargamer

Messages : 6936
Projet Actuel : Bataille de cake au fruits

Scrolling texte sinusoidal Empty
MessageSujet: Re: Scrolling texte sinusoidal   Scrolling texte sinusoidal EmptyJeu 24 Juin 2010 - 19:35

c'est quoi string widht? je connais le length qui renvoi le nombre de caratères

_________________
Scrolling texte sinusoidal Wargamer3
Règle #1 du CBNA, ne pas chercher à faire dans la subtilité; personne comprend
Revenir en haut Aller en bas
red-error
Utilisateur confirmé: Rang ****
red-error

Messages : 1015
Projet Actuel : Scrolling texte sinusoidal Bas-machoire2000

Scrolling texte sinusoidal Empty
MessageSujet: Re: Scrolling texte sinusoidal   Scrolling texte sinusoidal EmptyJeu 24 Juin 2010 - 19:45

Ca doit renvoyer la largeur du texte avec la police actuelle si tu le drawais, comme string_height doit donner la hauteur...

Sinon je crois que j'arrive presque à comprendre.
C'est le lengthdir qui est sensé être plus rapide donc ?
Revenir en haut Aller en bas
Contenu sponsorisé




Scrolling texte sinusoidal Empty
MessageSujet: Re: Scrolling texte sinusoidal   Scrolling texte sinusoidal Empty

Revenir en haut Aller en bas
 
Scrolling texte sinusoidal
Revenir en haut 
Page 1 sur 1

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
Forum Le CBNA :: Développement :: Scripts GML-
Sauter vers: