Update, Sprite_Base

0 Respostas   106 Visualizações

0 Membros e 1 Visitante estão vendo este tópico.

iJackBoy

  • *
  • Posts: 47
  • Ouros: 8
  • Só sei que nada seihausehasueha
Tópico criado em: 02/08/2017 às 17:11 - Última modificação por Corvo em 03/08/2017 às 11:26

Boa tarde pessoal,

Eu vim aqui mais pelo motivo que passei á tarde inteira tentando encontrar à solução, mas não consegui. também procurei algo relacionado mas não encontrei.

Seguinte eu estou trabalhando com Sprites, criei um filho para fazer algumas modificações diretamente neles a partir de um método até ai tudo, bem.
Porém eu sempre crio um método para alterar uma propriedade do objeto e em seguida ele começa a fazer o update a partir desta modificação. Eu tenho um outro objeto da mesma classe que funciona o update perfeitamente, o deste está travando nas modificações que eu faço diretamente no Bitmap dele, usando "blt" e "rect_clear", eu verifiquei no console, que o retângulo utilizado está tendo inicio e fim de tanto de localização como de tamanho(que é a função), mas nas atualização do Bitmap; ou ele some completamente ou ele aparece por completo e até as vezes pela metade. não sei, por que este motivo eu vejo que as repetições acontecem, mas o bitmap não acompanha.

Pela lógica não está dando tempo de completar o desenho, porém essa não é a lógica dos frames. x.x

Quem puder da uma luz eu agradeço, estou organizando meu código, estava muito linear.

Código: [Selecionar]
//-----------------------------------------------------------------------------
// Sprite Transition
//-----------------------------------------------------------------------------

function Sprite_Trans() {
    this.initialize.apply(this, arguments);
}

Sprite_Trans.prototype = Object.create(Sprite_Base.prototype);
Sprite_Trans.prototype.constructor = Sprite_Trans;

Sprite_Trans.prototype.initialize = function(x, y, bitmapType, url, color) {
    Sprite_Base.prototype.initialize.call(this);
this.x = x;
this.y = y;
this.rect_Clear = new Rectangle(0, 0, Graphics.width, Graphics.height);
this.start_clear = false;
//
switch(bitmapType){
case 'fillAll':
this.fill_All_Color(color);
break;
case 'bitmap':
this.fill_All_Bitmap(url);
break;
};
};

Sprite_Trans.prototype.update = function() {
    Sprite_Base.prototype.update.call(this);
this.clearBuff_Update();
};

Sprite_Trans.prototype.fill_All_Bitmap = function(url) {
this.bitmap = ImageManager.loadCardSystem(url);
this.bitmap_clone = ImageManager.loadCardSystem(url);
};

Sprite_Trans.prototype.fill_All_Color = function(color) {
this.bitmap = new Bitmap(816, 624);
this.bitmap.fillAll(color);
this.bitmap_clone = new Bitmap(816, 624);
this.bitmap_clone.fillAll(color);
};

Sprite_Trans.prototype.clearBuff = function(){
this.start_clear = true;
};

Sprite_Trans.prototype.clearBuff_Update = function(){
if(this.start_clear){
if(this.rect_Clear.width > -16){
this.bitmap.blt(this.bitmap_clone, 0, 0, this.bitmap_clone.width, this.bitmap_clone.height, 0, 0);
this.bitmap.clearRect(this.rect_Clear.x, this.rect_Clear.y, this.rect_Clear.width, this.rect_Clear.height);
this.rect_Clear.x += 8; this.rect_Clear.y += 6; this.rect_Clear.width -= 16; this.rect_Clear.height -= 12;
    }else{
this.start_clear = false;
};
};
};

::EDIT::

Resolvido:
Por incrível que pareça, nesses casos não usamos método Clear() para limpar o bitmap de uma sprite, simplesmente tive criei uma nova extensão, sobrepondo e adicionando as modificações.

Código: [Selecionar]
Sprite_Trans.prototype.clearBuff_Update = function(){
if(this.start_clear){
if(this.rect_Clear.width > -16){
//this.bitmap.clear();
this.bitmap =  new Bitmap(816, 624);
this.bitmap.blt(this.bitmap_clone, 0, 0, this.bitmap_clone.width, this.bitmap_clone.height, 0, 0);
if(this.bitmap.isReady()){
this.bitmap.clearRect(this.rect_Clear.x, this.rect_Clear.y, this.rect_Clear.width, this.rect_Clear.height);
this.rect_Clear.x += 8; this.rect_Clear.y += 6; this.rect_Clear.width -= 16; this.rect_Clear.height -= 12;
};
    }else{
this.start_clear = false;
};
};
};

Adicionei esta condição para criar o retângulo, mas não é preciso.
Para quem não entendeu;



Resolvido! :bruxo:

Desculpa o duplo amores mas consegui resolver ontem, editei a primeira postagem.
JS > ALLs