我有一个HGroup,我想将元素拖放到上面。为了塑造HGroup,它实际上是一个拥有Rect和HGroup的组织。Flex HGroup中的拖动区域小于组本身
此代码中的阻力区域只是作为目前该组中的元素一样大(这就是为什么我摆在那里一个按钮对其进行测试)。正如你所看到的,我已经手动设置了组和HGroup的宽度。一切都报告自己的宽度应该是300,但是阻力面积仍然与HGroup中的元素数量一样大。这让我觉得HGroup实际上并不是它报告的内容(它在设置后会报告300访问.width
属性)。 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);
}
}
}
我刚刚开始使用AS,并且对MXML文件和组件如何相互关联感到困惑,但您非常正确,我正要将此重构为MXML!感谢你的回答,把这个组合放在组里看起来应该很棒。 – cflewis