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

Update, Sprite_Base

Iniciado por iJackBoy, 02/08/2017 às 17:11

02/08/2017 às 17:11 Última edição: 03/08/2017 às 11:26 por Corvo
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.

//-----------------------------------------------------------------------------
// 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.

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