2014-07-03 1 views
0

Je développe donc une application permettant aux utilisateurs de taper sur scène. Le texte doit apparaître partout où le curseur de la souris est positionné (et le texte suivrait le curseur de la souris s'il était déplacé). Pour la plupart, cela fonctionne plutôt bien. J'ai deux questions.AS3 Création d'un "outil texte"

1) Comment autoriser le texte à suivre le curseur de la souris? Mon code actuel permet uniquement aux utilisateurs de taper lorsqu'ils cliquent sur la scène.

var textfield = new TextField(); 
textfield.type = TextFieldType.INPUT 
textfield.autoSize = TextFieldAutoSize.LEFT; 
textfield.defaultTextFormat = textformat; 
textfield.textColor = selectedColor; 
textfield.x = mouseX; 
textfield.y = mouseY; 
stage.focus = textfield; 
textfield.selectable = false; 

     /* Add text to stage*/ 

board.addChild(textfield); 

Ma deuxième question, comment effacer le texte? Le texte serait "collé" sur la toile, donc l'utilisation de la méthode "" ne fonctionnerait pas. Je veux une "gomme" pour effacer le texte de la scène. Ce serait juste comme stage.graphics.clear mais juste pour le texte.

Toute aide que je pourrais recevoir serait grandement appréciée. Je suis encore très nouveau à AS3 et je pense que j'ai donné toutes les informations nécessaires. Merci.

Répondre

3

Pour que votre texte suit le curseur de la souris, vous pouvez ajouter un écouteur d'événement à la scène:

stage.addEventListener(MouseEvent.MOUSE_MOVE, onMouseMove); 
function onMouseMove(event:MouseEvent){ 
    textfield.x = event.stageX; 
    textfield.y = event.stageY; 
} 

pour faire cesser la suite, vous pouvez supprimer l'écouteur d'événement:

stage.removeEventListener(MouseEvent.MOUSE_MOVE, onMouseMove); 

pour effacer le texte, vous appelez textfield.text = "";

+0

Merci pour votre réponse! Mais cela ne fonctionne toujours pas correctement. C'est à peu près la seule explication que je peux fournir, elle ne suit toujours pas le curseur de la souris lorsqu'elle se déplace. Et aussi à propos de l'effacement du texte, pensez-y comme "effaçant" le texte avec une gomme, existe-t-il une autre méthode à part textfield.text = "";? Parce que cela ne répondra pas à mes besoins. – user3418126

+1

@ user3418126 Je pense que vous devez clarifier de quelle manière vous voulez effacer le texte. Définir la valeur textuelle d'un champ de texte sur une chaîne vide est la réponse la plus logique, sauf si vous avez quelque chose d'inhabituel à l'esprit. S'il vous plaît modifier votre question initiale pour fournir plus de détails. –

+0

@ user3418126 Ou ajoutez une nouvelle question en vous concentrant sur la question «effacer le texte» si vous avez besoin d'une longue explication et d'une réponse. –