2011-01-11 2 views
1

Normalement pour une chaîne à l'objet est converti comme suit.interaction avec clavier/champs de texte aide s'il vous plaît

var obj:object=getChildByName("string"); 

Et nous pouvons donner des propriétés comme à obj.x=100; Mais dans le cas d'une série de piqûres

[objet Stage].[object MainTimeline].[object TextField] 

il wil pas works.Actually i besoin de donner des propriétés à un chemin cible qui est chaîne ce que je fais ?? Voici le code pour obtenir le chemin à un MovieClip:

addEventListener(MouseEvent.CLICK, targetMC); 
function targetMC(MouseEvent:Event):void 
{ 
var curinstance = MouseEvent.target.valueOf(); 
var targ:Object = curinstance.parent; 
var path = curinstance; 
do 
{ 
    if (targ == "[object Stage]") 
    { 
    path = targ + "." + path; 
    } 
    else 
    { 

    path = targ + "." + path; 
    } 

    targ = targ.parent; 
} while (targ); 


trace(path); 

} 

je voudrais donner des propriétés au chemin.

+0

Salut mec, je ne suis pas sûr de ce que vous essayez vraiment de faire. Quel est le but principal? – robertp

+0

effectivement traiter avec l'interaction keybord.En cela, quand une touche est enfoncée sur l'un des champs de texte.Je voudrais passer le code char à tat objet .. – Akhil

+1

S'il vous plaît modifier la question ou de poster des commentaires pour ajouter des informations complémentaires ou demander autre utilisateurs pour clarifier leurs réponses. –

Répondre

2

Un certain nombre de choses sont embarrassantes sur votre code:

  1. Ne pas comparer la valeur de chaîne d'objets pour découvrir le type de classe. Utilisez le mot-clé is:

    if (obj.parent is Stage) doSomething(); 
    
  2. Ne pas utiliser les noms de classe en tant que noms de paramètres: MouseEvent est un type!

    function targetMC (ev:MouseEvent) // ...more code 
    
  3. Il est utile de méthodes de gestionnaire de nom selon l'événement sur lequel ils sont invoqués, par exemple:

    function onMouseClick (ev:MouseEvent) 
    

    ou

    function mouseClickHandler (ev:MouseEvent) 
    
  4. Si vous ne pouvez l'éviter, ne pas convertir en Object pour accéder aux membres, mais essayez d'utiliser des types de sous-classes - cela permet au compilateur de vérifier plus efficacement votre code à la recherche d'erreurs. Étant donné que tous les objets de la liste d'affichage sont des instances de DisplayObject, vous pouvez utiliser ceci:

    var obj:DisplayObject = ev.target as DisplayObject; 
    
  5. Si vous voulez afficher un chemin vers votre objet, utilisez les noms d'instance au lieu de types - vous pourriez avoir plus d'un TextField !

    private function getObjectPath (obj:DisplayObject) : String { 
        var path:String = obj.name; 
        if (obj.parent != null && !(obj.parent is Stage)) { 
         path = getObjectPath (obj.parent) + "." + path; 
        } 
        return path; 
    } 
    

Maintenant, pour votre réponse: Utilisez le KeyboardEvent.

textField.addEventListener (KeyboardEvent.KEY_UP, onKeyUp); 

et

private function onKeyUp (ev:KeyboardEvent) : void { 
    var tf:TextField = ev.target as TextField; 
    var text:String = tf.text; 
    tf.text = text + String.fromCharCode(charCode); 
} 

Notez que cela ne fonctionnera aussi longtemps que le TextField a le focus, qui est l'utilisateur doit cliquer sur le premier.

+0

@weltraumpirat dans la fonction ci-dessus getobjectpath() obtient un output.qui est en termes de chaîne. Comment puis-je convertir ceux à acheminer vers un objet particulier? – Akhil

+0

ici dans tf.text j'ai eu la chaîne mais mon problème est que convertir/passer ces valeurs à une zone de texte ciblée/textfied – Akhil

+0

Heloo gars. à partir des codes ci-dessus je reçois comme ceci [objet Stage]. [objec maintimeline]. [objet moieclip] .. je dois donner des propriétés à cet objet comme texbioox – Akhil

0

Si vous devez passer un charCode clé à un champ de texte, celui-ci doit écouter KeyboardEvent et récupérer les informations de la propriété charCode de l'événement
http://www.adobe.com/livedocs/flash/9.0/ActionScriptLangRefV3/

Votre point de vue AS3 est « différent » ... Par exemple, getChildByName ne convertit pas une chaîne en un objet, elle fait essentiellement ce que le nom de la méthode indique, elle récupère l'enfant d'un parent en utilisant son nom comme référence.

Il semble que vous adaptiez la langue que vous utilisez à AS3. Je doute que cela fonctionne ...

+0

@patrik s je viens de faire cela pour obtenir l'objet .. je sais ce que cela signifie. Vous connaissez toutes les alternatives pour convertir une chaîne en objet ?. – Akhil

+0

import flash.events.Event; var str: String = "Objet (racine) .mc_clip"; var chemin: Object = str; btn.addEventListener (MouseEvent.CLICK, clickmouse); Fonction clickmouse (ev: Evénement): void { \t path.gotoAndStop ("2"); } – Akhil

Questions connexes