Forums Développement Multimédia

Aller au contenu

Détecter le contenu d'un StaticText avec un survol

CODE Actionscript

3 réponses à ce sujet

#1 oldboy_sixtynine

    Ceinture Verte

  • Members
  • PipPipPipPip
  • 65 messages

Posté 02 December 2008 - 18:01 PM

Hello,

J'aimerais récupérer le contenu de plusieurs champ de texte importé depuis AI en faisant un survol.

J'arrive bien a récupérer ces valeurs et les rendre survolables à l'aide d'une boucle comme ceci:


Action Script

var numlignes:Sprite = toutlacarte.Num_lignes;
var displayitem:DisplayObject;
var myFieldLabel:StaticText;
for (var r:int; r < numlignes.numChildren; r++)
{
displayitem = numlignes.getChildAt® ;
myFieldLabel = StaticText(displayitem);
trace(myFieldLabel.text);
numlignes.addEventListener(MouseEvent.MOUSE_OVER,arretFonction);


}

Mais ensuite plus possible de récupérer quoi que ce soit avec un MouseEvent comme je fais ci-après pour une série de sprite pour récupérer le nom( et qui fonctionne bien bien qu'il y ai plus de 1500 boutons dans ce sprite)

Action Script

function arretFonction(MEvent:MouseEvent):void
{
valX = mouseX +15;
valY = mouseY - 20;
// on envoie les infos d'affichage d'arrêt par défaut

for (var z:int; z < stockit.length; z++)
{
//si on trouve le num correspondant dans la liste
if (stockit[z][0] ==MEvent.target.name.slice(6,10))
{
aff_txt_arret.text = stockit[z][1];
}
}
aff_arret();
}

J'aimerais tellement éviter la terrible opération de tout devoir faire ça ... icon_redface.gif à la main





#2 dada

  • Honoris
  • PipPipPipPipPipPipPipPip
  • 8510 messages

Posté 02 December 2008 - 18:08 PM

Salut,

La classe StaticText n'héritant pas de InteractiveObject, ses instances ne sont pas interactives (pas d'évènement souris, clavier, etc).

Eventuellement, avec une boucle récursive, on pourrait parcourir le contenu du DisplayObjectContainer représentant le fichier Illustrator, pour y détecter tous les StaticText, les mettre dans un Sprite et écouter les évènements souris sur ce dernier, pour ensuite accéder à son enfant (le StaticText) et sa propriété... text. icon_biggrin.gif

#3 dada

  • Honoris
  • PipPipPipPipPipPipPipPip
  • 8510 messages

Posté 02 December 2008 - 19:33 PM

Voici un exemple.

La fonction récursive :

Action Script

function registerRecursStatic ( pContainer:DisplayObjectContainer, pEventType:String, pListener:Function ):void
{
var i:int = pContainer.numChildren,
child:DisplayObject,
childIndex:int,
staticContainer:Sprite;


while ( i-- > 0 )
{
// Pour chaque enfant du conteneur pContainer,
child = pContainer.getChildAt (i);

// si l'enfant est un conteneur, on lui fait le même traitement (récursion) ;
if ( child is DisplayObjectContainer )
arguments.callee ( child as DisplayObjectContainer, pEventType, pListener );
// sinon si c'est un champ de texte statique
else if ( child is StaticText )
{
// on lui créé un nouveau conteneur (pour l'interactivité).
staticContainer = new Sprite();
// On récupère son index actuel
childIndex = pContainer.getChildIndex ( child );
// pour placer sur le même index son nouveau conteneur.
pContainer.addChildAt ( staticContainer, childIndex );
// On place ensuite le champ dedans
staticContainer.addChild ( child );
// et on s'abonne à son évènement.
staticContainer.addEventListener ( pEventType, pListener );
}
}
}

Pour la tester, j'ai mis le symbole "graphic" de mon fichier AI dans un clip, posé sur la scène avec un nom d'occurence : "conteneur_AI".

Puis :

Action Script

registerRecursStatic ( conteneur_AI, MouseEvent.ROLL_OVER, staticTextOverHandler );

function staticTextOverHandler ( e:MouseEvent ):void
{
// Dans notre Sprite
var sprite:Sprite = e.target as Sprite;
// se trouve le champ de texte statique
var staticText:StaticText = sprite.getChildAt(0) as StaticText;
// dont on peut lire le texte ^^
trace( "survol du champ texte statique contenant le texte :", staticText.text );
}
Fonction à n'appeller qu'une fois. wink.gif Si tu voulais modifier pendant l'exécution le type d'évènement utilisé, il faudrait la modifier un peu. smile.gif

#4 oldboy_sixtynine

    Ceinture Verte

  • Members
  • PipPipPipPip
  • 65 messages

Posté 03 December 2008 - 08:45 AM

Salut,

Pas superévident de tout comprendre la gymnastique de ta fonction récursive juste au réveil, on pourrait presque y voir un rapport avec ton pseudo icon_lol.gif , mais ça fonctionne et me sera probablement bien utile pour la suite.

Merci beaucoup gourou.gif



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

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