2012-05-20 32 views
7

मैं अपने जीयूआई लाइब्रेरी के उपयोगकर्ताओं को सरलता/रोकथाम को रोकने के दौरान इन/आउट संक्रमण प्रभावों के अप्रतिबंधित अनुकूलन को देने की कोशिश कर रहा हूं (जब कोई नियंत्रण दृश्य में प्रवेश करता है या बाहर निकलता है)।विस्तारशीलता प्राप्त करने के लिए प्रतिनिधियों का सही/गलत उपयोग

ऐसा करने के लिए, मैंने नियंत्रण वर्ग में एक प्रतिनिधि जोड़ा, जो एक नियंत्रण संदर्भ और एक संक्रमण पूर्णता प्रतिशत लेगा, ताकि उपयोगकर्ता किसी भी तरह से नियंत्रण की स्थिति/अस्पष्टता को आसानी से अनुवाद कर सके , दिए गए प्रतिशत के आधार पर। उसे केवल नियंत्रण प्रवेश/निकास से पहले एक संक्रमण समारोह की सदस्यता लेनी होगी।

हालांकि, मुझे एहसास हुआ कि केवल मौजूदा समापन प्रतिशत का उपयोग करके नियंत्रणों को संक्रमण/एनिमेट करना असंभव होगा, क्योंकि आपको नियंत्रण की प्रारंभिक स्थिति को भी स्टोर और तुलना करना होगा।
इस भंडारण की आवश्यकता को स्पष्ट करने के लिए, क्या मुझे एक प्रतिनिधि-मज़ेदार के उपयोग को मजबूर करना चाहिए?

यदि हां, तो मैं इसे एक न्यूनतम/साफ तरीके से कैसे कर सकता हूं?


उपयोगकर्ताओं कस्टम संक्रमण एनिमेशन लागू करने के लिए अनुमति देने के लिए एक और तरीका सुझाने के लिए स्वतंत्र महसूस!

+0

क्या आप जिस कोड का उपयोग कर रहे हैं उसे पेस्ट कर सकते हैं? – 3aw5TZetdf

+0

@MatthewRz यह वास्तव में समझने में मदद नहीं करेगा = | यह बिल्कुल ठीक है कि मैंने इसका वर्णन कैसे किया। मैं आपको बता सकता हूं कि यह एक्सएनए है और मैं न्युलेक्स ग्राफिक्स/जीयूआई लाइब्रेरी को संशोधित कर रहा हूं। – Griffin

उत्तर

1

यदि मैं आपको सही ढंग से समझता हूं, तो आपका नियंत्रण एनीमेशन (गणना) प्रतिनिधि (समय-समय पर, प्रत्येक फ्रेम पर) को आमंत्रित करता है और संक्रमण प्रतिशत प्रतिशत पारित करता है। एनीमेशन प्रतिनिधि तब नियंत्रण और अनुवाद/नियंत्रण पर स्थिति और स्थिति लागू करता है। क्या यह सही है?

यह मानते हुए कि ऊपर सही है वहाँ कई समाधान हैं:

  1. केवल स्थिति और अस्पष्टता एनिमेट जब:

    प्रतियोगिता प्रतिशत के अलावा, आप भी नियंत्रण की स्थिति की प्रारंभिक अवस्था भेजना होगा और अस्पष्टता जब प्रतिनिधि बुला । प्रारंभिक अवस्था को संक्रमण शुरू करने पर याद किया जाना चाहिए और प्रत्येक कॉल में प्रतिनिधि में भेजा जाना चाहिए।

  2. जब सामान्य रूप में मनमाने ढंग से गुण एनिमेट:

    प्रतियोगिता प्रतिशत के अलावा, आप भी राज्य संपत्ति (ऑब्जेक्ट के प्रकार या और भी बेहतर शब्दकोश) प्रदान करते हैं। यह राज्य संपत्ति पूरी तरह से प्रतिनिधि और इसके एनीमेशन तर्क द्वारा नियंत्रित है।

    आपके नियंत्रण में, राज्य संपत्ति में कोई अर्थशास्त्र या अर्थ नहीं होगा। आपका नियंत्रण केवल प्रतिनिधि कॉल के लिए बाद की कॉल के बीच राज्य संपत्ति का मूल्य बनाए रखना चाहिए।

    इसे सभी को एक साथ रखकर, प्रतिनिधि पहले कॉल पर शुरुआती मूल्यों के साथ राज्य भरता है, बाद में कॉल पर इन मानों का उपयोग करता है - जो कुछ भी चाहता है वह करता है। प्रतिनिधि नियंत्रण के लिए गणना मूल्यों को भी लागू करता है। ध्यान दें कि प्रतिनिधि में उपयोग की जाने वाली सभी संपत्तियां सार्वजनिक होनी चाहिए।

0

मुझे लगता है कि आप कम से कम प्रतिनिधि के लिए निम्न पैरामीटर में पारित करने के लिए की जरूरत है: -

  • नियंत्रण ही
  • कंटेनर कि नियंत्रण होता है (उदाहरण के लिए एक पैनल।)
  • पूरा होने का प्रतिशत

नियंत्रण को पार करके, उपयोगकर्ता की सभी प्रारंभिक स्थिति जानकारी होगी (जैसे स्थिति के रूप में)। साथ ही, यदि उपयोगकर्ता को नियंत्रण की कोई भी संपत्ति सेट करने की आवश्यकता है, तो उसे निश्चित रूप से नियंत्रण के संदर्भ की आवश्यकता होगी।

उपयोगकर्ता द्वारा कंटेनर की आवश्यकता हो सकती है यदि उसे इसके आकार/स्थिति की जानकारी चाहिए, या अगर उसे नियंत्रण के लिए कुछ विशेष करने की आवश्यकता है।

1

आईएमओ आपको नियंत्रण की प्रारंभिक स्थिति के साथ नियंत्रण का उपयोगकर्ता प्रदान करने की आवश्यकता नहीं है क्योंकि वह इसे अपेक्षाकृत प्रारंभिक स्थिति में रख सकता है: नकारात्मक संख्याएं बाएं और ऊपर के लिए हैं, और सकारात्मक संख्याएं सही हैं और नीचे।

निम्नलिखित कोड एक तेजी से संक्रमण के लिए एक समारोह है:

Point FastTranDiagonial(float Percentage){ 
    Thread.Sleep(10); 
    int pixelsDist = (1 - Percentage)* 300;//300 is the maximum distance 
    return new Point(-pixelsDist ,pixelsDist); 
} 

जब आप प्रतिनिधि आप नियंत्रण की प्रारंभिक स्थिति को इंगित करें जोड़ने के लिए आह्वान। आपको नोटिस करना होगा कि प्रतिनिधि में थ्रेड स्लीप (एक्स) होता है, यह उपयोगकर्ता के नियंत्रण में होना चाहिए क्योंकि वह तेज या धीमी लेनदेन करना चाहता है।

आप jQuery जैसे अनुक्रमिक संक्रमण जोड़ने पर विचार करना चाहेंगे ताकि एक संक्रमण दूसरे के पूरा होने के बाद शुरू हो।

अच्छी किस्मत