2008-11-04 27 views
5

यदि MXML में पूरा किया जा सकता है तो सब कुछ एक्शनस्क्रिप्ट में भी पूरा किया जा सकता है और एक्शनस्क्रिप्ट (लूप, सशर्त आदि) में कई चीजें हासिल करने में आसान होती है क्यों एमएक्सएमएल सीखने का समय लगता है?मुझे एमएक्सएमएल का उपयोग क्यों करना चाहिए?

इस बिंदु पर मेरे पास सबसे अच्छे कारण यह हैं कि एमएक्सएमएल की संरचना यूआई घटकों के दृश्य पदानुक्रम से मेल खाती है और यूआई को शुरू करने के लिए कोड की रेखाएं कम हो जाती हैं। दूसरी तरफ वास्तविक दुनिया के यूआई अक्सर गतिशील होते हैं, जो एक साधारण स्थैतिक संरचना के रूप में लागू होते हैं और फिर रनटाइम स्थितियों के आधार पर गतिशील रूप से भरे जाते हैं (जिस स्थिति में यूआई अपडेट एक्शनस्क्रिप्ट में वैसे भी होते हैं)। कुछ सहायक तरीकों के निर्माण के साथ एक्शनस्क्रिप्ट के लिए आवश्यक SLOC को कम करना भी संभव होगा।

उत्तर

0

एमएक्सएमएल और विजुअल डिजाइनर के साथ डिजाइनिंग यूआई तत्व कोड की तुलना में बहुत आसान है, और मेरी राय में कम त्रुटि-प्रवण है।

भले ही यूआई गतिशील रूप से बदलता है, अक्सर इसका मतलब पूर्व-परिभाषित UI तत्वों को अंदर और बाहर स्वैप करना है।

0

यदि आप फ्लेक्सबिल्डर का उपयोग करते हैं तो एमएक्सएमएल एक आवेदन देने के लिए उपयोगी है क्योंकि फ्लेक्सबिल्डर डिजाइन दृश्य में एमएक्सएमएल पढ़/लिख सकता है। एमएक्सएमएल के माध्यम से राज्यों को लागू करना भी बहुत आसान है।

यदि आप फ़्लेक्सबिल्डर जैसे टूल का उपयोग नहीं करते हैं जिसमें डिज़ाइन व्यू है, तो यह कम उपयोगी हो सकता है। याद रखें कि फ्लेक्स 4 नई थर्मो सामान पेश करने के कारण है, जिसमें एमएक्सएमएल नोटेशन का उपयोग करके वेक्टर ग्राफिक्स बनाने की क्षमता शामिल है, और फ्लेक्स घटकों को त्वचा के लिए एमएक्सएमएल का उपयोग करने की अनुमति देगा। यह संभवतः अपने आप में आ जाएगा। यदि आप पहले ही एमएक्सएमएल के आसपास अपना रास्ता सीखा है तो आपको उस समय एक फायदा होगा।

0

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

यदि आप एफएलए फाइलों का उपयोग कर एमएक्सएमएल बनाम का उपयोग करने के बारे में पूछ रहे हैं, तो यह एक बहुत ही अलग सवाल है - यह "मुझे फ्लेक्स फ्रेमवर्क का उपयोग क्यों करना चाहिए?"

14

यह आपके आवेदन की ज़रूरतों पर निर्भर करता है, लेकिन मैं आम तौर पर दृश्य डिजाइन में अपना डिज़ाइन तोड़ता हूं और एमएक्सएमएल आधारित कस्टम घटकों का उपयोग करके मेरे अनुप्रयोग (डेटा पैनल, संवाद बॉक्स, आदि) के मुख्य क्षेत्रों और घटकों को बाहर रखने के लिए कस्टम एमएक्सएमएल घटकों का उपयोग करता हूं। । फिर मैं इसे बढ़ाऊंगा कि कस्टम एक्शनस्क्रिप्ट घटकों के साथ जहां मुझे निर्मित लेआउट घटकों के मुकाबले अधिक दृश्य flexibilty की आवश्यकता है। एमएक्सएमएल आसान है क्योंकि यह मंच पर घटकों को प्राप्त करना बेहद आसान बनाता है और अपनी विभिन्न गुणों और शैली सेटिंग्स को सेट करता है। एक बहुत ही सरल उदाहरण है कि बनाम 62.

package 
{ 
    import flash.events.MouseEvent; 

    import mx.containers.Panel; 
    import mx.controls.Button; 
    import mx.controls.Label; 
    import mx.controls.TextInput; 

    public class MyLoginPanel extends Panel 
    { 

     private var _unLabel:Label; 
     private var _passLabel:Label; 
     private var _txtUsername:TextInput; 
     private var _txtPassword:TextInput; 
     private var _btnLogin:Button; 

     public function MyLoginPanel() 
     { 
     } 

     override protected function createChildren():void 
     { 
      super.createChildren(); 

      this.width = 290; 
      this.height = 148; 
      this.title = "Login"; 
      this.layout = "absolute"; 

      _unLabel = new Label(); 
      _unLabel.text = "User Name:"; 
      _unLabel.width = 80; 
      _unLabel.setStyle("textAlign", "right"); 
      _unLabel.move(8, 8); 
      this.addChild(_unLabel); 

      _passLabel = new Label(); 
      _passLabel.text = "Password:"; 
      _passLabel.width = 80; 
      _passLabel.setStyle("textAlign", "right"); 
      _passLabel.move(8, 38); 
      this.addChild(_passLabel); 

      _txtUsername = new TextInput(); 
      _txtUsername.move(90, 8); 
      this.addChild(_txtUsername); 

      _txtPassword = new TextInput(); 
      _txtPassword.move(90, 38); 
      _txtPassword.displayAsPassword = true; 
      this.addChild(_txtPassword); 

      _btnLogin = new Button(); 
      _btnLogin.label = "Login"; 
      _btnLogin.move(185, 68); 
      _btnLogin.addEventListener(MouseEvent.CLICK, doLogin); 
      this.addChild(_btnLogin); 
     }  
    } 
} 

सात कोड की तर्ज:

MXML में:

<mx:Panel xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" width="290" height="148" title="Login"> 
    <mx:Label text="User name:" width="80" textAlign="right" y="8" x="8"/> 
    <mx:Label text="Password:" width="80" textAlign="right" y="38" x="8"/> 
    <mx:TextInput id="txtUsername" maxChars="20" y="8" x="90"/> 
    <mx:TextInput id="txtPassword" displayAsPassword="true" y="38" x="90" maxChars="20"/> 
    <mx:Button x="185" y="68" label="Login" id="btnLogin" click="doLogin()"/> 
</mx:Panel> 

और actionscript में

दो समान लॉगिन पैनल के इस उदाहरण लें , लेकिन उम्मीद है कि आप देख सकते हैं कि एमएक्सएमएल में अपने आवेदन के कई हिस्सों को रखकर आप कैसे लाभ उठा सकते हैं, भले ही आप फ्लेक्स बिल्डर में डिज़ाइन मोड का उपयोग कर रहे हों या नहीं।

एक चीज जो मैं अनुशंसा करता हूं, हालांकि आपकी एमएक्सएमएल फाइलों से जितनी ज्यादा हो सके कार्यवाही को रोकना है। एमएक्सएमएल को अपने विचार के रूप में देखें और किसी भी भारी कार्यक्षमता को अन्य वर्गों में अलग करें।फिर आप उन वर्गों में सार्वजनिक संपत्तियां प्रदान कर सकते हैं जो आपके एमएक्सएमएल घटकों के नियंत्रण से जुड़ सकते हैं। एमएक्सएमएल एक लेआउट भाषा है और मेरे अनुभव में यह इसका उपयोग करने के अंत में भुगतान करता है जहां भारी समझदारी की आवश्यकता होती है, जहां यह समझ में आता है और क्रियालेख में गिरा देता है।

+0

मैं बहुत कुछ कहने जा रहा था, लेकिन आपने मुझे इसे हराया। एमएक्सएमएल के प्रमुख फायदे 1) ब्रेवटी, और 2) मार्कअप और लेआउट के बीच संरचनात्मक समकक्ष हैं। – benjismith

संबंधित मुद्दे