Impact

This forum is read only and just serves as an archive. If you have any questions, please post them on github.com/phoboslab/impact

1 decade ago by Fooshi

i have a problem again (i'm very beginer on impact .. :( )
I have created two entities : FondEntity get image data of a canvas et copy some pixel in my main canvas to ducplicate when mouse is pressed (like a scratch ticket), my second entity TestEntity is just a png to display but it don't displayed !
here is my code :

ig.module(
	'game.test'
)
.requires(
	'impact.impact',
	'impact.game',
	'impact.animation',
	'impact.entity',
	'impact.image',	
	'impact.input',	
	'impact.system'
)
.defines(function(){
	
	// Entity
	FondEntity	= ig.Entity.extend({		
		first		: new ig.Image('media/first.png'),
		animSheet	: new ig.AnimationSheet('media/first.png',320,480),
		FondCtx		: null,
		init		: function(x,y,settings){
			
			this.parent(x,y,settings );
			var FondCanvas 	= document.getElementById("fond");   				// Recupere le canvas de fond 
			this.FondCtx 	= FondCanvas.getContext("2d");
			this.addAnim('idle',1,[0]);		
			this.first.draw(0,0);	
		},
		update		: function(){	
				
			if(ig.input.state('scratch'))
			{
				var FondImg;				
				for(var y=0; y<20; ++y)
				{
					var x	= (Math.sqrt(400-(y*y))).round();
					for(var i=0; i<x; ++i)
					{						
						FondImg 	= this.FondCtx.getImageData(ig.input.mouse.x+i,ig.input.mouse.y+y,1,1);
						ig.system.context.putImageData(FondImg,ig.input.mouse.x+i,ig.input.mouse.y+y);
						
						FondImg 	= this.FondCtx.getImageData(ig.input.mouse.x-i,ig.input.mouse.y+y,1,1); 
						ig.system.context.putImageData(FondImg,ig.input.mouse.x-i,ig.input.mouse.y+y);
						
						FondImg 	= this.FondCtx.getImageData(ig.input.mouse.x+i,ig.input.mouse.y-y,1,1); 
						ig.system.context.putImageData(FondImg,ig.input.mouse.x+i,ig.input.mouse.y-y);
						
						FondImg 	= this.FondCtx.getImageData(ig.input.mouse.x-i,ig.input.mouse.y-y,1,1); 
						ig.system.context.putImageData(FondImg,ig.input.mouse.x-i,ig.input.mouse.y-y);										
					}					
				}				
			}
		}
	});
	
	// Entity
	TestEntity	= ig.Entity.extend({
		size		: {x:10, y:10},
		animSheet	: new ig.AnimationSheet('media/particles.png',10,10),
		init		: function(x,y,settings){
			
			this.parent(x,y,settings );
			this.addAnim('idle',1,[0]);			
		},
		update		: function(){
			
			this.currentAnim = this.anims.idle;
			this.parent();
		}
	});
	
	// Game
	TotemGame	= ig.Game.extend({
		FondCtx		: null,
		init		: function(){
			var FondCanvas 	= document.getElementById("fond");   				// Recupere le canvas de fond 
			this.FondCtx 	= FondCanvas.getContext("2d");
			
			ig.input.bind(ig.KEY.MOUSE1, 'scratch');							// Ecouteur de la souris	
			ig.game.spawnEntity(FondEntity,0,0);
			ig.game.spawnEntity(TestEntity,0,0);			
		},
		update		: function(){
			
			this.parent();
		},
		draw		: function(){
						
		}
	});
	ig.main('#canvas', TotemGame, 60, 320, 480, 1);	
});

// Init the background Canvas
function init()
{
	var fond		= document.getElementById("fond");
	var imageFond 	= new Image();
  	var imageFond1	= new Image();
	if (fond.getContext) 
  	{
		ctx = fond.getContext("2d");
		imageFond.onload	= function()
		{
			ctx.drawImage(imageFond,0,0);
		}
		imageFond1.onload	= function()
		{
			ctx.drawImage(imageFond1,0,0);  
		}
		imageFond.src 	= "media/fond.jpg";
		imageFond1.src	= "media/euro1.png";			
	}	
}
		

thank you, the begin is hard for me !

1 decade ago by Datamosh

The init code is executed only when initializing the entity, all the drawing must be in the draw method ;)

1 decade ago by Fooshi

Well effectively i have changed my code to set the animation only in the draw method and my TestEntity id displayed but my FondEntity wich copy the data of a canvas is reset all the time by this method drawn (i want that the modification which i execute in this entity on the mouse over stay in place).
Here is my code changed :

ig.module(
	'game.test'
)
.requires(
	'impact.impact',
	'impact.game',
	'impact.animation',
	'impact.entity',
	'impact.image',	
	'impact.input',	
	'impact.system'
)
.defines(function(){
	
	// Entity
	FondEntity	= ig.Entity.extend({
		first		: new ig.Image('media/first.png'),
		animSheet	: new ig.AnimationSheet('media/first.png',320,480),
		FondCtx		: null,
		init		: function(x,y,settings){
			
			this.parent(x,y,settings );
			var FondCanvas 	= document.getElementById("fond");   				// Recupere le canvas de fond 
			this.FondCtx 	= FondCanvas.getContext("2d");
			this.addAnim('idle',1,[0]);			
		},
		update		: function(){	
				
			this.parent();
		},
		draw		: function(){	
			
			if(ig.input.state('scratch'))
			{
				var FondImg;				
				for(var y=0; y<20; ++y)
				{
					var x	= (Math.sqrt(400-(y*y))).round();
					for(var i=0; i<x; ++i)
					{						
						FondImg 	= this.FondCtx.getImageData(ig.input.mouse.x+i,ig.input.mouse.y+y,1,1);
						ig.system.context.putImageData(FondImg,ig.input.mouse.x+i,ig.input.mouse.y+y);
						
						FondImg 	= this.FondCtx.getImageData(ig.input.mouse.x-i,ig.input.mouse.y+y,1,1); 
						ig.system.context.putImageData(FondImg,ig.input.mouse.x-i,ig.input.mouse.y+y);
						
						FondImg 	= this.FondCtx.getImageData(ig.input.mouse.x+i,ig.input.mouse.y-y,1,1); 
						ig.system.context.putImageData(FondImg,ig.input.mouse.x+i,ig.input.mouse.y-y);
						
						FondImg 	= this.FondCtx.getImageData(ig.input.mouse.x-i,ig.input.mouse.y-y,1,1); 
						ig.system.context.putImageData(FondImg,ig.input.mouse.x-i,ig.input.mouse.y-y);										
					}					
				}				
			}
			
			this.parent();
		}
	});
	
	// Entity
	TestEntity	= ig.Entity.extend({
		size		: {x:10, y:10},
		animSheet	: new ig.AnimationSheet('media/particles.png',10,10),
		init		: function(x,y,settings){
			
			this.parent(x,y,settings );
			this.addAnim('idle',1,[0]);			
		},
		update		: function(){			
			
			this.parent();
		},
		draw		: function(){
			
			this.currentAnim = this.anims.idle;
			this.parent();		
		}
	});
	
	// Game
	TotemGame	= ig.Game.extend({
		FondCtx		: null,
		init		: function(){
			var FondCanvas 	= document.getElementById("fond");   				// Recupere le canvas de fond 
			this.FondCtx 	= FondCanvas.getContext("2d");
			
			ig.input.bind(ig.KEY.MOUSE1, 'scratch');							// Ecouteur de la souris	
			ig.game.spawnEntity(FondEntity,0,0);
			ig.game.spawnEntity(TestEntity,0,0);			
		},
		update		: function(){
			
			this.parent();
		},
		draw		: function(){
			
			this.parent();		
		}
	});
	ig.main('#canvas', TotemGame, 60, 320, 480, 1);	
});

// Init the background Canvas
function init()
{
	var fond		= document.getElementById("fond");
	var imageFond 	= new Image();
  	var imageFond1	= new Image();
	if (fond.getContext) 
  	{
		ctx = fond.getContext("2d");
		imageFond.onload	= function()
		{
			ctx.drawImage(imageFond,0,0);
		}
		imageFond1.onload	= function()
		{
			ctx.drawImage(imageFond1,0,0);  
		}
		imageFond.src 	= "media/fond.jpg";
		imageFond1.src	= "media/euro1.png";			
	}	
}
		
Page 1 of 1
« first « previous next › last »