【发布时间】:2026-02-13 18:50:01
【问题描述】:
我正在制作一个网页,其中有鱼在后台移动。我有一个名为 Fish 的父类和每种鱼的子类。 Fish 类有一个 print 方法,我想引用该类的每个实例常用的变量。我需要动态调整图像的大小,所以我想简单地修改物种的变量并调整物种的每个对象。我的问题是:如何在父类方法中为每个类创建一个可供该类的每个实例使用的变量?
这是我尝试过的简化版本。当然是行不通的。任何帮助将不胜感激。
<!DOCTYPE html>
<html>
<body>
<canvas id="myCanvas"></canvas>
</body>
<script>
function Fish(fi){
this.myPic = fi;
}
Fish.prototype.print = function(cnv, x, y){
cnv.drawImage(this.myPic,x,y);
};
function clownF(){Fish.call(this, clownF.pic);}
clownF.prototype = Object.create(Fish.prototype);
clownF.prototype.constructor = clownF;
clownF.pic = new Image();
clownF.pic.src = "clownF.png";
clownF.pic.onload = function(){
var c=document.getElementById("myCanvas");
c.width = 500;
c.height = 300;
var ctx=c.getContext("2d");
var f = new clownF();
f.print(ctx,10,10);
var temp = document.createElement('canvas');
temp.width = clownF.pic.width / 2;
temp.height = clownF.pic.height / 2;
var tctx = temp.getContext('2d');
tctx.drawImage(clownF.pic,0,0,temp.width,temp.height)
clownF.pic = temp;
f.print(ctx,100,100);
}
</script>
</html>
【问题讨论】:
-
可能是这样的:elegantcode.com/2011/01/19/…
-
感谢 CBroe 提供的链接。我实际上使用同一篇文章来创建上面显示的程序。问题是每条鱼可能会向前或向后移动,因此每个类将有 2 张图像。每个单独的对象都需要一个变量来确定哪个类图像用于其显示。我认为我需要一个指针之类的东西。这样,每个对象都有一个指针,该指针指向两个静态的类范围变量之一,当这些静态变量发生变化时,所有对象都会相应地发生变化。这个指针需要在通用的 Fish 打印方法中使用。
标签: javascript html oop html5-canvas