阿里0111
qq_脱了缰的哈士奇_0
?找到办法了
桜抄
也许你的delTime有问题(猜测
慕粉13880750921
解决不了 清空画布
qq_lml_4
Coding青天
我觉得有以下几个原因:
1、html文件中没有包含fruit.js
2、在主程序main.js中没有调用画果实的函数fruit.draw;
3、可能拼写错误,比如prototype写为了protoType,只要有一处这样的错误,就会显示不出来,这类错误在控制台显示不出来,比较难找。
4、...
慕哥0728771
fruitObj.prototype.draw=function () {
ctx2.clearRect(0,0,canWidth,canHeight);//加上这句就行了
for(var i=0;i<this.num;i++){
// draw
// find a ane,grow,fly up
if(this.l[i]<=14){
this.l[i]+=0.01*daltaTime;
}
else{
this.y[i]-=0.07*daltaTime
}
ctx2.drawImage(this.orange,this.x[i]-this.l[i]*0.5, this.y[i]-this.l[i]*0.5,this.l[i],this.l[i])
}
}
三叶阳光3742275
果实图片宽度的变化,每个间隔时间内,宽度增加0.01;this.l[i]+=0.01*deltaTime;
三叶阳光3742275
this.l[i]在i=0的时候,this.l[i]+=不会报NaN?
慕用7145093
//绘制果实
var fruitObj = function()
{
this.alive = [];//bool
this.x = [];
this.y = [];
this.l = [];
this.spd = [];
this.fruitType = [];
this.orange = new Image();
this.blue = new Image();
}
fruitObj.prototype.num = 30;
fruitObj.prototype.init = function()
{
for(var i = 0; i < this.num; i++)
{
this.alive[i] = false;
this.x[i] = 0;
this.y[i] = 0;
this.l[i] = 0;
this.spd[i] = Math.random() * 0.017 + 0.003; //[0.003,0.02)
this.fruitType[i] = "";
}
this.orange.src = "./SRC/fruit.png";
this.blue.src = "./SRC/blue.png";
}
fruitObj.prototype.draw = function()
{
for(var i = 0; i < this.num; i++)
{
//draw
//find an ane,grow,fly,up
if(this.alive[i])
{
if(this.fruitType[i] == "blue")
{
var pic = this.blue;
}
else
{
var pic = this.orange;
}
if(this.l[i] <= 14)
{
this.l[i] += this.spd[i] * deltaTime;
}
else
{
this.y[i] -= this.spd[i] * 7 * deltaTime;
}
ctx2.drawImage(pic, this.x[i] - this.l[i] * 0.5, this.y[i] - this.l[i] * 0.5, this.l[i], this.l[i]);
if(this.y[i] < 10)
{
this.alive[i] = false;
}
}
}
}
fruitObj.prototype.born = function(i)
{
var aneID = Math.floor(Math.random() * ane.num);
this.x[i] = ane.x[aneID];
this.y[i] = canHeight - ane.len[aneID];
this.l[i] = 0;
this.alive[i] = true;
var ran = Math.random();
if(ran < 0.2)
{
this.fruitType[i] = "blue"; //orange,blue
}
else
{
this.fruitType[i] = "orange";
}
}
fruitObj.prototype.dead = function(i)
{
this.alive[i] = false;
}
function fruitMonitor()
{
var num = 0;
for(var i = 0; i < fruit.num; i++)
{
if(fruit.alive[i])
num++;
}
if(num < 15)
{
//send fruit
sendFruit();
return;
}
}
function sendFruit()
{
for(var i = 0; i < fruit.num; i++)
{
if(!fruit.alive[i])
{
fruit.born(i);
return;
}
}
}
应该是代码有的地方打错了,这个代码是对的,你可以看一下
qq_每一天望海_0
在gameloop方法中加上if(deltaTime > 40) deltaTime = 40;
慕用2434619
猫先生3
额,你关心她笑干嘛。。。。。
慕虎8092331
果实的大小与果实的位置相关。你对比一下代码应该可以找到错误
liubaobei1992
慕用3104214
你再去看一下main.js这个文件,你的deltaTime这个变量是不是没有初始化,这个代码的问题就是你在deltaTime还没有初始化的时候就用了这个变量
请叫我花爷
我也有这样原问题,我是在画背景的时候多添加了句代码
function drawBackground() {
bgPic.onload = function() {
ctx2.drawImage(bgPic, 0, 0, canWidth, canHeight);
}
}
改成:
function drawBackground() {
ctx2.drawImage(bgPic, 0, 0, canWidth, canHeight);
}
慕无忌8983795
你确定写过这个没? this.l=[];
永暗的世界
第一,你这个写的是果实的部分。
第二,你看看你的drawImage函数部分是不是写错了,该写在括号里面的东西你写在外面。
下面的是我的你可以找js里的fruit参考一下。
https://github.com/dirstart/h5_tiny
永暗的世界
ctx2.drawImage(this.orange,this.x[i]-this.l[i]*0.5,this.y[i]-this.l[i]*0.5),this.l[i],this.l[i]; 这句里面的“)”位置写错了
慕UI1547199
请问你解决了吗?
sqi
隼丶
代码没有问题,是不是浏览器卡了? 我帮你测试了 在我的上面正常显示
慕粉3163535
可能是主函数中loopgame中没有调用该方法或者主函数中没有定义初始化
qq_宁缺丿毋滥_03852635
ASunnyBoy
没有用 改成dead了
慕UI5652219
this.x[i] - this.l[i] * 0.5 wrong
this.x[i] - this.orange.width* 0.5
hahaha6
NaN是not a number的缩写,你看看是不是逻辑上有错误
灰灰_0007
截个图看看
qq_皮儿_0
this.alive=true;
应该这样写: this.alive[i]=true;
给数组中的元素赋值,而不是给整个数组赋值