2009-06-24 7 views
0

Parce que je veux éviter le code répétitif et que j'utilise beaucoup de formats de texte, j'ai créé une classe CustomTextFormat dans Flex Builder.Erreur Flash/Flex 1067: impossible de créer un objet TextFormat personnalisé?

Une autre classe, appelée CustomInputBox.as est d'utiliser cet objet pour créer un format:

package 
{ 
    import flash.display.Sprite; 
    import flash.text.TextField; 
    import flash.text.TextFieldType; 

    public class CustomInputBox extends Sprite 
    { 
     public function CustomInputBox(xLoc:int, yLoc:int, width:uint, height:uint, password:Boolean = false, text:String = "", font:String = "Arial", fontColor:uint = 0x000000, fontSize:uint = 18, fontBold:Boolean = false) 
     { 
      var inputBox:TextField = new TextField(); 
      inputBox.type = TextFieldType.INPUT; 
      inputBox.mouseEnabled = true; 
      inputBox.selectable = true; 
      inputBox.multiline = false; 
      inputBox.x = xLoc; 
      inputBox.y = yLoc; 
      inputBox.width = width; 
      inputBox.height = height; 
      inputBox.displayAsPassword = password; 
      var format:CustomTextFormat = new CustomTextFormat(); 
      inputBox.defaultTextFormat = format; 
      inputBox.text = text; 
      addChild(inputBox); 
     } 
    } 
} 

Le code de CustomTextFormat est la suivante:

package 
{ 
    import flash.display.Sprite; 
    import flash.text.TextFormat; 
    import flash.text.TextFormatAlign; 

    public class CustomTextFormat extends Sprite 
    { 
     public function CustomTextFormat(font:String = "Arial", fontColor:uint = 0x000000, fontSize:uint = 18, fontBold:Boolean = false, fontAlign:String = TextFormatAlign.LEFT) 
     { 
      var format:TextFormat = new TextFormat(); 
      format.font = font; 
      format.color = fontColor; 
      format.size = fontSize; 
      format.bold = fontBold; 
      format.align = fontAlign; 
     } 
    } 
} 

Maintenant, je reçois l'erreur 1067 dans le fichier CustomInputBox.as, il s'agit malheureusement d'une erreur hollandaise (un moyen de définir des erreurs flexibles en anglais?):

1067: Implication du type d'omission de type de type CustomTextFormat dans type niet-gerelateerd type flash.text: TextFormat. CustomInputBox.as

Il est difficile de traduire, mais hopefuly le numéro d'erreur et le code suffisent pour identifier mon problème. Je suis nouveau à Flash, et j'ai cherché mais je n'ai pas pu trouver ce que je fais mal.

Merci d'avance.

Répondre

1

Quelque chose est loufoque ici. Si vous souhaitez affecter votre format personnalisé comme celui-ci:

var format:CustomTextFormat = new CustomTextFormat(); 
inputBox.defaultTextFormat = format; 

Alors CustomTextFormat doit étendre TextFormat, et le code dans le constructeur de CustomTextFormat doit être modifier les propriétés de TF héritées. Alternativement, si vous voulez laisser CustomTextFormat étendre Sprite, alors vous devez changer la propriété « format » de CustomTextFormat être une propriété publique, et changer votre affectation à quelque chose comme:

var customFormat:CustomTextFormat = new CustomTextFormat(); 
inputBox.defaultTextFormat = customFormat.format; 

Est-ce que sens? À l'heure actuelle, vous essayez de définir le format de texte par défaut de l'entrée sur un objet de classe qui étend Sprite. Et l'inputBox ne sait rien de la propriété interne "format" de CustomTextFormat, qui est à la fois privée et temporaire. (Incidemment, rien de tout cela n'explique précisément le message d'erreur que vous obtenez, mais d'après mon expérience, il est assez rare que les erreurs du compilateur vraiment vous disent ce qui ne va pas ... ils ont tendance à prétendre que vous utilisez des classes illégalement quand tout ce que vous avez fait est de laisser un point-virgule, j'ai tendance à ne pas trop faire confiance aux messages d'erreur.)

+0

Merci beaucoup. Cela m'amènera beaucoup plus loin. Mon problème est que je ne sais pas vraiment ce que l'extension est pour, j'utilise simplement Sprite par défaut. J'ai vraiment besoin de trouver celui-là ... – Tom

+0

Deuxième commentaire: après avoir changé Extends en TextFormat, le format ne semble pas faire quoi que ce soit - c'est la même chose quand aucun format n'est assigné. – Tom

+0

Mise à jour: Je pense que je l'ai fonctionné maintenant. Donc en étendant TF, vous n'avez plus besoin d'appeler l'objet. Logique. – Tom

Questions connexes