2008-09-26 17 views
19

क्या एमएक्सएमएल का उपयोग किए बिना फ्लेक्स फ्रेमवर्क और घटक का उपयोग करना संभव है? मैं एक्शनस्क्रिप्ट को काफी हद तक जानता हूं, और वहां कुछ सरल यूआई प्राप्त करने के लिए बस कुछ नई एक्सएमएल भाषा के साथ गड़बड़ महसूस नहीं कर रहा हूं। क्या कोई एक .as फ़ाइल से युक्त उदाहरण प्रदान कर सकता है जिसे संकलित किया जा सकता है (आदर्श रूप से FlashDevelop के माध्यम से, हालांकि यह बता रहा है कि फ्लेक्स एसडीके के साथ इसे कैसे करना है ठीक है) और फ्लेक्स फ्रेमवर्क का उपयोग करता है? उदाहरण के लिए, केवल एक फ्लेक्स बटन दिखा रहा है जो एक अलर्ट खोलता है, वह सही होगा।एमएक्सएमएल का उपयोग किए बिना फ्लेक्स फ्रेमवर्क/घटक का उपयोग करना संभव है?

यदि यह संभव नहीं है, तो क्या कोई न्यूनतम एमएक्सएमएल फ़ाइल प्रदान कर सकता है जो कस्टम एएस क्लास बूटस्ट्रैप करेगा, जिसके बाद फ्लेक्स एसडीके तक पहुंच होगी?

उत्तर

13

मैंने बोरेक के समान सरल बूटस्ट्रैप किया (नीचे देखें)। मुझे mxml फ़ाइल से छुटकारा पाना अच्छा लगेगा, लेकिन अगर मेरे पास यह नहीं है, तो मुझे फ्लेक्स (haloclassic.swc, आदि) के साथ आने वाले मानक विषयों में से कोई भी नहीं मिलता है। क्या कोई जानता है कि थियो ने क्या सुझाव दिया है और अभी भी मानक थीम लागू हैं?

यहाँ मेरी सरलीकृत बूटस्ट्रैपिंग विधि है:

main.mxml

<?xml version="1.0" encoding="utf-8"?> 
<custom:ApplicationClass xmlns:custom="components.*"/> 

ApplicationClass.as

package components { 
    import mx.core.Application; 
    import mx.events.FlexEvent; 
    import flash.events.MouseEvent; 
    import mx.controls.Alert; 
    import mx.controls.Button; 

    public class ApplicationClass extends Application { 
     public function ApplicationClass() { 
      addEventListener (FlexEvent.CREATION_COMPLETE, handleComplete); 
     } 
     private function handleComplete(event : FlexEvent) : void { 
      var button : Button = new Button(); 
      button.label = "My favorite button"; 
      button.styleName="halo" 
      button.addEventListener(MouseEvent.CLICK, handleClick); 
      addChild(button); 
     } 
     private function handleClick(e:MouseEvent):void { 
      Alert.show("You clicked on the button!", "Clickity"); 
     } 
    } 
} 

यहाँ फ्लेक्स 4 के साथ उपयोग करने के लिए आवश्यक अद्यतन कर रहे हैं:

मुख्य।MXML

<?xml version="1.0" encoding="utf-8"?> 
<local:MyApplication xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:local="components.*" /> 

MyApplication.as

package components { 
    import flash.events.MouseEvent; 
    import mx.controls.Alert; 
    import mx.events.FlexEvent; 
    import spark.components.Application; 
    import spark.components.Button; 

    public class MyApplication extends Application { 
     public function MyApplication() { 
       addEventListener(FlexEvent.CREATION_COMPLETE, creationHandler); 
     } 
     private function creationHandler(e:FlexEvent):void { 
      var button : Button = new Button(); 
      button.label = "My favorite button"; 
      button.styleName="halo" 
      button.addEventListener(MouseEvent.CLICK, handleClick); 
      addElement(button); 
     } 
     private function handleClick(e:MouseEvent):void { 
      Alert.show("You clicked it!", "Clickity!"); 
     } 
    } 
} 
+0

कूल, यह उतना ही कम दिखता है जितना आप इसे प्राप्त कर सकते हैं, एमएक्सएमएल-वार। अपने उत्तर को स्वीकार करना क्योंकि यह लगभग शुद्ध AS कोड है। – davr

+0

सुंदर, धन्यवाद। FlashDevelop का उपयोग करके आप "बटन" जैसी वस्तुओं पर समृद्ध कोड-समापन भी प्राप्त कर सकते हैं। अच्छा लगा। यह बोरेक के उदाहरण में काम नहीं करता था। –

+1

फ्लेक्स 4 के लिए आवश्यक कोड का उदाहरण शामिल करने के लिए अपडेट किया गया। – davr

0

हां, आपको बस अपने क्लासपाथ में फ्लेक्स एससीसी शामिल करने की आवश्यकता है। आप फ्लेक्स एसडीके में flexoworks/lib/flex.swc

संपादित करें: एक और बात: यदि आप फ्लेक्स बिल्डर का उपयोग कर रहे हैं तो आप बस एक नई एक्शनस्क्रिप्ट प्रोजेक्ट बना सकते हैं, जो अनिवार्य रूप से वही करेगी ऊपरोक्त अनुसार।

+0

यह काफी नहीं काम करता है। जब आप वास्तव में बटन या डेटाग्रिड आदि जैसे फ्लेक्स घटकों का उपयोग करने का प्रयास करते हैं तो आपको विभिन्न त्रुटियां मिलती हैं – davr

9

यह एक बहुत ही सरल ऐप है जो एमएक्सएमएल में केवल मूल बूटस्ट्रैपिंग करता है।

<?xml version="1.0" encoding="utf-8"?> 
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" creationComplete="onCreationComplete()"> 
    <mx:Script source="Script.as" /> 
</mx:Application> 

यह Script.as है:

import mx.controls.Button; 
import flash.events.MouseEvent; 
import mx.controls.Alert; 
import mx.core.Application; 

private function onCreationComplete() : void { 
    var button : Button = new Button(); 
    button.label = "Click me"; 
    button.addEventListener(MouseEvent.CLICK, function(e : MouseEvent) : void { 
    Alert.show("Clicked"); 
    }); 

    Application.application.addChild(button); 
} 
+0

यह अच्छा है लेकिन दुर्भाग्यवश FlashDevelop में कोई कोड पूर्ण नहीं है। "बटन"। इसे सक्षम करने का कोई तरीका? –

7

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


मुख्य वर्ग भी सिर्फ एक वर्ग है कि mx.core.Application से विरासत (जो कि एक <mx:Application> रूट नोड के साथ एक MXML वर्ग वैसे भी रूप में संकलित किया गया है) बनाने के लिए, MXML में होने की जरूरत नहीं है:

package { 

    import mx.core.Application; 


    public class MyFancyApplication extends Application { 

    // do whatever you want here 

    } 

} 

इसके अलावा, किसी भी ActionScript कोड mxmlc संकलक के साथ संकलित - या यहाँ तक कि Flash CS3 संलेखन उपकरण - फ्लेक्स कक्षाओं का उपयोग कर सकते, यह उन्हें classpath में उपलब्ध करवाने का मामला है जब mxmlc का उपयोग कर (ढांचा SWC की चर्चा करते हुए या या तो उपयोग करते समय स्रोत वाले फ़ोल्डर को इंगित करना)। जब तक दस्तावेज़ वर्ग mx.core.Application से प्राप्त नहीं होता है, तब भी आप कुछ परेशानी में भाग सकते हैं, हालांकि, ढांचे में कुछ चीजें मानती हैं कि यह मामला है।

+0

हम्म ... मैं वास्तव में यह कोशिश करने गया था, और एक साधारण "हैलो वर्ल्ड" रनटाइम त्रुटियों के टन प्राप्त करता है। क्या मुझे कुछ प्रकार की शुरुआत करने की ज़रूरत है, या मुझे शामिल करने के लिए आवश्यक अन्य विशिष्ट वर्गों की आवश्यकता है? – davr

+0

यह पता लगाना बहुत आसान है, बस कंपाइलर झंडे में ऐड-रख-जेनरेट-एक्शनस्क्रिप्ट जोड़ें और एप्लिकेशन से प्राप्त एमएक्सएमएल क्लास को संकलित करें। कंपाइलर "जेनरेट" नामक एक निर्देशिका बनाता है जहां आप जेनरेटेड एक्शनस्क्रिप्ट कोड पा सकते हैं। यह उपर्युक्त, सत्य से थोड़ा अधिक जटिल है। – Theo

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