我正在第一次使用flex4 / as3中的拖放功能。我使用DragManager类,现在基本的拖放工作。但是,我如何更改当我将对象拖到我无法丢弃的区域时显示的小红色“拒绝光标”?
我可以在样式规范中找到“rejectCursor”:http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/mx/managers/DragManager.html#styleSummary
但我不知道如何在AS3中设置。我是否必须使用CSS,如果是的话,你能给我一个简单的例子吗?会非常有帮助的!感谢。
答案 0 :(得分:2)
您需要使用<fx:Style>
标记来声明全局样式:
<fx:Style>
@namespace s "library://ns.adobe.com/flex/spark";
@namespace mx "library://ns.adobe.com/flex/mx";
mx|DragManager {
rejectCursor: Embed('path/to/icon.pngORswf');
}
</fx:Style>
编辑:要从AS3类而不是MXML执行此操作,您可以使用:
import mx.core.FlexGlobals;
import mx.styles.IStyleManager2;
import mx.styles.CSSStyleDeclaration;
[Embed('path/to/icon.pngORswf')]
private var rejectCursor:Class;
var mgr:IStyleManager2 = FlexGlobals.topLevelApplication.styleManager;
var selector:String = "mx.managers.DragManager";
var decl:CSSStyleDeclaration = mgr.getStyleDeclaration(selector);
if (!decl)
decl = new CSSStyleDeclaration(selector);
decl.setStyle("rejectCursor", rejectCursor);
mgr.setStyleDeclaration(selector, decl, false);
答案 1 :(得分:1)
通常在AS3中,您可以在Flex组件上设置样式,如下所示:
UIComp.setStyle('styleName',newValue);
但是,由于DragManager不扩展UIComponent,因此setStyle方法不存在。从这里开始,我猜了一下。
如果你深入研究代码;你会找到DragProxy类和showFeedback方法,它有一个像这样的段:
var styleSheet:CSSStyleDeclaration = styleManager.getMergedStyleDeclaration("mx.managers.DragManager");
newCursorClass = styleSheet.getStyle("rejectCursor");
因此,您可以尝试在DragProxy的实例上设置该样式;但是您需要访问DragProxy实例。看起来你需要使用mx_internal来做那个:
import mx.core.mx_internal;
use mx_internal
然后你可以这样做:
var myDragProxy : DragProxy = DragManager.dragProxy()
dragProxy.setStyle('rejectCursor', newValue);