AS3

2011-12-09 14 views
11

में टेक्स्टफ़िल्ल्ड को लंबवत कैसे करें I AS3 में एक मोनोलिन टेक्स्टफ़िल्ल्ड में कुछ टेक्स्ट को लंबवत करने का प्रयास कर रहा हूं। यह सुनिश्चित नहीं है कि यह टेक्स्टफॉर्मैट के साथ किया जा सकता है, लेकिन मुझे ऐसा नहीं लगता है।AS3

मैंने समाधान की तलाश की है लेकिन वास्तव में कुछ भी उपयोगी नहीं है। किसी भी मदद का स्वागत है।

धन्यवाद!

उत्तर

16

आप स्वचालित रूप से टेक्स्ट को संरेखित नहीं कर सकते हैं। आपको इसे अपने आप बनाना होगा।

यहाँ मेरे कार्य कोड है:

public static function verticalAlignTextField(tf: TextField): void { 
    tf.y += Math.round((tf.height - tf.textHeight)/2); 
} 
+1

टेक्स्टफील्ड के वाई को पाठ को स्थानांतरित नहीं करना होगा? – felwithe

6

आप के बजाय एक fl.text.TLFTextField उपयोग करने के लिए सक्षम हैं, तो एक flash.text.TextField, आप खड़ी पाठ verticalAlign संपत्ति का उपयोग कर केंद्रित कर सकता है (फ़्लैश प्लेयर 10+ से उपलब्ध है):

import flashx.textLayout.formats.VerticalAlign; 
[...] 
myTextField.verticalAlign = VerticalAlign.MIDDLE; 
1

"(adopts default value if undefined during cascade)" दूसरे शब्दों में कुछ TLFTextFild मीटर के गुणों मैं आश्वस्त कर सकते हैं कि "walkietokyo" जवाब सही जवाब है, लेकिन यह देखना एडोब प्रलेखन उचित तरीके से इस्तेमाल किया जाना चाहिए एई कैस्केड लंबवत टेक्स्टफॉर्मैट की तरह प्रोपेरेटीलाइन करें, इसलिए दूसरों को कैस्केड करने के लिए प्रत्येक चीज के बाद ऊर्ध्वाधर लॉन्च करें, फिर यह काम करेगा। यह मेरे साथ काम करता है :)

1

यह केवल तभी काम करता है जब टेक्स्ट एकल पंक्ति में है।

सबसे पहले आपको प्रत्येक पाठ में प्रारंभिक ब्रेक लाइन जोड़नी होगी। मैंने इसे टेक्स्टफिल्ड को विस्तारित करने और "टेक्स्ट" फ़ंक्शन को ओवरराइड करने वाले एक नए घटक में किया, प्रारंभिक ब्रेक लाइन वर्ण जोड़ना।

import flash.text.TextField; 

public class MyTextField extends TextField 
{ 
    public function MyTextField() 
    { 
     super(); 
    } 

    public override function set text(value:String):void 
    { 
     value = "\n" + value; 

     super.text = value; 
    } 
} 

फिर आपको पाठ में प्रारूप लागू करने की आवश्यकता है, "अग्रणी" संपत्ति का उपयोग करें जो लाइनों के बीच लंबवत स्थान की मात्रा का प्रतिनिधित्व करता है।

myTextFormat = new TextFormat(); 

// This is the existent horizontal align 
myTextFormat.align = TextFormatAlign.CENTER; 

// This is my simulated vertical align. Remember that the first character 
// is always a break line. In most cases it will be a negative value... 
myTextFormat.leading = -22; 

var myTextField:MyTextField = new MyTextField(); 
myTextField.text = "Hello"; 
myTextField.setTextFormat(myTextFormat); 

मुझे उम्मीद है कि यह किसी ऐसे व्यक्ति की मदद करेगा जिसने टेक्स्टफिल्ड का उपयोग करके सिंगल लाइन टेक्स्ट में लंबवत संरेखण की आवश्यकता है। :-)