Najnowsze tutoriale tworzenie stron internetowych
 

HTML gier Images


Wciśnij przyciski, aby przesunąć buźkę:








Jak użyć wizerunki?

Aby dodać obrazy na płótnie, na getContext("2d") Obiekt posiada wbudowane właściwości obrazu i metod.

W naszej grze, aby utworzyć gamepiece jako obraz, należy użyć konstruktora składnik, ale zamiast odnoszenia się do koloru, należy zapoznać się z url obrazu. I trzeba powiedzieć, że konstruktor tego komponentu jest typu "image" :

Przykład

function startGame() {
  myGamePiece = new component(30, 30, "smiley.gif" , 10, 120, "image" );
  myGameArea.start();
}

W konstruktorze komponentu możemy sprawdzić, czy element jest typu "image" i utworzenia obiektu obrazu przy użyciu wbudowanego "nowy Image() " konstruktora obiektu. Kiedy jesteśmy gotowi, aby narysować obraz, możemy użyć metody drawImage zamiast metody fillRect:

Przykład

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);
    }
  }
}
Spróbuj sam "

Zmiany Images

Można zmienić obraz w dowolnym momencie, zmieniając src własność image przedmiotu komponentu.

Jeśli chcesz zmienić buźkę za każdym razem się porusza, zmienić źródło obrazu, gdy użytkownik kliknie przycisk, a wraca do normy, gdy przycisk nie zostanie kliknięty:

Przykład

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;
}
Spróbuj sam "

Obrazy tła

Dodaj obraz tła do swojego obszaru gry, dodając je jako składnik, a także aktualizować tło w każdej ramce:

Przykład

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();
}
Spróbuj sam "

Przenoszenie Tło

Zmień składnika tle za speedX właściwość, aby ruch w tle:

Przykład

function updateGameArea() {
    myGameArea.clear();
    myBackground.speedX = -1;
    myBackground.newPos();
    myBackground.update();
    myGamePiece.newPos();
    myGamePiece.update();
}
Spróbuj sam "

Pętla Tło

Aby dokonać tej samej pętli tła wiecznie, musimy użyć konkretnej techniki.

Zacznij mówiąc konstruktora składnik, który jest tłem. Konstruktor składnik będzie następnie dodać zdjęcie dwukrotnie, od razu umieszczając drugi obraz po pierwszym obrazie.

W newPos() metody, należy sprawdzić, czy x pozycja komponentu ma dotrzeć do końca obrazu, jeśli ma ustaw x pozycję składnika na 0:

Przykład

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;
            }
        }
    }
}
Spróbuj sam "