cocos2d-x js学习

因为要求使用JS,所以着手使用JS进行学习,前端时间大概看了一遍权威指南,感觉一知半解啊,好吧,计划上也是这个效果。在实际学习中一步步学习吧。

先看到关于简化版的js对类的三个属性的实现,权威指南讲得更加深入,但是看不懂权威指南的。以下是链接。

三生石

http://www.cnblogs.com/sanshi/archive/2009/07/08/1519036.html

其中的笔记:

hasOwnProperty:是用来判断一个对象是否有你给出名称的属性或对象。不过需要注意的是,此方法无法检查该对象的原型链中是否具有该属性,该属性必须是对象本身的一个成员。
isPrototypeOf是用来判断要检查其原型链的对象是否存在于指定对象实例中,是则返回true,否则返回false。


针对原型链介绍图解

http://www.jb51.net/article/30750.htm

再来理解constructor。 


当定义一个prototype的时候,会构造一个原形对象,这个原型对象存储于构造这个prototype的函数的原形方法之中. 


详细出处参考:http://www.jb51.net/article/30750.htm


http://www.cnblogs.com/jenry/archive/2010/12/08/1900150.html

存在一个疑问。


关于原型的好文章

http://cube.qq.com/?p=163


摘下这段话,感觉不明白,去问老大。

Class.extend = function(prop) {
                // 这个地方很是迷惑人,还记得我在本系列的第二篇文章中提到的么
                // - this具体指向什么不是定义时能决定的,而是要看此函数是怎么被调用的
                // - 我们已经知道extend肯定是作为方法调用的,而不是作为构造函数
                // - 所以这里this指向的不是Object,而是Function(即是Class),那么this.prototype就是父类的原型对象
                // - 注意:_super指向父类的原型对象,我们会在后面的代码中多次碰见这个变量

 
 
  1. var _super = this.prototype; 

注意,js里面的这个this的类型是在调用时指定的,那么这个this实际上是父类构造函数对象。比如你写了一个MyNode继承自cc.Node。相应代码是:

 
 
  1. var MyNode = cc.Node.extend({ 
  2. var _super = this.prototype;
  3. ... 
  4. }); 


注意!脚本语言有一个特点,如果函数运行失败了,则该函数后面的函数(在同一作用域中的)都会跳过执行。

Cocos2d-x引擎经常出现的错误提示Invalid Native Object。底层C++对象被回收了,所以找不到了。


现在开始学习cocos2d-x的源代码例子。

首先是moonwarrios文件

从cc.xxx派生出来的类要在构造函数ctor中associateWithNative 绑定,下面方法添加到jsb启动文件后可以和CH5通用;


cc.associateWithNative = function( jsobj, superclass ) {
    var native = new superclass();
    __associateObjWithNative( jsobj, native );
};


与到两个问题,在#include "ScriptingCore.h"等代码中无法找到相关文件的错误。错误原因是附加包含目录没有被包含进来,解决方案是在项目属性里面设置,添加包含目录。出现错误的原理正在挖,等下一起解释。后面同时报错,LNK2019 无法识别外部符号,问题是明明已经进行头文件引用了,而且还可以找到这个函数的定义,为什么还是无法找到这个函数。

http://msdn.microsoft.com/zh-cn/library/799kze2z.aspx

链接器简易原理概念

http://blog.sina.com.cn/s/blog_5f8817250100i3oz.html

我的问题在于引用头文件,但是并没有对头文件下的cpp文件进行编译成obj文件。因为之前使用的引擎很多文件其实已经编译成为库文件了,而这个文件并没有编译成为obj文件,具体问题再去问老大。Mark一下,后面做补充。

好的,运行成功js项目,给我的经验除了学到的知识外,感觉没有教程后才能逼迫自己去挖下面的知识,去理解其中的知识。


例子运行起来,后面看到使用一个错误的使用了一个变量都没报错。。。。js啊


遇到一个全局变量,定义了一个winsize,下面做个全局变量的笔记

js中 允许在定义变量的时候 不加var 修饰符。
js会在当前作用域下寻找上下文是否定义了此变量, 如果没有找到则会为这个变量分配内存。
当且将其视为window的成员。 也就是全局变量
如果加了var 修饰符。 js会重新为这个变量分配内存,不论当前上下文中是否已经定义过了。
这个变量的作用域就为当前上下文。 即局部变量

脚本写东西,编译就是快啊,原因主要还是不需要去编译底层的C++文件,就相当于更改了一下资源里面的图片文件,然后再编译。用起来还真是简单,不过去看过他底层的实现,感觉还是不简单,首先js实现继承机制,cocos2d-x采用的是simple javascript,大概思想是Reg大神提供的思想。后面编写多了再去回味,现在有很多东西看不懂为何如此,不理解他的优雅。

非常悲剧的是,正好要把写的例子编译的时候,电脑死机了,根本开不了,五一都放假了,只能等到放假结束送去维修,个人估计是硬盘坏了。

所以用另一台电脑配环境,继续游戏开发练习。

配环境中遇到一个问题,关于coff文件的问题,解决方案在这里:

http://www.eoeandroid.com/thread-308257-1-1.html

不懂原理,后面找到静态库和动态库等文件,再统一学习。

好的,开一个cocos2d-x for js打地鼠的例子。

链接新开:


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值