2008-10-28 7 views
7

मैं फ्लेक्स के साथ लगभग एक वर्ष तक इस समस्या में भाग रहा हूं, और हर बार जब मैं एक त्वरित हैक समाधान तैयार करता हूं जो समय के लिए काम करता है। मैं देखना चाहता हूं कि किसी के पास बेहतर विचार है या नहीं।फ्लेक्स में आकार के कंटेनरों का सर्वोत्तम तरीका केवल माता-पिता के कंटेनरों के स्पष्ट आयामों का पालन करने के लिए

यहाँ एक समस्या की शर्तें हैं:

|------Container ------------| 
| explicitHeight: 400 (or whatever) 
|        | 
| |-------- VBox -------| | 
| | percentHeight: 100 | | 
| |      | | 
| | |-Repeater------| | | 
| | | Potentially | | | 
| | | a lot of stuff. | | 
|--|--|---------------|---|---| 

समस्या यह है कि, मैं ऐसा करना चाहते हैं के विपरीत, VBox हमेशा इसके अंदर सामग्री को समायोजित करने का विस्तार होगा, बजाय के लिए चिपके की है अपने माता-पिता की स्पष्ट ऊंचाई और स्क्रॉल बार बनाना।

मेरा समाधान माता-पिता के संदर्भ में हार्ड कोड रहा है (या फिर डिस्प्ले सूची को दूर करने के लिए हमें एक प्रतिशत के विपरीत स्पष्ट रूप से निर्धारित मूल्य खोजने के लिए जाना आवश्यक है)।

मैं भी एक उपयोगिता कक्षा में इस का उपयोग कर विचार किया है:

public static function getFirstExplicitHeightInDisplayList(comp:UIComponent):Number{ 
    if (!isNaN(comp.explicitHeight)) return comp.explicitHeight; 
    if (comp.parent is UIComponent) return  
     getFirstExplicitHeightInDisplayList(UIComponent(comp.parent)); 
    else return 0; 
} 

कृपया मुझे बताओ कि वहाँ एक बेहतर तरीका है।

उत्तर

8

आप VBox पर "autolayout" पैरामीटर का उपयोग करने के लिए प्रलेखन के रूप में कहते हैं कि है:।

"डिफ़ॉल्ट रूप से, VBox कंटेनर का आकार काफी बड़ा यह मूल आकार में छवि धारण करने के लिए है आप लेआउट अक्षम करते हैं अद्यतन, और छवि को बड़ा करने के लिए ज़ूम प्रभाव का उपयोग करें, या छवि को स्थानांतरित करने के लिए मूव इफेक्ट का उपयोग करें, छवि VBox कंटेनर की सीमाओं के पीछे विस्तारित हो सकती है।

आपने ऑटोलायआउट संपत्ति को गलत पर सेट किया है, इसलिए VBox कंटेनर आकार बदलता नहीं है क्योंकि छवि का आकार बदलता है। अगर छवि आकार में बढ़ती है तो यह वीबीओक्स कंटेनर की सीमाओं से परे फैली हुई है, कंटेनर स्क्रॉल बार और क्लिप जोड़ता है इसकी सीमाओं पर छवि।

मुझे उम्मीद है कि आपकी मदद करेगा।

+0

यह करता है! जवाब के लिए धन्यवाद। – Aaron

1

अपने कंटेनर के गुणों सेट करें:

clipContent = true; 
verticalScrollPolicy = "off" 

फिर अपने VBox स्वचालित रूप से जब यह percentHeight = 100 है क्लिप चाहिए; क्या आप इसे क्या करने की जरूरत पर निर्भर करता है

scrollRect = new Rectangle(x, y, w, h); 

:

फ्लेक्स 3.

में मेरे लिए काम करता है अगर तुम सच में फैंसी प्राप्त करने की आवश्यकता है, तो आप वस्तुओं पर scrollRect सेट कर सकते हैं।

13

सेटिंग minHeight = 0 आपको बस इतना करना है।

यह वीबीएक्स को अपने आकार के आकार के बच्चों के माप को अनदेखा करने के लिए कहता है, और इसके स्वयं की/उसके माता-पिता की बाधाओं के आधार पर इसकी ऊंचाई की गणना करता है। जैसा कि आप सामान्य रूप से करेंगे, सबकुछ सेट करें, स्क्रॉल करना और बाकी सब कुछ पूरी तरह से काम करेगा।

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

+3

फिर भी एक और उदाहरण जहां फ्लेक्स का कोई मतलब नहीं है। मैं केवल इन चीजों की एक सूची रखने के इच्छुक हूं ... – Aaron

+0

यदि हम कभी मिलते हैं तो मैं आपको अपनी पसंद का एक पेय देता हूं। –

2

ऑटोलायआउट = झूठी केवल लेआउट को फिर से चालू होने से रोकती है जब बच्चों के आकार परिवर्तन। हालांकि यदि आप बच्चों को जोड़ते या हटाते हैं, तो लेआउट फिर भी चालू हो जाएगा।

मिनीहेइट = 0 सेट करना वास्तव में VBox के आकार (बाहरी) आकार को बच्चों के आकार और संख्या से पूरी तरह से डिस्कनेक्ट करता है, जो मैं चाहता था।

फ्लेक्स स्रोत कोड के माध्यम से घुमावदार मैंने तंत्र को नहीं देखा जिसकी सेटिंग minHeight = 0 ने इसे काम करने की तरह काम किया, इसलिए मैं इसे खोजने के लिए यारिन को सलाम करता हूं। धन्यवाद!

0

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

जब आपका एचबीओक्स आकार प्रतिशत मूल्य पर आधारित होता है, तो आप उम्मीद कर रहे हैं कि केवल इसका कंटेनर इसके आकार को प्रभावित करेगा। यह गलत है, एक और नियम है, एक मजबूत है। यह तथ्य है कि एक कंटेनर (जो एचबीओक्स है) का आकार कम है, जो अपने बच्चों के घटकों के डिफ़ॉल्ट/स्पष्ट आकारों का जोड़ है।

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

तो का उपयोग कर:

minHeight = 0; 
minWidth = 0; 

HBox इसकी न्यूनतम आकार है कि करने के लिए कह की तरह है बजाय अपने बच्चों डिफ़ॉल्ट आकार के 0 है। आप इसे फिर से परिभाषित कर रहे हैं और इस तरह न्यूनतम आकार प्रतिशत मूल्य से छोटा है और युद्ध खो देता है।

केवल वाक्यांश मैं एडोब प्रलेखन इस समझाने में पाया इस एक है:

एक प्रतिशत के आधार पर कंटेनर आकार सलाहकार है। फ्लेक्स कंटेनर को अपने बच्चों को अपने न्यूनतम आकार में फिट करने के लिए काफी बड़ा बनाता है। मैं अपने आप स्पष्ट कर दिया

आशा,

(मेरी गलत अंग्रेज़ी वाक्य को सही करने के लिए स्वतंत्र महसूस ...)

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

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