我有一个skinnableContainer,它充当其他可拖放项目的容器。该容器的放置功能是在添加容器的同时从其父容器添加的。
这一切都很好,直到我向skinableContainer添加了一个皮肤类,现在没有一个可拖动的项目可以像以前那样放入容器中。
我假设从皮肤中包装内容的Group组件在某种程度上起到了一个块的作用,但我不确定如何允许drop功能通过它?
有什么想法吗?
编辑下面的皮肤代码:
<?xml version="1.0" encoding="utf-8"?>
<s:Skin xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:mx="library://ns.adobe.com/flex/mx" xmlns:s="library://ns.adobe.com/flex/spark" alpha.disabled="0.5">
<fx:Metadata>
[HostComponent("spark.components.SkinnableContainer")]
</fx:Metadata>
<s:states>
<s:State name="normal" />
<s:State name="disabled" />
</s:states>
<!-- layer 1: border -->
<s:Rect left="0" right="0" top="0" bottom="0" radiusX="5" radiusY="5">
<s:stroke>
<s:SolidColorStroke color="0" alpha="0.50" weight="1" />
</s:stroke>
</s:Rect>
<s:Group id="contentGroup" left="0" right="0" top="0" bottom="0" >
<s:layout>
<s:VerticalLayout/>
</s:layout>
</s:Group>
</s:Skin>
您的自定义皮肤没有背景填充,因此除了边框之外,它是完全透明的。正因为如此,没有"命中区"可以放置你的物品(现在,如果你的目标恰好是1px的边界,你可能可以放置它们)。
显然,解决方案是给它一个填充。不用担心,如果您希望它看起来透明,只需将其alpha
设置为0
即可。
<s:Rect left="0" right="0" top="0" bottom="0" radiusX="5" radiusY="5">
<s:fill>
<s:SolidColor alpha="0" />
</s:fill>
<s:stroke>
<s:SolidColorStroke alpha="0.50" />
</s:stroke>
</s:Rect>