2010-03-24 8 views

Répondre

1

J'ai trouvé une solution: D ici c'est le code

L'astuce était remplacer le updateDisplayList.

Joyeux hacking.

package 
{ 
import flash.display.DisplayObject; 

import mx.controls.Image; 
import mx.controls.TextInput; 
import mx.core.mx_internal; 

use namespace mx_internal; 

public class MyTextInput extends TextInput 
{ 
    private var _image:Image; 

    public function MyTextInput() 
    { 
     super(); 
    } 

    override protected function createChildren():void 
    { 
     super.createChildren(); 

     _image = new Image(); 
     _image.source = "http://sstatic.net/so/img/replies-off.png", 

     addChild(DisplayObject(_image)); 
    } 

    override protected function updateDisplayList(unscaledWidth:Number, unscaledHeight:Number):void 
    { 
     super.updateDisplayList(unscaledWidth, unscaledHeight); 

     this._image.width = 16; 
     this._image.height = 16; 

     this._image.x = this.width - this._image.width - 5; 
     this._image.y = this.height - this._image.height; 

     this.textField.width = this.width - this._image.width - 5; 
    } 
} 
} 
1

Un moyen plus facile de le faire serait de créer un composant MXML qui ressemble à l'entrée de texte que vous voulez. Je n'ai jamais vu la boîte de recherche mac OSX, mais en fonction de votre description, un composant basé sur la toile avec un fond blanc, et des bordures appropriées pourraient alors contenir une image et une entrée de texte sans frontières. Cela vous donnerait le look que vous allez pour je pense.

+0

J'essaie d'éviter cette solution de contournement, parce que si nous changeons les styles pour les entrées de texte Je ne veux pas aller à ce composant et de recréer le style et passer des heures à essayer de donner la toile le look approprié et se sentir, mais merci pour le conseil. – Felipe

+0

Je peux comprendre cela, mais comprendre que ce n'est pas une solution de contournement; C'est ce que Flex est conçu pour faire. En fait, si vous le faites une seule fois, en utilisant le mode de conception gui de flex builder, cela rendra la mise à jour et les modifications plus faciles. – invertedSpear