1

就像在 PlayN1.3 中不推荐使用 Effect.shadow() 一样。所以我之前有过这样的事情:

TextFormat textFormat = new TextFormat(myFont, textWidth, Alignment.LEFT, colorCode, Effect.shadow(-16777216, shadowX, shadowY));

所以我把它改成了这样:

TextFormat textFormat = new TextFormat();
textFormat.withFont(myFont);
textFormat.withWrapping(textWidth, Alignment.LEFT);

我现在不想要阴影。没关系,但我没有得到以前的结果。等一下。现在不要想了。然后我把这段代码改成这样:

TextFormat textFormat = new TextFormat().withFont(myFont).withWrapping(textWidth, Alignment.LEFT);

它给了我以前的结果,除了我现在不在乎的阴影。如果我没有错,这是上面代码的一行表示。不是吗?那么为什么它有效而上面的代码没有。有任何概念上的区别吗?任何人都可以解释一下!

//注意:不要担心变量(textWidth,myFont),它们与此无关。

4

1 回答 1

1

TextFormat 对象是不可变的。当您调用 textFormat.withFont(myFont) 返回一个的TextFormat 实例时,上面的代码将丢弃该实例。如果你想让第一个代码工作,你需要这样写:

TextFormat format = new TextFormat();
format = format.withFont(myFont);
format = format.withWrapping(textWidth, Alignment.LEFT);
于 2012-05-26T03:56:02.713 回答