要素をドラッグしたい HGroup があります。HGroup のスタイルを設定するために、実際には Rect と HGroup を含むグループです。
このコードのドラッグ領域は、現在グループ内にある要素と同じ大きさしかありません (そのため、テストのためにそこにボタンを配置しました)。ご覧のとおり、Group と HGroup の幅を手動で設定しました。すべてが本来あるべき 300 幅であると報告しますが、ドラッグ領域は HGroup 内の要素の数と同じ大きさのままです。これは、HGroup が実際に報告されているものではないと思わせます (.width
設定後にプロパティにアクセスすると 300 と報告されます)。Rect は適切に 300 幅なので、ドロップ ゾーンがどうあるべきかがわかります。
明らかに間違ったことをしているに違いない気がしますが、それがわかりません。どんなアイデアでも大歓迎です!
編集:ある種のマスキングの問題があるのだろうか。四角形にドラッグ入力イベントを追加しても (私が見ることができるように、適切なサイズであることがわかっています)、入力イベントは発生しません。どうすればこれを見つけることができますか?
package components
{
import mx.core.IUIComponent;
import mx.events.DragEvent;
import mx.graphics.SolidColor;
import mx.managers.DragManager;
import spark.components.Group;
import spark.components.HGroup;
import spark.components.VGroup;
import spark.primitives.Rect;
public class TestVerticalConstraintExpression extends Group
{
private var expressions:VGroup;
private var topExpression:Group;
private var locked:Boolean = false;
public function TestVerticalConstraintExpression()
{
super();
this.width = 300;
expressions = new VGroup();
expressions.width = 300;
this.addElement(getBackground());
topExpression = new HGroup();
expressions.addElement(topExpression);
this.addElement(getBackground());
this.addElement(expressions);
topExpression.width = 300;
topExpression.height = 50;
topExpression.addElement(new ConstraintButton());
// Setup listeners for when things are dropped onto the expression group
topExpression.addEventListener(DragEvent.DRAG_ENTER,
dragEnterHandler);
}
protected function getBackground():Rect
{
var bg:Rect = new Rect();
bg.fill = new SolidColor(Math.round(Math.random()*0xFFFFFF));
bg.left = 0;
bg.right = 0;
bg.top = 0;
bg.bottom = 0;
bg.percentWidth = 100;
bg.percentHeight = 100;
return bg;
}
protected function dragEnterHandler(event:DragEvent):void {
DragManager.acceptDragDrop(event.currentTarget as IUIComponent);
}
}
}