Following your advice I have written two solutions, I posted the code, I hope it can be useful to someone.
Solution 1 (the very ease way):
import com.greensock.transform.TransformManager;
import com.greensock.transform.TransformItem;
import com.greensock.events.TransformEvent;
import flash.display.Sprite;
import flash.text.TextField;
import flash.events.Event;
var _sprite:Sprite;
var _textField:TextField;
var _manager:TransformManager;
var _item:TransformItem;
_sprite = new Sprite() ;
addChild (_sprite);
_textField = new TextField();
_textField.multiline = true;
_textField.wordWrap = true;
_textField.type = TextFieldType.INPUT;
_textField.border = true;
_textField.text = 'Texto';
_sprite.addChild (_textField);
_manager = new TransformManager();
_item = _manager.addItem(_sprite,TransformManager.SCALE_WIDTH_AND_HEIGHT,true);
_item.addEventListener (TransformEvent.SCALE, onUpdateItem);
function onUpdateItem (event:Event):void {
_textField.width = event.target.width;
_textField.height = event.target.height;
}
Solution 2 (The most sophisticated )
Main.as
package com{
import com.greensock.transform.TransformManager;
import com.greensock.transform.TransformItem;
import com.CustomSprite;
import com.CustomEvent;
import flash.text.TextField;
import flash.events.Event;
import flash.events.MouseEvent;
import flash.text.TextFieldType;
import flash.display.Sprite;
public class Main extends Sprite {
var _textField1:TextField = new TextField();
var _textField2:TextField = new TextField();
var _customSprite:CustomSprite;
var _customSprite2:CustomSprite;
var item1:TransformItem;
var item2:TransformItem;
var _manager:TransformManager;
public function Main () {
_textField1.multiline = true;
_textField1.wordWrap = true;
_textField1.type = TextFieldType.INPUT;
_textField1.border = true;
_textField1.text = 'Texto';
_textField2.multiline = true;
_textField2.wordWrap = true;
_textField2.type = TextFieldType.INPUT;
_textField2.border = true;
_textField2.text = 'Texto 2';
_customSprite = new CustomSprite ;
addChild (_customSprite);
_customSprite.target = _textField1;
_customSprite2 = new CustomSprite ;
addChild (_customSprite2);
_customSprite2.target = _textField2;
_manager = new TransformManager();
item1 = _manager.addItem(_customSprite,TransformManager.SCALE_WIDTH_AND_HEIGHT,true);
item2 = _manager.addItem(_customSprite2,TransformManager.SCALE_WIDTH_AND_HEIGHT,true);
_customSprite.addChild (_textField1);
_customSprite.addEventListener (CustomEvent.WIDTH_CHANGED, widthChangedListener, false, 0, true);
_customSprite.addEventListener (CustomEvent.HEIGHT_CHANGED, heightChangedListener, false, 0, true);
_customSprite2.addChild (_textField2);
_customSprite2.addEventListener (CustomEvent.WIDTH_CHANGED, widthChangedListener, false, 0, true);
_customSprite2.addEventListener (CustomEvent.HEIGHT_CHANGED, heightChangedListener, false, 0, true);
_customSprite2.x = 250;
}
private function widthChangedListener (event:CustomEvent):void {
event.target.target.width = event.target.width;
}
private function heightChangedListener (event:CustomEvent):void {
event.target.target.height = event.target.height;
}
}
}
CustomSprite.as
package com{
import flash.display.Sprite;
import flash.events.Event;
import com.CustomEvent;
import flash.text.TextField;
public class CustomSprite extends Sprite {
private var _target:TextField;
public function CustomSprite () {
super ();
}
override public function set width (value:Number):void {
super.width = value;
dispatchEvent (new CustomEvent(CustomEvent.WIDTH_CHANGED));
}
override public function get width ():Number {
return super.width;
}
override public function set height (value:Number):void {
super.height = value;
dispatchEvent (new CustomEvent(CustomEvent.HEIGHT_CHANGED));
}
override public function get height ():Number {
return super.height;
}
override public function dispatchEvent (event:Event):Boolean {
if (willTrigger(event.type)) {
return super.dispatchEvent(event);
}
return true;
}
public function set target(target:TextField):void{
_target = target
}
public function get target():TextField{
return _target;
}
}
}
CustomEvent.as
package com {
import flash.events.Event;
public class CustomEvent extends Event {
public static const WIDTH_CHANGED:String = "widthChanged";
public static const HEIGHT_CHANGED:String = "heightChanged";
public function CustomEvent(type:String, bubbles:Boolean = false, cancelable:Boolean = false) {
super(type, bubbles, cancelable);
}
override public function clone():Event {
return new CustomEvent(type, bubbles, cancelable);
}
override public function toString():String {
return formatToString("CustomEvent", type, bubbles, cancelable, eventPhase);
}
}}