2014-06-27 40 views
1
var tf:TextFormat = myTextField.getTextFormat(); 
trace(typeof tf.color); // "number" 
trace(tf.color is uint); // true 
var myColor:uint = tf.color; // error: 1118: Implicit coercion of a value with static type Object to a possibly unrelated type Number. 

爲什麼?爲什麼TextFormat.color不是數字?

var myColor:uint = int(tf.color); //有效。但爲什麼我必須施展它?

回答

0

從Adobe的API參考:

color:Object 

所以顏色是對象的類型,第二行描繪出號類型,因爲它是默認或代碼分配,但並不一定意味着顏色只能是數字。我們可以將字符串類型,顏色對象一樣,所以tf.color的類型可以是數字或字符串:

tf.color = "0x00ff00"; 
myTextField.setTextFormat(tf); // Change text color to green 

如果我們比較以下兩行:

var myColor:uint = "0x00ff00"; // 1067: Implicit coercion of a value of type String to an unrelated type uint. 
var myColor:uint = tf.color; // 1118: Implicit coercion of a value with static type Object to a possibly unrelated type Number. 
// var myColor:uint = new Object(); // This line gives same 1118: Implicit coercion of a value with static type Object to a possibly unrelated type uint. 

我們可以看到編譯器抱怨說它需要明確的指令來執行轉換。從這一點來看,我們有足夠的理由相信編譯器的設計方式。另請注意,您可以使用構造函數uintint將Object轉換爲數字。 uint and int都是Object的派生類。

var myColor:uint = new uint(tf.color); 

我希望這個燈光。

+0

太棒了!謝謝你的偉大答案。 –

相關問題