2010-02-15 18 views
6

इंटरफ़ेस बिल्डर.एप (और कुछ अन्य कोको ऐप्स) में खींचते समय ड्रैग छवि को कैसे मोड़ना है, छवि खींचने के दौरान ड्रैग छवि को मॉर्फ करने का बहुत अच्छा/सेक्सी प्रभाव होता है जब आप अपनी खिड़की से खींचने योग्य आइटम खींचते हैं ।कोको:

इंटरफ़ेस Buildler.app में उदाहरण के लिए:

  1. लाइब्रेरी पैलेट (⇧⌘L, या उपकरण मेनू -> लाइब्रेरी) दिखाएँ
  2. खींचें लाइब्रेरी पैलेट से बाहर एक आइटम

नोट: जब आप लाइब्रेरी पैलेट विंडो से आइटम को खींचते हैं, तो यह मूल सूची आइटम की छवि से ड्रैग किए गए आइटम के आइकन की छवि में बदल जाता है।

मैंने सामान्य कोको NSDragSource/NSDragDestination सुविधाओं का उपयोग करके अपने आवेदन में ड्रैग और ड्रॉप को पूरी तरह कार्यान्वित किया है।

हालांकि, मुझे ड्रैग करते समय इस छवि को मॉर्फ करने के लिए एक हुक नहीं मिल रहा है। मैं

-[NSView dragImage:at:offset:event:pasteboard:source:slideBack:] 

पर ओवरराइड करके प्रारंभिक ड्रैग छवि वापस कर रहा हूं लेकिन इसे केवल ड्रैग की शुरुआत में ही बुलाया जाता है।

आप कैसे संकेत करते हैं कि आप वर्तमान ड्रैग छवि को प्रतिस्थापित करना चाहते हैं (आदर्श रूप से सेक्सी मॉर्फ प्रभाव का उपयोग कर)।

उत्तर

12

आप लोगों ने मुझे इसे हरा दिया। :-)

हां, JLNDragEffectManager ओपन सोर्स (कृपया अपने ऐप्स में एट्रिब्यूशन के साथ) है और मेरे ब्लॉग पर उपलब्ध है। इसे 10.5 तक कोई संशोधन नहीं होने के साथ-साथ ठीक काम करना चाहिए, लेकिन मुझे अब और यकीन नहीं है। दूसरों से जुड़ा हुआ है (और यह आसानी से googleable है), इसलिए आत्म-बधाई ब्लॉग लिंकिंग से बचने के लिए, मैं इसे छोड़ दूंगा।

मुद्दे: एक डेवलपर ने ऑफ़सेट समर्थन खींचने की कमी पर (और ठीक करने के लिए कोड सबमिट किया) पर टिप्पणी की। मैं बस अद्यतन पोस्ट करने के लिए चारों ओर नहीं मिला है। यह एकमात्र बकाया मुद्दा है जिसे मैं जानता हूं।

सुधार: मैं तालिका पंक्तियों रहता तालिका पंक्तियों की तरह लग रही कई "जोन" में जोड़ने के लिए (जैसे कि, दस्तावेज़ प्रति एक है, तो दस्तावेज़ में दस्तावेज़ से खींच चाहते हैं, लेकिन कहीं भी डॉक खिड़कियों के बाहर उन्हें एक फ़ाइल आइकन में बदल जाता है एक ला एचएफएस वादा खींचें)। कुछ दिन ...

डिजाइन: पद ही विवरण डिजाइन और अपेक्षाकृत सरल morphing प्रभाव के पीछे तर्क (क्रॉस-फीका प्लस आकार बुनियादी NSAnimation का उपयोग कर एनिमेटेड, आदि)। कोड (कक्षा के साथ-साथ डेमो ऐप) पूरी तरह से अवरुद्ध है और टिप्पणी की गई है।

मेरी अपनी पोस्ट से लिंक नहीं होगा लेकिन मेरे प्रयास के लिए अपवर्तित कर्मों को प्यार करेगा। ;-)

अद्यतन: इसी प्रकार के (लेकिन बेहतर एकीकृत होने से) कार्यक्षमता 10.7 के रूप में उपलब्ध है। यदि आप 10.7 या उच्चतर को लक्षित कर रहे हैं, तो नए एपीआई का उपयोग करना सबसे अच्छा है। JLNDragEffectManager 10.7 पर ठीक काम करता है, इसलिए इसका उपयोग पहले-लक्षित संस्करणों के लिए किया जा सकता है।

+0

बहुत से धन्यवाद यहोशू। यह खूबसूरती से काम कर रहा है। इसके अलावा, महान ब्लॉग पोस्ट! :) मान लीजिए कि आपके पास ड्रैगऑफ़सेट के लिए उपरोक्त उल्लिखित फ़िक्स का कोई लिंक नहीं है? –

+0

यदि आप इस कक्षा का उपयोग कर समाप्त करते हैं, तो बस मुझे बताएं और मैं आपके ऐप को स्रोत पृष्ठ पर सूची में जोड़ दूंगा। –

3

एपीआई इस अच्छी तरह से समर्थन नहीं करता है। जोशुआ नोज़ी एक ऐसी विधि देता है जो this weblog post में उचित दिखता है।

आईबी का प्रभाव उस फैंसी नहीं है। यह एक क्रॉसफ़ेड और स्केल है। इसे और अधिक स्पष्ट रूप से देखने के लिए शिफ्ट दबाए रखें।

2

10.7+ के रूप में वर्तमान दृष्टिकोण NSDraggingInfo पर

enumerateDraggingItemsWithOptions: 
          forView: 
          classes: 
         searchOptions: 
          usingBlock: 

एपीआई का उपयोग करने के लिए है। दस्तावेज़ीकरण वास्तव में खराब है लेकिन जैसे एडीसी नमूने मल्टीफोटोफ्रेम या टेबल व्यू प्लेग्राउंड नए तंत्र का उपयोग करने के तरीके पर एक अच्छा विचार दे सकता है।