游戏解析

来源:互联网 发布:红警2迅雷下载mac 编辑:程序博客网 时间:2024/04/29 10:48
界面分析
游戏层级关系:
1:游戏背景
2:NPC和人物在同一层
3:背景遮挡层(屋檐)
4:按钮UI层,包括聊天和组队
5:弹出层
6:系统提示层
7:系统文字层


游戏流程
1:CSV加载
2:map,init
   npc
   player
3: UI.init








动态加载 Asset
所有需要通过脚本动态加载的资源,都必须放置在 resources 文件夹或它的子文件夹下。resources 需要在 assets 文件夹中手工创建,并且必须位于 assets 的根目录


Creator 提供了 cc.loader.loadRes 这个 API 来专门加载那些位于 resources 目录下的 Asset。和 cc.loader.load 不同的是,loadRes 一次只能加载单个 Asset。


//getCholdByName 获取某个节点     getComponent  获取节点的某个元素
            that._addSpriteFrameToContainer(newNode.getChildByName('pic').getComponent(cc.Sprite), personOb.icon)




动画:
1:创建站立和跑步的逐帧动画的创建。
2:将2个动画绑定到同一个Animation组件上。
3:使用代码控制播放2个动画进行切换。
4:只有NODE可以添加on侦听。
5:尝试让点击地图,人物跑到目标点,结合之前的全局局域坐标的转换。






全屏点击事件处理
全屏的点转换成玩家的点
遮挡处理 不停三个NPC Y坐标进行排序,Z轴顺序的变更




Node节点
图片隐藏方法
1: visible
2:opacity 
3:节点的active   //勾选    定时器里显示为ture
4:destroy    //从显示移除




地图切换解析:
1:加载配置文件解析
2:进行地图的显示
3:NPC的刷新
4:玩家的刷新






getChildByName:                            访问节点


getComponent:                              访问节点层级的组件


cc.find:                                    从根节点处查找
cc.find('UIScript').getComponent('talkPanelControl').pub_showTalkInfo(that._talkPersonOb)


cc.loader.loadRes                           动态加载Asset




===================================================================
误区:
在properties: {
        _lifeProgress:0
    },
里面设的值,有时候会出现失误,所以应该在
onLoad: function () {
        this._lifeProgress = 1;   
    },重新赋一下值。


★防止while出现死循环,在while循环之前建一个安全锁,设一个变量
var safety = 0;
while(1){
   safety ++
cc.error("出现死循环")               //弹出错误警告
if(safety >1000)
    brack
}


cc.sequence:循序执行动作
Padd:两个坐标相加
slice:复制
shift:抽取数组的第一个元素
getchildren:获取一个节点下的所有子节点
Math.floor:向下取整
random0Tol:0到1的随机值
randomMinus1tol:0到-1的值
abs:绝对值


===================================================================
dt:是这一帧与上一帧的间隔差
update:function(dt){
      this._lifeProgress +=dt
      if(this._lifeProgress > 1) this._lifeProgress = 0;
      this.headPanel.getChildByName("lifeBar").getComponent(cc.ProgressBar).progress = this._lifeProgress
     }
===================================================================
var arr = mapArr[i].trim().split(',')
   trim()删除字符串前后的空格字符
===================================================================
destroy ( ) 
销毁该对象,并释放所有它对其它对象的引用。
销毁后,CCObject 不再可用。
您可以在访问对象之前使用 cc.isValid(obj)(或 obj.isValid 如果 obj 不为 null)来检查对象是否已被销毁。
示例:
obj.destroy();
===================================================================
Creator 提供了 cc.loader.loadRes 这个 API 来专门加载那些位于 resources 目录下的 Asset。和 cc.loader.load 不同的是,loadRes 一次只能加载单个 Asset。调用时,你只要传入相对 resources 的路径即可,并且路径的结尾处不能包含文件扩展名


cc.loader.loadRes("csv/mission", function (err, mapCsv) {
            if(err) cc.log(err)
对于err处理应该这样写
===================================================================
CocosCreator 创建文本
1:直接拖上去
2:prefab  预置件
(1)重复使用
(2)封装成模块化使用
3:代码创建




(源件控制)控制某一个节点方法:
在代码里开发放一个接口,把节点拖拽绑定
cc.find
抛出自定义事件  event
0 0