lufy's legend

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

对lufylegend 2.0的一些意见

[复制链接]

46

主题

3

好友

1866

积分

偏将军

Rank: 4

跳转到指定楼层
楼主
发表于 2014-4-5 21:01:47 |只看该作者 |倒序浏览
一,代码规范化
目前lufylegend中的代码有的地方需要规范一点。比如说一些不提供使用的成员函数或属性可以在函数或属性前加一个_ 。

二,事件规范化
在LMedia,LLoader等类中,加事件的函数addEventListener本应该可以不用重新写的。直接用dispatchEvent()不更好?还有就是触发事件传的event参数,这个参数里的属性太多了,如果能统一一下不更好?

三,更新Box2d
目前引擎的box2d封装感觉不太方便,我觉得一个LSprite应该是加到一个body上,而不是一个body加到LSprite上。所以,我希望的用法是这样的(LBoxBody是一个假设的类,用来创建矩形刚体):
  1. var box = new LBoxBody(100,100,true);
  2. addChild(box);
复制代码
要设置body上的内容,可以这样:
  1. box.setSprite(sprite,true); //第一个参数为sprite对象,第二个为是否根据刚体形状自动裁剪内容
复制代码
这样一来,如果把LBoxBody对象加到一个另一个LSprite上,坐标就会根据父LSprite更改。当然,这么做了以后,debug模式下就不能用box2d原始方法了,而是根据刚体形状,使用lufylegend画一个。

四,鼠标事件
目前的事件是:父LSprite被点击触发事件,子LSprite不触发事件。而我觉得应该是子LSprite触发事件的同时也触发父LSprite事件。但子LSprite其中一个触发事件,其他子LSprite不触发(因为被遮挡住了)。换言之,给父LSprite加事件,凡是子LSprite被点击,都触发到父LSprite事件,但子LSprite的事件是只能触发一个的。
另外,话说addEventListener加n个事件却只能触发一个,这样不科学吧……

五,拓展碰撞检测
这个之前谈过很多次了,就不再啰嗦了。



回复

使用道具 举报

37

主题

8

好友

9310

积分

诸侯王

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

沙发
发表于 2014-4-5 22:53:04 |只看该作者
一,代码规范化
目前lufylegend中的代码有的地方需要规范一点。比如说一些不提供使用的成员函数或属性可以在函数或属性前加一个_ 。
这里我也早就想改了,2.0还得需要很长时间,所以可能会在1.8.9中或者1.8.10(如果发布这个版本的话)调整。

二,事件规范化
在LMedia,LLoader等类中,加事件的函数addEventListener本应该可以不用重新写的。直接用dispatchEvent()不更好?还有就是触发事件传的event参数,这个参数里的属性太多了,如果能统一一下不更好?


这个在2.0中应该会调整一下

三,更新Box2d
目前引擎的box2d封装感觉不太方便,我觉得一个LSprite应该是加到一个body上,而不是一个body加到LSprite上。所以,我希望的用法是这样的(LBoxBody是一个假设的类,用来创建矩形刚体):
var box = new LBoxBody(100,100,true);
addChild(box);
复制代码
要设置body上的内容,可以这样:
box.setSprite(sprite,true); //第一个参数为sprite对象,第二个为是否根据刚体形状自动裁剪内容
复制代码
这样一来,如果把LBoxBody对象加到一个另一个LSprite上,坐标就会根据父LSprite更改。当然,这么做了以后,debug模式下就不能用box2d原始方法了,而是根据刚体形状,使用lufylegend画一个。


之所以将刚体加到LSprite上是有原因的,因为box2d是外部引擎,对刚体进行扩展就不那么方便了,而相反LSprite我可以任意调整,很方便。

四,鼠标事件
目前的事件是:父LSprite被点击触发事件,子LSprite不触发事件。而我觉得应该是子LSprite触发事件的同时也触发父LSprite事件。但子LSprite其中一个触发事件,其他子LSprite不触发(因为被遮挡住了)。换言之,给父LSprite加事件,凡是子LSprite被点击,都触发到父LSprite事件,但子LSprite的事件是只能触发一个的。
另外,话说addEventListener加n个事件却只能触发一个,这样不科学吧……


触发多个事件的问题会在1.8.9中调整,其他的会在后面的版本中优化

五,拓展碰撞检测
这个之前谈过很多次了,就不再啰嗦了。


1.8.9会增加一个多边形碰撞检测,其他的几个碰撞的调整确实得等2.0以后了。

多谢建议


不回答与技术和引擎不相关的问题
回复

使用道具 举报

46

主题

3

好友

1866

积分

偏将军

Rank: 4

板凳
发表于 2014-4-6 20:12:58 |只看该作者
lufy 发表于 2014-4-5 22:53
这里我也早就想改了,2.0还得需要很长时间,所以可能会在1.8.9中或者1.8.10(如果发布这个版本的话)调整。 ...

box2dweb部分感觉确实要整改一下。比如说创建后的一个刚体,x、y坐标是指中心点,而非左上方那一点,和lufylegend中的有点不一样,往往使大家用着不习惯。而且加入到LSprite的对象,如果能设置自动根据刚体形状裁剪,那就更好了。
还有就是synchronous,计算坐标的只能计算到上一级LSprite。当然,lufy您以前也说过,一个物理游戏里的世界只有一个。但是出现多个LSprite的情况难免有发生。比如说组合刚体,按照我一惯的想法,可以把两个需要组合的刚体(也就是设置了body的两个LSprite)放入一个LSprite,然后可以把这个LSprite看作一个组合刚体,并加入一个底层的LSprite(相当于一个world),这时计算坐标明显出现问题。当然可以直接把要组合的两个LSprite加到底层的LSprite,但是相比之下,第一种方式更为明了直接。不知道lufy意下如何?
回复

使用道具 举报

37

主题

8

好友

9310

积分

诸侯王

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

地板
发表于 2014-4-7 23:28:00 |只看该作者
yorhomwang 发表于 2014-4-6 20:12
box2dweb部分感觉确实要整改一下。比如说创建后的一个刚体,x、y坐标是指中心点,而非左上方那一点,和lu ...

其实封装之后,使用起来肯定是简单了,但是难免会有些限制。
这些等有时间的时候,会进一步调整一下的
box2d的效率真不怎么样,我都想自己写个功能简单点儿的物理引擎了...
不回答与技术和引擎不相关的问题
回复

使用道具 举报

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

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

Archiver|lufy's legend

GMT+8, 2024-4-27 01:35 , Processed in 0.047250 second(s), 20 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

回顶部