سؤال

أقوم بإنشاء مكون وأريد الكشف عن خاصية اللون كما تفعل العديد من عناصر التحكم المرنة، فلنفترض أن لدي مكونًا بسيطًا مثل هذا، دعنا نسميه foo_label:


<mx:Canvas>
    <mx:Script>
        [Bindable] public var color:uint;
    </mx:Script>
    <mx:Label text="foobar" color="{color}" />
</mx:Canvas>

ثم قم بإضافة المكون في ملف mxml آخر، على غرار ما يلي:


<foo:foo_label color="red" />

عندما أقوم بتجميع شكوى المترجم:لا يمكن تحليل قيمة النوع uint من النص "الأحمر".ومع ذلك، إذا استخدمت علامة عادية، فيمكنني القيام بذلك

<mx:Label text="foobar" color="red">

دون أي مشاكل، ولا تزال خاصية اللون تكتب uint.

سؤالي هو كيف يمكنني كشف ملكية عامة حتى أتمكن من التحكم في لون نص المكونات الخاص بي؟لماذا يمكنني استخدام السلسلة "الحمراء" كحقل uint لعناصر التحكم mx ولكن يبدو أنني لا أستطيع فعل الشيء نفسه في مكون مخصص، هل أحتاج إلى القيام بشيء خاص؟

شكرًا.

هل كانت مفيدة؟

المحلول

اللون ليس خاصية، بل هو أسلوب.تحتاج إلى تحديد النمط مثل هذا:

[Style(name="labelColor", type="uint", format="Color" )]

(أرفقها بالعلامة إذا قمت بتعريفها مباشرة في MXML).ستحتاج بعد ذلك إلى إضافة بعض ActionScript للتعامل مع هذا النمط وتطبيقه على أي عنصر تحكم تحتاجه، يرجى الرجوع إليه http://livedocs.adobe.com/flex/3/html/help.html?content=skinstyle_1.html للمزيد من المعلومات.

نصائح أخرى

إليك اثنتين من وظائف الأدوات المساعدة الخاصة بي:

    public static function convertUintToString( color:uint ):String {  
            return color.toString(16);  
    }  

    public static function convertStringToUint(value:String, mask:String):uint {  
            var colorString:String = "0x" + value;  
            var colorUint:uint = mx.core.Singleton.getInstance("mx.styles::IStyleManager2").getColorName( colorString );  

            return colorUint;  
    }     
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top