O TEMA DO FÓRUM ESTÁ EM MANUTENÇÃO. FEEDBACKS AQUI: ACESSAR

Como mudar a altura de uma Window (conteúdo) no Chamar Script?

Iniciado por NumPaD, 11/05/2017 às 15:28

Ahoy marujos,

Eu criei uma Window baseada em um tutorial e estou expandindo as funcionalidades dela.

O código é esse:
function Window_Hint() {
    this.initialize.apply(this, arguments);
}

Window_Hint.prototype = Object.create(Window_Base.prototype);
Window_Hint.prototype.constructor = Window_Hint;

Window_Hint.prototype.initialize = function(time) {
    
    var width = this.windowWidth();
    var height = this.windowHeight();
    var x = Graphics.boxWidth - width;
    var y = 0;
    var timer = time;
    Window_Base.prototype.initialize.call(this, x, y, width, height);
    
    var that = this;
    setTimeout(function () { that.close(); that.parent.removeChild(that);}, 4000);
    
    this.refresh();
};

Window_Hint.prototype.windowWidth = function() {
    return 240;
};

Window_Hint.prototype.windowHeight = function() {
    return this.fittingHeight(1);
};

Window_Hint.prototype.refresh = function() {
    var x = this.textPadding();
    var width = this.contents.width - this.textPadding() * 2;

        //This doesn't work :(
    var height = this.contents.height - this.textPadding() * 2;
    this.contents.clear();
};


Window_Hint.prototype.close = function() {
    this.contents.clear();
    Window_Base.prototype.close.call(this);
};

Window_Hint.prototype.open = function() {
    this.refresh();
    Window_Base.prototype.open.call(this);
};


O Chamar Script no evento é esse:
var hint = new Window_Hint();
hint.height = 120; //funciona para a altura da janela, mas não para a área do texto.
hint.drawText("text line 1", 0, 0, 200, 'left');
hint.drawText("text in line 2", 0, 25, 200, 'left');
SceneManager._scene.addChild(hint)


E o resultado é esse:


Como eu posso expandir a área da altura para escrever mais linhas na mesma janela?

A função Window_Hint.prototype.windowHeight retorna a altura da janela será que será desenhada, e ao tu chamar o initialize da Window_Base ela faz isso bem como também desenha a área para desenho dentro da janela, ou seja, o contents. Ao tu mudar a altura da janela por comando, tu pede que o código mude altura da janela e não seu espaço para desenho. Por isso, creio eu, essa área mantém-se como estava no começo.

Algo impede de a janela começar com uma altura já maior?

Citação de: King Gerar online 11/05/2017 às 15:42
A função Window_Hint.prototype.windowHeight retorna a altura da janela será que será desenhada, e ao tu chamar o initialize da Window_Base ela faz isso bem como também desenha a área para desenho dentro da janela, ou seja, o contents. Ao tu mudar a altura da janela por comando, tu pede que o código mude altura da janela e não seu espaço para desenho. Por isso, creio eu, essa área mantém-se como estava no começo.

Algo impede de a janela começar com uma altura já maior?

Sim, o que impede é que do modo que eu estou fazendo, é via evento que eu escrevo a mensagem. E eu posso querer em um evento 3 linhas. E em outro apenas 1 (O que já funciona muito bem).

Se eu conseguisse fazer ser tudo uma string,iria resolver o problema. Mas o \n não foi funcionou aqui.

11/05/2017 às 18:48 #3 Última edição: 12/05/2017 às 08:29 por King Gerar
Tenta, ao invés de usar o .drawText, use o .drawTextEx(texto, x, y). Ele trabalhar com múltiplas linhas. No caso de não funcionar o \n, tenta \\n. Acho que vai resolver.

Window_Hint.prototype.windowHeight = function() {
    return this.fittingHeight(2);
};

Resolvi com o código acima! Obrigado.