मैं अपनी पहली फ्लैश प्रोजेक्ट पर काम कर रहा हूं, और मेरे प्रीलोडर के लिए मैं लोड किए गए प्रतिशत के आधार पर वास्तव में एक सरल ढाल करना चाहता हूं। प्रीलोडर का कहना है कि "77% लोड हो गया ...", जहां नंबर 77 एक गतिशील पाठ उदाहरण है जिसे प्रतिशत लोडेड कहा जाता है। मैं ग्रे-स्केल में # 000000 से #FFFFFF तक ढाल पर बदलने के लिए प्रतिशत लोड किए गए टेक्स्ट का रंग चाहता हूं।आरजीबी ग्रेडियेंट लोड किए गए फ़ाइल के प्रतिशत के आधार पर
इसलिए, मैं बस नहीं कर सकते:
percentLoaded.textColor=(currentValue/100)*0xFFFFFF;
यह सिर्फ FFFFFF की एक बहु के लिए textcolor बदलता है, लेकिन एक रंग आउटपुट के बाद से यह अलग घटकों नहीं तीन है।
public function rgb2hex(r:Number, g:Number, b:Number) {
return '0x'+(r << 16 | g << 8 | b).toString(16).toUpperCase();
}
यह इस तरह नहीं दिखता है वास्तव में के रंग बदल रहा है:
percentLoaded.text=currentValue.toString();
percentLoaded.textColor=rgb2hex((currentValue/100)*255, (currentValue/100)*255, (currentValue/100)*255);
"rgb2hex" कहाँ एक समारोह के रूप में वर्ग के भीतर परिभाषित किया गया है: वर्तमान में, यहाँ मैं क्या आपके पास यह है हालांकि फ़ॉन्ट। मैंने flash.text.TextField और Flash.display.MovieClip आयात किया है, लेकिन मुझे यकीन नहीं है कि मुझे कुछ और याद आ रहा है। स्ट्रिंग concatenation के साथ यह करना आसान होगा? या हो सकता है कि वर्तमान वैल्यू/100 के साथ कुछ चल रहा हो और उसे संख्या के रूप में पास कर रहा हो?
यदि उत्सुक है, तो मुझे rgb2hex here के लिए कोड मिला।
धन्यवाद!
यह काम नहीं करता है। वर्तमान वैल्यू को 1 पर सेट करने का प्रयास करें। आपको 0x28f5c मिलता है। आपको 0x010101 से गुणा करने से पहले एक int में ((वर्तमान वैल्यू/100) * 0xFF) डालने की आवश्यकता है। – Ponkadoodle
सच है, मैं इसके बारे में भूल गया, तय; यह ध्यान देने के लिए धन्यवाद! कलाकार को वास्तव में विभाजन के परिणाम पर जाने की जरूरत है, यही कारण है कि ऐसा होता है - फ्लैश की 'संख्या' कक्षा एक आईईई फ्लोट है। पेश करने के लिए कास्टिंग इसे हल करना चाहिए। – LiraNuna
नहीं, वर्तमान मूल्य 0-100 के बीच है। यदि आप विभाजन के बाद डाले जाते हैं, लेकिन 0xFF द्वारा गुणा करने से पहले, आपको 0 या 1 प्राप्त होगा। वह पूर्ण ग्रेस्केल चाहता है, न केवल काला/सफेद। और समस्या फ्लोटिंग पॉइंट त्रुटियों से उत्पन्न नहीं होती है। ऐसा इसलिए है क्योंकि आपका प्रारूप (* 0x010101) अनिवार्य रूप से तीन फ़ील्ड (01, 01, 01) है। यह किसी अन्य क्षेत्र से किसी अन्य क्षेत्र से प्रभावित होने की अपेक्षा नहीं कर रहा है। लेकिन 255 से अधिक मान का उपयोग करके, कम क्षेत्र को उच्च क्षेत्र को प्रभावित करने की अनुमति मिलती है, और पूर्णांक के बीच एक मान एक उच्च क्षेत्र को कम प्रभावित करने की अनुमति देता है। मेरा मतलब देखने के लिए 1.5 * 0x010101 आज़माएं। – Ponkadoodle