2010-06-08 37 views
1

如果我想知道,如果一個對象具有特定屬性我可以編寫這樣的:編程檢測有效的樣式屬性在Flex

if (SomeObject.hasOwnProperty('xyz')) { 
    // some code 
} 

但有些款式僞裝成在設計時,如Button.color性能.. 。我怎樣才能知道哪些樣式屬性在運行時有效?即:對於getStyle/setStyle,hasOwnProperty的等效函數是什麼?

換句話說,我怎麼能知道如果一個對象有一個特定的風格變量...當我寫:

MyButton.setStyle('qsfgaeWT','-33'); 

它不會完成任何事情,但它也沒有錯誤。我怎樣才能以編程方式知道「qsfgaeWT」不是'Button'的有效樣式?

回答

2

setStyle無效地失敗樣式屬性失敗。您可以嘗試在設置後檢查樣式屬性:

MyButton.setStyle('qsfgaeWT','-33'); 
if (MyButton.getStyle('qsfqaeWT') == "-33") { 
    // Not valid 
} else { 
    // valid 
} 
+0

這真的是唯一的方法嗎? – Joshua 2010-06-08 23:19:35

+0

@Joshua:在瀏覽器樣式聲明對象中,您可以在CSSStyleDeclaration中使用(Javascript)'「propertyName」。 AFAIK,ActionScript只公開了用於獲取樣式值的'getStyle()'方法,因此無法使用'in'運算符來完成檢測。 – 2010-06-08 23:36:54

+0

這不行!如果調用getStyle,則將調用MyButton.setStyle('qsfgaeWT',' - 33'),'-33'! – Joshua 2010-06-09 00:54:04

0

displayObject是添加到舞臺的按鈕。

var value:* = displayObject.getStyle("borderColor"); 
trace(StyleManager.isValidStyleValue(value).toString()); // outputs true 
value = displayObject.getStyle("qwerty"); 
trace(StyleManager.isValidStyleValue(value).toString()); // outputs false 
value = displayObject.getStyle("color"); 
trace(StyleManager.isValidStyleValue(value).toString()); // outputs true 
+0

'StyleManager.isValidStyleValue'如果將getStyle()方法調用返回的值傳遞給此方法,則在樣式設置時返回「true」,如果未設置則返回「false」。它沒有提到任何有關blah-blah的風格http://livedocs.adobe.com/flex/3/langref/mx/styles/StyleManager.html#isV​​alidStyleValue%28%29 – Amarghosh 2010-06-09 04:19:01