0

画面に 3 枚のトランプを表示しようとしていますが、何らかの理由でコードを実行するたびにタイプ エラーが表示され、それを修正するためにあらゆることを試みましたが、何も機能しませんでした。問題は配列/オブジェクトコンストラクターにあると思いますが、すべてがそれらの中にあると思います。

"use strict";

function main(){
var cvs = document.getElementById("foo");
var ctx = foo.getContext("2d");
function Card(posX, posY, imgX, imgY){
    this.posX = posX;
    this.posY = posY;
    this.imgX = imgX;
    this.imgY = imgY;
    this.width = 97;
    this.height = 129;
}
Card.img = new Image();
Card.img.src = "allcards.png";
var cards = [new Card(0,0,0,0), new Card(400,400,194,258), new Card(200,200,291,387)];
var greaterX = false;
var lessX = false;
var greaterY = false;
var lessY = false;
var offsetX;
var offsetY;
setInterval(draw, 10);

function draw(){
    ctx.fillStyle="rgb(0,255,255)";
    ctx.clearRect(0,0,600,600);
    ctx.drawImage(Card.img,cards[1].imgX,cards[1].imgY,Card.width,Card.height,cards[1].posX, cards[1].posY);
    ctx.drawImage(Card.img,cards[2].imgX,cards[2].imgY,Card.width,Card.height,cards[2].posX, cards[2].posY);
}

}
4

2 に答える 2

1

var ctx = foo.getContext("2d");

これはいけませんか

var ctx = cvs.getContext("2d");

于 2012-08-29T19:21:26.487 に答える
1

Card関数オブジェクトの静的プロパティと Card インスタンスの静的プロパティを混同しているようです- プロパティwidthheightプロパティはインスタンス プロパティです。

var cvs = document.getElementById("foo");
var ctx = cvs.getContext("2d");

function Card(posX, posY, imgX, imgY){
    this.posX = posX;
    this.posY = posY;
    this.imgX = imgX;
    this.imgY = imgY;
}
// default values/methods, accessible and overwritable on all instances:
Card.prototype.width = 97;
Card.prototype.height = 129;
Card.prototype.draw = function() {
    ctx.drawImage(Card.img, this.imgX, this.imgY, this.width, this.height, this.posX, this.posY);
};

// static property:
Card.img = new Image();
Card.img.src = "allcards.png";
Card.img.onload = draw;

var cards = [new Card(0,0,0,0), new Card(400,400,194,258), new Card(200,200,291,387)];

function draw(){
    ctx.fillStyle="rgb(0,255,255)";
    ctx.clearRect(0,0,600,600);
    for (var i=0; i<2; i++)
        cards[i].draw();
};
于 2012-08-29T19:52:40.633 に答える