Forums Développement Multimédia

Aller au contenu

adapter taille caractère au sprite

Director

6 réponses à ce sujet

#1 gegedade

    Ceinture Marron

  • Members
  • PipPipPipPipPipPip
  • 144 messages

Posté 09 April 2010 - 09:59 AM

Bonjour, et désolé si ce sujet a déjà étét traité, j'ai cherché une heure sans trouver...

J'ai un sprite sur la scène, qui doit recevoir de manière dynamique un texte formaté (issu de .rtf)

Pour que l'ensemble du texte soit visible dans le sprite quelle que soit le nombre de caractères du texte, je fais ce qui suit :

lepointmaxi=point(1300,600) --je mémorise un point situé en bas à droite de mon sprite
sprite(x).member.fontSize=100 --je donne une taille de caractères volontairement trop importante,

repeat while sprite(x).pointToChar(lepointmaxi)<sprite(x).member.char.count
--tant que le pointToChar est inférieur au nombre de caractères de l'acteur,
sprite(x).member.fontSize=sprite(x).member.fontSize-1
end repeat

Le problème c'est que ça fonctionne de manière aléatoire !!! Parfois (sur un même texte rechargé) la valeur de pointToChar se met à -1 et là, évisemment, je ne sors plus de ma boucle... D'autres fois ça marche nickel, j'affiche ce qui se passe dans la fenêtre messages et je vois bien le pointToChar qui monte et le fontSize qui descend (ainsi que sur ma scène), jusqu'à la stabilisation avec le text eentier affiché.

Quelqu'un a-t-il déjà traité ce problème ? Une autre difficulté, c'est que je peux difficilement passer par la récupéraiton du texte dans un autre acteur temporaire par exemple, car ce texte est formaté (caractère - couleur - italiques ou pas, etc.) et que si je passe par une copir du texte seul, je risque de perdre certaines dimensions (du moins c'est ce à quoi je me suis heurté cette nuit, mais j'étais peut-être trop fatigué...)

Merci d'avance à tous

#2 glurp

    Modérateur

  • Moderateur
  • PipPipPipPipPipPipPipPip
  • 1260 messages

Posté 10 April 2010 - 12:31 PM

Salut gegedade,

Pourquoi pointToChar vaut -1 ?
Ne serait-ce pas parce qu'il n'y a plus de caractère au point déterminé ?
Si oui, il suffirait alors de rajouter cette éventualité comme condition.

#3 Ned.Net

  • Members
  • PipPipPipPipPipPipPipPip
  • 727 messages

Posté 10 April 2010 - 12:52 PM

Salut,

une boucle "repeat" risque de bosser plus vite que le blitter de director, donc d'un test à l'autre tu auras des retours qui ne correpsondent pas à ce que tu as décidé, vu que la valeur affectée (fontsize) n'aura pas eu le temps d'être traitée et d'impacter ce que tu testes (pointToChar)

Une vilaine solution consiste à coller un "updatestage" dans ta boucle, et la solution "smart" consiste à éclater ton script en script asynchrone exécuté sur un exitframe()

hth

#4 gegedade

    Ceinture Marron

  • Members
  • PipPipPipPipPipPip
  • 144 messages

Posté 10 April 2010 - 12:53 PM

Bonjour Glurp, merci de ta réponse

normalement, -1 signifie qu'on est en dehors du texte... mais si je mets ça en condition, il arrive souvent que -1 soit renvoyé alors que le texte n'entre pas encore dans le sprite !! Cette réaction a l'air un peu aléatoire en plus.
J'en conviens, c'est assez extraordinaire... Je soupçonne un truc vraiment bizarre : les mêmes lignes de code, appliquées sur un sprite de taille "normale" (inférieure à 1024) ont toujours foncitonné de manière idéale. Lorsqu'on passe à des définitions HD (comme c'est de plus en plus le cas), on a des surprises...

Si quelqu'un pouvait essayer ces lignes sur sa machine avec un sprite de taille supérieure à 1300 de large et approchant de 250 de haut, et me dire ce qu'il obtient, ce serait super-sympa.

#5 gegedade

    Ceinture Marron

  • Members
  • PipPipPipPipPipPip
  • 144 messages

Posté 10 April 2010 - 12:56 PM

(en réponse à Ned.net)

Ouh la, je crois que tu viens de mettre le doigt sur quelque chose, là... Ca pourrait bien être ça.

Je l'avais soupçonné et donc j'avais essayé le updateStage, mais pas de modification ; en revanche, il faut que je teste le script asynchrone (bonjour le bazar, c'est dans une suite d'opérations assez éléphantesques, je n'ai pas la maîtrise de l'optimisation de notre ami Matse).

Je vais chercher de ce côté en tous cas. Merci !!

Modifié par gegedade, 10 April 2010 - 12:58 PM.


#6 bubarnet

  • Members
  • PipPipPipPipPipPipPipPip
  • 615 messages

Posté 10 April 2010 - 13:49 PM

Si tu es sous director <= mx2004 alors ça ne devrait pas être le cas, les traitements sur le texte sont synchrones (ie les modifications sont appliquées immédiatement et avant l'exécution de la prochaine instruction). Par contre à partir de dir11, tout a changé et les modifications sont maintenant asynchrones (ce qui me pose un gros souci perso). Donc ces modifs peuvent n'être appliquées qu'au début de la prochaine frame. Voire même entre le début de la frame et l'affichage du texte à l'écran (à vérifier).

#7 gegedade

    Ceinture Marron

  • Members
  • PipPipPipPipPipPip
  • 144 messages

Posté 10 April 2010 - 13:59 PM

Effectivement, Bubarnet je suis sous Dir 11.5 et c'est un peu le bazar pour le texte (j'ai déjà alimenté le forum en interrogations sur la récupération des .rtf...).

Ce qui est curieux, c'est que sur un autre fichier (avec une sprite de dimensions réduites) ça fonctionne sans jamais arriver à la valeur -1 ! Je vais tester ça de plus près tout à l'heure.



1 utilisateur(s) li(sen)t ce sujet

0 membre(s), 1 invité(s), 0 utilisateur(s) anonyme(s)

authorised training centre

Centre de Formation Mediabox - Adobe et Apple Authorised Training Center.

Déclaré auprès de la Direction du Travail et de la Formation Professionnelle

Mediabox : SARL au capital de 62.000€ - Numéro d'activité : 11 75 44555 75 - SIRET : 49371646800035

MEDIABOX, 23, rue de Bruxelles, 75009 PARIS

FFP