lufy's legend

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 5231|回复: 2
打印 上一主题 下一主题

canvas游戏开发书里面第七个游戏遇到的问题

[复制链接]

34

主题

0

好友

458

积分

帐下督

Rank: 2

跳转到指定楼层
楼主
发表于 2015-1-23 16:36:42 |只看该作者 |倒序浏览
lufy,在学习书中案例的时候,学到男人就下100层的那个游戏  ,基本上对着代码敲,却出现一个报错。
function onframe(){
        background.run();
        if(stageSpeed-- < 0){
                stageSpeed = 100;
                addStage();
        }
        var key = null;
        for(key in stageLayer.childList){
                var _child = stageLayer.childList[key];
                _child.onframe();
        }
}
lufylegend-1.7.6.min.js版本没问题
lufylegend-1.9.4.min.js版本_child.onframe();这里就会报错。具体原因是应该是遍历childLIst的问题。
for(var a = 0;a<stageLayer.numChildren;a++){
        var _child = stageLayer.childList[a];
        _child.fonframe();
    }

最后改成这样就好了。
有点不太明白,新版本的childlist遍历不一样了吗
回复

使用道具 举报

37

主题

8

好友

9313

积分

诸侯王

Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15

沙发
发表于 2015-1-23 17:25:12 |只看该作者
childlist是一样的,只是给JS的数组扩展了一些功能,
书中的for(key in stageLayer.childList)这种写法并不严谨,所以导致了新版本中for in出了点问题,
用for(var i = 0;i<stageLayer.numChildren;i++)当然是可以的,
如果还用for in的话,需要加一个判断,就是hasOwnProperty

  1. for(key in stageLayer.childList){
  2.         if(stageLayer.childList.hasOwnProperty(key)){
  3.                 var _child = stageLayer.childList[key];
  4.                 _child.onframe();
  5.          }
  6. }
复制代码
不回答与技术和引擎不相关的问题
回复

使用道具 举报

34

主题

0

好友

458

积分

帐下督

Rank: 2

板凳
发表于 2015-1-23 18:21:21 |只看该作者
lufy 发表于 2015-1-23 17:25
childlist是一样的,只是给JS的数组扩展了一些功能,
书中的for(key in stageLayer.childList)这种写法并不 ...

谢谢lufy~
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

防止垃圾广告,请填写任意字符

Archiver|lufy's legend

GMT+8, 2024-5-19 17:04 , Processed in 0.047596 second(s), 20 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

回顶部