慕村9458030
2-3看完了正在看2-4
weixin_慕数据2595435
你第16行的this.born(i)被注释掉了
qq_纸风车_sFJ058
括号去掉还是报错啊
qq_西红柿打卤面_0
你是不是通过css设置的画布宽高?
慕桂英2017194
可以的
我想说什么来着
fruitObj.prototype.born = function(){
var aneID = Math.floor(Math.random() * ane.num);
this.x = ane.x[aneID];
this.y = canHeight - ane.len[aneID];
}
代码写错了,应该是
this.x[i] = ane.x[aneID];
this. y[i] = canHeight - ane.len[aneID];
慕少7291320
fruit.js中第26、27行少了this,应该是this.x[i],this.y[i]
十乘三
加油!!
qq_请输入匿称_0
搞不定,描述台复杂了,大哥 你是不是打开了一个错的页面啊
初岓
我把你的放在我的里面,果实是正常大小,你是只截图截了一部分吗?
beooooook
this.bule.src = "./src/bule.png";
这个应该是blue吧,,,
慕粉1703136593
所有的东西都是基于canvas渲染,而当alive为false不执行渲染draw这个方法属性,因而画布上果实消失。
幕布斯1034699
ctx2.globalAlpha = 0.6;//这个语句就是设置海葵的透明度呀
不换行
同学们,我终于弄明白为什么生成不了果子了,代码顺序有问题,大家可以把初始化果树放在初始化果子之前,那么就没问题拉。
慕运维0582399
因为她以后这些都是动画,所以会每次都绘制
liubaobei1992
解决了,少写了this.born(i);
呆呆小志
方便调用
慕粉无情
您是怎样解决的,求答
慕姐0535997
贴下源代码呗
小黑000
怎么改的
慕粉3534043
怎么解决的,给一下源码呗,我快烦死了
麓小羽
fruitObj.prototype.num=30;
fruitObj.prototype.init=function
这两句你都多出了一个括号,正确的如上,fruitObj后不要括号
Naraku1211
function gameloop(){
window.requestAnimFrame(gameloop);
deltaTime = now - lastTime;
lastTime = now;
deltaTime = (deltaTime>40)?40:deltaTime;
}在 main.js中添加
deltaTime = (deltaTime>40)?40:deltaTime;
来限制帧的最大时间。因为切换到其他标签后页面停止刷新,导致帧会变得很大
李波_lee
为什么我的也不显示
狄子魔童
求解决办法
慕粉18851567628
视频播放下面。右下角出有 “资料下载”
依舞清暖
代码没报错就是逻辑问题 可能是你的draw()没放到主函数main里 也可能是你的出生代码无效
我的 你对比下吧
希望能对你有帮助
var fruitObj=function()
{
this.alive=[];//bool
this.y=[];
this.x=[];
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.spd[i]=Math.random()*0.017+0.003;//[0.005,0.015)
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++)
{
if(this.alive[i])//为什么不是this。alive[i]=true
{
if(this.fruitType[i]=="blue")
{
var pic=this.blue;
}
else{
var pic =this.orange;
}
if(this.l[i]<15)
{
this.l[i]+=this.spd[i]*daltaTime;
}
else
{
this.y[i]-=this.spd[i]*7*daltaTime;
}
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]<(Math.random()*50+20))
{
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 run=Math.random();
if(run<=0.3)
{
this.fruitType[i]="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)
{
sendFruit();
return;
}
}
function sendFruit()
{
for(var i=0; i<fruit.num; i++)
{
if (!fruit.alive[i])
{
fruit.born(i);
return;
}
}
}
慕粉3354867
上面的是你的代码吗,this.y =0,这个地方改下
qq_我在呢_0
born方法中的代码写错了:
this.x = ane.x[aneID];应该是:this.x[i]=ane.x[aneID];
this.y = canHeight - ane.len[aneID];应该是:this.y[i] = canHeight - ane.len[aneID];
坐标x和y少写了[i].
王cl
var aneObj = function(){
this.x = [];
this.h = [];
}
aneObj.prototype.num = 50;
aneObj.prototype.init = function(){
for (var i = 0; i < this.num; i++) {
this.x[i] = i * 16 + Math.random();
this.h[i] = 200 + Math.random() * 50;
};
}
aneObj.prototype.draw = function(){
ctx2.save();
ctx2.globalAlpha = 0.6;
ctx2.lineWidth = 20;
ctx2.lineCap = 'round';
ctx2.strokeStyle = '#3b154e';
for (var i = 0; i < this.num; i++) {
// beginPath,moveTo,lineTo,stroke,strokeStyle,lineWidth,lineCap,globalAlpha
ctx2.beginPath();
ctx2.moveTo(this.x[i], canHeight);
ctx2.lineTo(this.x[i], canHeight - this.h[i]);
ctx2.stroke();
};
ctx2.restore();
}