精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2009-11-02
最后修改:2009-12-25
典型问题: 当我们在Flex application里用drag and drop时,有一些默认的effects会加给所有的drag and drop操作。比如,如果drag不成功,那么drag proxy files会返回到drag initiator。 但是为什么用同样的代码在AIR 里运行就不会有这些effects。这是因为AIR里,即使指定使用DragManager, drag and drop内部还是会去使用NativeDragManager。
解决方案: 在AIR app外,drops是无法获得这些effects的。所以我想最简单一种方法是,我们可以做一个假的proxy image 模拟drag 这个动作,当drag不成功的时候,让这个image飞回到我们窗口里开始拖的那个地方。对程序内部的drops来说,我们可以做的更好一点,因为你可以通过 native drag 的event来知道具体的drop 发生在哪里?所以可以重载 Flex drag manager implementation这个类。那么我们是不是也需要重载 Flex SDK的NativeDragManagerImpl 和IDragManager,怎么去做呢? package hacks { import mx.preloaders.DownloadProgressBar; public class Preloader extends mx.preloaders.DownloadProgressBar { import mx.core.Singleton; import mx.core.WindowedApplication; import mx.managers.DragManager; public function Preloader() { import hacks.NativeDragManagerImpl; var placeholder:NativeDragManagerImpl; Singleton.registerClass("mx.managers::IDragManager", hacks.NativeDragManagerImpl); DragManager.isDragging; super(); } } }
声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
浏览 1742 次