Воспроизведение текста и вопрос стиля

Как и в Effect.shadow() устарела в PlayN1.3. Так у меня было что-то вроде этого раньше:

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);

Я не хочу тени сейчас. Это нормально, но я не получал предыдущий результат. Держите on.dont думать сейчас. Затем я изменил этот код на это:

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

Это дает мне результат, как и предыдущий, за исключением тени, которая меня сейчас не волнует. Если я не ошибаюсь, это одно строчное представление приведенного выше кода. Не так ли? Так почему это работает, а над кодом нет. Есть какая-то концептуальная разница? Любой может объяснить, пожалуйста!

// примечание: не беспокойтесь о переменных (textWidth,myFont), они не имеют к этому никакого отношения.

1 ответ

Решение

Объекты TextFormat являются неизменяемыми. Когда вы вызываете textFormat.withFont(myFont), который возвращает новый экземпляр TextFormat, который выкидывает приведенный выше код. Если вы хотите, чтобы первый код работал, вам нужно написать его так:

TextFormat format = new TextFormat();
format = format.withFont(myFont);
format = format.withWrapping(textWidth, Alignment.LEFT);
Другие вопросы по тегам