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.
为什么?
var myColor:uint = int(tf.color); //有效但为什么我要施展呢?
答案 0 :(得分:0)
来自Adobe的API参考:
color:Object
所以颜色是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.
我们可以看到编译器抱怨它需要明确的指令来执行转换。从这一点来说,我们有足够的理由相信编译器的设计方式是这样的。另请注意,您可以使用 uint 或 int 的构造函数将Object转换为数字。 uint 和 int 都是Object的派生类。
var myColor:uint = new uint(tf.color);
我希望这可以解决问题。