当前位置:主页 > 开发频道 > Mac开发 > Cocoa >

实现鼠标拖拽删除对象时烟雾缭绕效果的代码

时间: 2010-06-30 15:46 点击:

很多Mac软件在鼠标拖拽删除时,都会有一个烟雾缭绕然后消失的效果,非常形象如下图 CocoaChina 会员bobgreen为大家分享了实现该删除效果的实例,范例实现的功能是: 1,程序运行后,把

很多Mac软件在鼠标拖拽删除时,都会有一个烟雾缭绕然后消失的效果,非常形象如下图

CocoaChina 会员“bobgreen”为大家分享了实现该删除效果的实例,范例实现的功能是:
1,程序运行后,把中间显示的系统文件和文件夹用鼠标左键往外拖,可以发现鼠标变成了烟雾鼠~
2,在烟雾鼠的状态下放开鼠标左键,烟雾缭绕了~

本范例不会对你电脑里的文件做任何修改。

核心代码
1,拖拽出范围时变成烟雾鼠,并在拖拽出window时不让鼠标形状重置。

  1. - (void)draggingExited:(id < NSDraggingInfo >)sender{
  2.     [super draggingExited:sender];
  3.     [[NSApp keyWindow] enableCursorRects];
  4.     [[NSCursor disappearingItemCursor] set];
  5. }


2, 第一个方案用的[[NSApp keyWindow] enableCursorRects];无法解决多窗口间拖动鼠标保持鼠标状态的问题。于是我用第二个方案来解决。
subclass所有 window,添加以下函数即可。

  1. - (void)disableCursorRects{
  2. }


3, 松开鼠标左键后,烟雾缭绕的效果需要用以下代码实现。


  1. - (void)draggingEnded:(id < NSDraggingInfo >)sender{
  2.     NSWindow *destinationWindow = [sender draggingDestinationWindow];
  3.     NSShowAnimationEffect(NSAnimationEffectPoof, [destinationWindow convertBaseToScreen:[sender draggingLocation]], NSZeroSize, nil, NULL, NULL);
  4. }
效果如下图


附件下载:  CursorControlTest.zip (38 K)   CursorControlTest.app.zip (32 K)

 

顶一下(0)

0%

踩一下(0)

0%

发表评论

评价: 中立 好评 差评 请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。

表情: