Вы можете просто переопределить метод addChildAt () вашего пользовательского контейнера.(это также охватывает метод addChild (), потому что addChild () вызывает addChildAt ()).Там вы можете проверить ширину и высоту и добавить changeWatchers, чтобы проверять каждый раз, когда ширина / высота компонента изменяется.Изменения должны использоваться, потому что DisplayObject не имеет свойства maxWidth / maxHeight (иначе это было бы еще проще).
override public function addChildAt(child:DisplayObject, index:int):DisplayObject
{
super.addChildAt(child, index);
if(child.width > 640)child.width = 640;
if(child.height > 480)child.height = 480;
ChangeWatcher.watch(child, "width", function():void{child.width = (child.width > 640) ? 640 : child.width;});
ChangeWatcher.watch(child, "height", function():void{child.height = (child.height > 480) ? 480 : child.height;});
}
РЕДАКТИРОВАТЬ
Когда вы хотитечтобы использовать этот код, просто создайте новый класс, который расширяет класс Canvas, например:
package com
{
import mx.containers.Canvas
public class CustomCanvas extends Canvas
{
public function CustomCanvas():void
{
super();
}
override public function addChildAt(child:DisplayObject, index:int):DisplayObject
{
super.addChildAt(child, index);
if(child.width > 640)child.width = 640;
if(child.height > 480)child.height = 480;
ChangeWatcher.watch(child, "width", function():void{child.width = (child.width > 640) ? 640 : child.width;});
ChangeWatcher.watch(child, "height", function():void{child.height = (child.height > 480) ? 480 : child.height;});
}
}
}
Чтобы затем добавить это с помощью простого mxml, вы можете просто сделать что-то вроде этого.Это будет иметь все функциональные возможности, которые имел бы Canvas, расширенный вашей собственной adchild () - функциональностью.
<com:CustomCanvas someproperty="somevalue"></com:CustomCanvas>