2010-02-19 15 views
22

मैं AS3 में आपूर्ति किए गए चर के साथ स्ट्रिंग को कैसे प्रारूपित कर सकता हूं?एक्शनस्क्रिप्ट 3.0 स्ट्रिंग?

//vars 
var myNumber:Number = 12; 
var myString:String = "Months"; 
var myObject:MovieClip = year; 

//string 
myString.txt = "One (?) consists of (?) consecutive (?)", string(myObject), string(myNumber), myString; 

तो ऊपर स्ट्रिंग में, मैं myString प्रदर्शित करने के लिए "एक साल 12 महीने लगातार के होते हैं" चाहते हैं, लेकिन मैं AS3 के लिए नया हूँ और पता नहीं कैसे ठीक से एक स्ट्रिंग स्वरूपित करने के लिए।

मुझे यकीन है कि मुझे संख्या चर को एक स्ट्रिंग, स्ट्रिंग (myNumber) में डालना होगा, लेकिन मुझे नहीं पता कि एक मूवी क्लिप वैरिएबल को स्ट्रिंग, स्ट्रिंग (myMovieClip) पर कास्टिंग करना होगा, वापस आ जाएगा फिल्म क्लिप का नाम या एक त्रुटि उत्पन्न करते हैं। मैं बाद में शर्त लगाने के लिए तैयार हूं।

उत्तर

46

this similar question के उत्तर Formatter कक्षा या StringUtil.substitute() का उपयोग करने का सुझाव देते हैं।

उत्तरार्द्ध सबसे सरल दिखता है; आपके मामले में आप इस तरह यह प्रयोग करेंगे:

var str:String = "One {0} consists of {1} consecutive {2}"; 
var newString:String = StringUtil.substitute(str, myObject, myNumber, myString); 

substitute() स्वचालित रूप से स्ट्रिंग को अपने तर्कों डाली चाहिए, लेकिन मुझे यकीन है कि अगर, अपने कोड में के रूप में, आप एक स्ट्रिंग के रूप में एक MovieClip (myObject) डाल सकता नहीं हूँ ।

एक और अच्छा विकल्प, विशेष रूप से यदि आपने अन्य प्रोग्रामिंग भाषाओं में printf का उपयोग किया है, तो यह third-party printf-as3 function है।

1

कास्टिंग वस्तुओं तार

विधि toString() वस्तु वर्ग पर परिभाषित किया गया है। इसलिए सभी वस्तुओं के लिए यह विधि परिभाषित की गई है। इसलिए myObject.toString() को कॉल करना आमतौर पर आपको वह चीज़ देगा जो आप खोज रहे हैं। कुछ ऑब्जेक्ट्स अतिरिक्त विधियों को परिभाषित करते हैं, जैसे date.getHours(), जो getString() द्वारा प्रदान किए गए किसी भिन्न प्रारूप में ऑब्जेक्ट के स्ट्रिंग विवरण लौटाते हैं।

int जैसे देशी प्रकारों के लिए, आप स्ट्रिंग (myInt) का उपयोग करके कास्ट कर सकते हैं।

श्रृंखलाबद्ध तार एक साथ

फिर आप इस प्रकार एक साथ एक स्ट्रिंग के विभिन्न भागों में जोड़ सकते हैं:

var myString:String = "There are " + String(24) + " hours in a day." 

आशा है कि मदद करता है, डेव

0

कम तरह से मैं था क्या ऐसा कुछ है:

var finalString:String = "One " + myObject + " consists of " + myNumber + " " + myString; 

एक सिंगल या डबल कोट एक स्ट्रिंग अक्षरशः शुरू करता है। यदि आप स्ट्रिंग अक्षर में कुछ जोड़ने के लिए + प्रतीक का उपयोग करते हैं तो वह उस ऑब्जेक्ट पर स्वचालित रूप से toString() को कॉल करने जा रहा है।

myObject [ऑब्जेक्ट मूवीक्लिप] वापस लौटाएगा, हालांकि। आप जो करना चाहते हैं वह एक कस्टम क्लास है जो मूवीक्लिप को बढ़ाता है और फिर उस स्ट्रिंग() संरक्षित विधि को ओवरराइड करने के लिए जो भी स्ट्रिंग आप थूकना चाहते हैं उसे वापस करने के लिए ओवरराइड करते हैं।

आशा है कि मदद करता है!

+0

myObject.name काम करने लगता है। var finalString: स्ट्रिंग = "वन" + myObject.name + "में" + myNumber + "" + myString शामिल है; – TheDarkIn1978

+0

myObject।नाम केवल तभी काम करेगा यदि ए) myObject मंच पर है और इसका एक इंस्टेंस नाम है या यदि बी) आप मैन्युअल रूप से पहले myObject.name को मैन्युअल रूप से सेट करते हैं। .name किसी भी DisplayObject की स्ट्रिंग प्रॉपर्टी है, मुझे विश्वास है। फ्लैश आईडीई में बेहतर एकीकरण के लिए यह है (यानी आप मंच पर सामान डाल सकते हैं) या विशिष्ट मामलों के लिए जहां आपको सामान नाम देने की आवश्यकता है ताकि आप GetChildByName() का उपयोग कर सकें। फिर भी, खुशी है कि मदद करता है! फ्लैश में असेंबली कॉम्प्लेक्स स्ट्रिंग्स के लिए + ऑपरेटर का उपयोग करना बहुत आसान है। चीयर्स! – Myk

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