center_one
记录引用的地址,方便后面dispose函数中释放
沈剑心23333
当然可以,老师这么写为了改变数组项方便后续方法调用
玉鸯子
count表示的是遍历图片的计数器。这里指的是遍历完成如果计数为0.代表的是在for循环中没有进行count++;也就是说图片数组或对象images是一个空的。到这一步意也意味着图片加载完成,理所调用callback。
图片的加载是在doload()函数中,每个图片加载成功一次,--count。这里的count是图片真正加载成功的计数器。
此时计数器减为0,意味图片全部加载完成。执行callback
所以你问的不是对数组遍历不成功,而是遍历的对象是空数组(或对象)
上面是个人理解的,不对的地方还望指正
GapYear
执行下面三段代码,便会明白一些区别
var array=['a'];
Array.prototype.test=function(){};
array.loady = 'ask';
/*标准的for循环*/
for(var i=0;i<array.length;i++){
alert(i);
}
//////
var array=['a'];
Array.prototype.test=function(){};
array.loady = 'ask';
for(var i in array){
alert(i);
}
///////
var array=['a'];
Array.prototype.test=function(){};
array.loady = 'ask';
for(var i in array){
if(!array.hasOwnProperty(i)){
continue;
}
alert(i);
}
Goweart
参照javascript权威指南的:使用for、in循环可以在循环体遍历对象中所有的可枚举的属性,也就是包括自有属性和继承属性,把属性名称赋值给循环变量;而hasOwnProperty方法可以用来检测给定的名字是否是对象的自有属性,通过以上两步筛选,可以筛选出对象具有的自有属性,也就是期望的格式object:{src:xxx}.我是新手,以上是我自己推断的,如有错误,见谅
erichow
window[item.id] 这一步是给window对象添加了一个item.id属性,而window是全局对象,item.id就是全局属性,全局属性就是全局变量,这个变量指向一个image类对象,如果不加这一步,创建的只是一个局部的image类对象,是不会对外部产生影响的。
scalewing
images中是图片src对应的字符串,将images中的每一项变为一个对象方便后面操作,这个对象上挂载了对应的src,Image对象,id等信息,方便后来的操作
cc_0501
https://github.com/ustbhuangyi/animation
这是老师上传到github上面的例子,你clone下来就有源码和图片了。素材图片在demo目录下,rabbit-big.png,
rabbit-lose.png,rabbit-win.png。
qq_慕沐3137801
weibo_music不倒翁_0
这个没有,要自己对着视频敲
幕布斯3490265
可以参考这个回答:http://www.imooc.com/qadetail/142112
kad0108
webstorm自带的功能,在方法的上方,输入/**,然后回车
Betsey
同学你好,你要理解图片的加载是一个异步过程,而js是单线程执行,这是一个同步过程,也就是说假设4个图片,遍历数组的时候会执行count++,最后记到4,然后当图片加载完毕的时候才会执行done函数,然后做count--,当count为0的时候表示所有的图片加载完毕
知道夜的黑
同学看的很细,这里window[item.id]确实不是必须的,它的存在有一定历史原因~当时开发这个库的时候,还没写完整的清理逻辑的时候,为了便于在浏览器直接调试,通过window['__img_id']可以直接访问到某个image对象。