カスタムコンテナのaddChildAt()メソッドをオーバーライドできます。 addChild()はaddChildAt()を呼び出すため、これはaddChild()メソッドにも適用されます。ここで幅と高さを確認し、コンポーネントの幅/高さが変更されるたびに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;});
}
EDIT
あなたはこのコードを使用したい場合は、ちょうどそうのように、キャンバスクラスを拡張する新しいクラスを作成:これを追加するために
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>
だけRED、BLUEに背景色を追加し、与えられた幅と高さを超えて行くされているコンテナを見つけるための最善の方法、GREENなど、この問題の原因となっているコンポーネントを正確にそれを見るためにあなたのアプリケーションを実行します。このような問題に対処する簡単な方法です。 –
なぜMX *と* Sparkコンポーネントを使用していますか?ここにあるものすべてをSparkにすることができます。 –
正直言って、J_A_Xとは、私が何をしているのか分かりません。私はスパークとMXを使用していることを知っていますが、私はそれが何であるかはわかりません。私はちょうど一緒に何かを一緒にハックしようとしていると大丈夫だとすぐに学校の割り当てを行うには:) –