Apertar os botões para mover o emoticon:
Como usar Imagens?
Para adicionar imagens em uma tela, o getContext("2d") objeto foi construído com propriedades e métodos de imagem.
No nosso jogo, para criar o gamepiece como uma imagem, use o construtor de componente, mas em vez de se referir a uma cor, você deve referir-se a URL da imagem. E você deve dizer ao construtor que este componente é do tipo "image" :
Exemplo
function startGame() {
myGamePiece = new component(30, 30, "smiley.gif" ,
10, 120, "image" );
myGameArea.start();
}
No construtor componente testamos se o componente é do tipo "image" , e criar um objeto de imagem usando o built-in "nova Image() " construtor do objeto. Quando estamos prontos para desenhar a imagem, usamos o método drawImage em vez do método fillRect:
Exemplo
function component(width, height, color, x, y, type) {
this.type = type;
if
(type == "image") {
this.image = new Image();
this.image.src = color;
}
this.width =
width;
this.height = height;
this.speedX = 0;
this.speedY = 0;
this.x = x;
this.y = y;
this.update = function() {
ctx =
myGameArea.context;
if (type == "image") {
ctx.drawImage(this.image,
this.x,
this.y,
this.width, this.height);
} else {
ctx.fillStyle = color;
ctx.fillRect(this.x, this.y, this.width, this.height);
}
}
}
Tente você mesmo " mudança de Imagens
Você pode mudar a imagem sempre que você gosta, alterando o src
propriedade da image
objeto do seu componente.
Se você quiser mudar a cada vez que ele se move do smiley, mudar a fonte de imagem quando o usuário clica em um botão, e de volta ao normal quando o botão não for clicado:
Exemplo
function move(dir) {
myGamePiece.image.src =
"angry.gif";
if (dir == "up")
{myGamePiece.speedY = -1; }
if (dir == "down")
{myGamePiece.speedY = 1; }
if (dir == "left")
{myGamePiece.speedX = -1; }
if (dir == "right")
{myGamePiece.speedX = 1; }
}
function clearmove() {
myGamePiece.image.src = "smiley.gif";
myGamePiece.speedX = 0;
myGamePiece.speedY = 0;
}
Tente você mesmo " Imagens de fundo
Adicionar uma imagem de fundo para sua área de jogo, adicionando-o como um componente, e também atualizar o fundo em cada quadro:
Exemplo
var myGamePiece;
var myBackground;
function
startGame() {
myGamePiece = new component(30, 30,
"smiley.gif" , 10, 120, "image");
myBackground
= new component(656, 270, "citymarket.jpg" , 0, 0, "image");
myGameArea.start();
}
function updateGameArea() {
myGameArea.clear();
myBackground.newPos();
myBackground.update();
myGamePiece.newPos();
myGamePiece.update();
}
Tente você mesmo " fundo em movimento
Alterar o componente de fundo speedX
propriedade para fazer a jogada de fundo:
Exemplo
function updateGameArea() {
myGameArea.clear();
myBackground.speedX = -1;
myBackground.newPos();
myBackground.update();
myGamePiece.newPos();
myGamePiece.update();
}
Tente você mesmo " Circuito de fundo
Para fazer o mesmo loop de fundo para sempre, devemos usar uma técnica específica.
Comece dizendo o construtor componente que este é um fundo. O construtor componente será, em seguida, adicionar a imagem duas vezes, colocando a segunda imagem imediatamente após a primeira imagem.
Nos newPos()
método, verificar se a x
da posição do componente tem atingir o fim da imagem, se tiver, definir o x
da posição do componente de 0:
Exemplo
function component(width, height, color, x, y, type) {
this.type = type;
if (type == "image" || type
== "background" ) {
this.image = new Image();
this.image.src = color;
}
this.width = width;
this.height = height;
this.speedX = 0;
this.speedY = 0;
this.x = x;
this.y = y;
this.update = function() {
ctx
= myGameArea.context;
if (type
== "image" || type == "background") {
ctx.drawImage(this.image,
this.x, this.y, this.width, this.height);
if (type == "background") {
ctx.drawImage(this.image,
this.x + this.width, this.y, this.width, this.height);
}
} else {
ctx.fillStyle = color;
ctx.fillRect(this.x, this.y, this.width, this.height);
}
}
this.newPos = function() {
this.x += this.speedX;
this.y
+= this.speedY;
if
(this.type == "background") {
if (this.x == -(this.width)) {
this.x = 0;
}
}
}
}
Tente você mesmo "