lufy's legend

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

核心改进文件1

[复制链接]

14

主题

0

好友

132

积分

士兵

Rank: 1

跳转到指定楼层
#
发表于 2013-11-29 12:51:04 |只看该作者 |正序浏览
(function(){
    /**
     * 全局开始时间点
     *
     * @static
     * @property _globalStartTimer
     * @type {Number}
     * @private
     * @module buildingBlock
     */
    _globalStartTimer = (new Date()).getTime();

    /**
     * (全局函数)返回从进入界面开始到现在的时间间隔。
     * @static
     * @class getTimer
     * @return {int}
     * @module buildingBlock
     */
    getTimer = function(){
        _currentTimer = (new Date()).getTime();
        return parseInt(_globalStartTimer - _currentTimer);
    }
})();

/**
* 执行继承。
*          旧代码会导致一个错误,就是子类在继承并执行基类构造函数时,基类构造函数中的 this,
*          为当前子类的对象引用,而此时子类还并未具备父类的方法,所以,基类中用 this 调用其方法是显示提示:
*          "ReferenceError: (methodName) is not defined"。
* @static
* @class base
* @module buildingBlock
* @param {Object} thisObj
* @param {Object} baseClass
* @param {Array} argArr
*/
function base(thisObj, baseClass, argArr) {
    var p=null,o=thisObj.constructor.prototype,h={};
    for(p in o)h[p]=1;

    for(p in baseClass.prototype){
        if(!h[p])o[p] = baseClass.prototype[p];
        o[p][SUPER] = baseClass.prototype;
    }
    if(Object.prototype.callParent){
        delete Object.prototype.callParent;
    }
/*    try{*/
        baseClass.apply(thisObj,argArr);
/*    }catch(err){
        trace(this + ".base(...) argArr = " + argArr + "--> 错误名称:" + err.name + ", \n错误信息:" + err.message );
    }*/
}
回复

使用道具 举报

37

主题

8

好友

9313

积分

诸侯王

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

22#
发表于 2013-12-1 01:38:24 |只看该作者
陈前帆 发表于 2013-11-30 13:39
我是计算机多媒体专业的,不是软件工程专业的,编程靠的全是自学,没人教,没人提醒,有些别人说的东西也是 ...

还有个别回复,我直接在原帖子里用点评功能回复了
非常感谢朋友能帮我一起完善这个引擎
不回答与技术和引擎不相关的问题
回复

使用道具 举报

37

主题

8

好友

9313

积分

诸侯王

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

21#
发表于 2013-12-1 01:27:29 |只看该作者
陈前帆 发表于 2013-11-29 13:00
此核心修改由原作者的代码进行一些修改。
1、添加显示对象缩放功能
2、缩放后鼠标感应位置的问题。
此核心修改由原作者的代码进行一些修改。
1、添加显示对象缩放功能
显示对象原本就是可以缩放的啊

2、缩放后鼠标感应位置的问题。
3、添加遮罩后鼠标感应范围在遮罩范围内。
2和3这两个bug,在1.8.3版中已经修正过了


4、添加 this 代理(Delegate),使得事件侦听器内this为代理所指定的 this 此模拟 actionScript 2.0 代码
这个我要考虑一下,因为1.8.5版中鼠标事件部分,要做一个小的调整,1.8.6版我看看是否有必要添加进去


5、添加上层遮挡下层鼠标事件。
这个在1.8.2版中已经修正过了

6、增加事件实际冒泡,即事件在一个层的最底层接收并处理事件后,事件继续往上层冒泡,但是,不再向同层次对象传递。
你是在旧的版本的基础上修改的,这个我自己来改吧,不过或许也会拖到1.8.6版

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

使用道具 举报

37

主题

8

好友

9313

积分

诸侯王

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

20#
发表于 2013-12-1 01:16:06 |只看该作者
陈前帆 发表于 2013-11-29 12:53
/**
* 此类用于使用 lufylegend 绘图应用程序编程接口 (API) 创建简单形状
* @class LShape

LShape
引擎中没有引入LShape的原因是感觉没什么必要,而且LShape不应该继承自LSprite,鉴于一些人的习惯问题,我会在1.8.5中另写一个LShape类,多谢了。

LSprite.prototype.setChildIndex
如果不在列表中的话,就不需要进行检索了,所以原函数中有child.parent.objectIndex != s.objectIndex的判断。
另外indexOf的性能问题,除了chrome,其他浏览器的indexOf要比直接循环慢至少10倍以上,你可以自己测试一下,所以尽量不要使用indexOf。

LSprite.prototype.inMaskDomain
引擎中ismonseon没有考虑遮罩的问题,这里确实是bug。不过,如果直接这么写的话,if(s.mask){return s.mask.ismouseon(e, cd); },即使LSprite是空的,只要有mask就开始感应了。不过还是多谢朋友提醒了,我试着自己改一下吧。

LTextField.prototype.mouseEvent
你看一下引擎中的这个函数就知道了,里面不光是鼠标的判定的
不回答与技术和引擎不相关的问题
回复

使用道具 举报

37

主题

8

好友

9313

积分

诸侯王

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

19#
发表于 2013-12-1 01:15:35 |只看该作者
陈前帆 发表于 2013-11-29 12:53
/**
* [重写函数]
* @method drawRect

缩放部分的功能已经在1.8.3版中更新过了
不回答与技术和引擎不相关的问题
回复

使用道具 举报

37

主题

8

好友

9313

积分

诸侯王

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

18#
发表于 2013-12-1 01:13:43 |只看该作者
陈前帆 发表于 2013-11-29 12:52
LDisplayObject.prototype.getRootBounds = function (){
    var s = this;
    var sx = s.x,

drawArc和drawRect的问题,引擎目前的函数可以绘制透明的圆和矩形啊
绘制的时候线宽设置为0即可
不回答与技术和引擎不相关的问题
回复

使用道具 举报

37

主题

8

好友

9313

积分

诸侯王

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

17#
发表于 2013-12-1 01:11:39 |只看该作者
陈前帆 发表于 2013-11-29 12:51
/**
* 此类在 core.js 中进行扩展,扩展自 lufylegend-1.7.7 : LPoint 类
* @class LPoint

LPoint的扩展,前两天还有朋友要求我扩展这个类呢
LPoint.interpolate计算过于复杂了,并且有逻辑错误
  1. var pt1 = new LPoint(2,5);
  2. var pt2 = new LPoint(10,15);
  3. LPoint.interpolate(pt1,pt2,0);返回(0,0)
  4. LPoint.interpolate(pt1,pt2,1);返回(8,10)
复制代码
正确写法为
  1. LPoint.interpolate = function(p1,p2,f){
  2.         return new LPoint(p1.x+(p2.x-p1.x)*(1-f),p1.y+(p2.y-p1.y)*(1-f));
  3. };
复制代码
另外,LPoint.distance中,求平方的时候,不要用Math.pow,效率很低
不回答与技术和引擎不相关的问题
回复

使用道具 举报

37

主题

8

好友

9313

积分

诸侯王

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

16#
发表于 2013-12-1 01:11:03 |只看该作者
返回开始到当前的时间的问题,我觉得还是从游戏初始化开始计算比较合理
继承问题,已经在1.8.4中修改过了
不回答与技术和引擎不相关的问题
回复

使用道具 举报

37

主题

8

好友

9313

积分

诸侯王

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

15#
发表于 2013-11-30 15:35:25 |只看该作者
陈前帆 发表于 2013-11-30 13:39
我是计算机多媒体专业的,不是软件工程专业的,编程靠的全是自学,没人教,没人提醒,有些别人说的东西也是 ...

这一点咱们倒是一样,我也不是学软件开发的,
这里有我啰哩啰嗦的简介http://lufylegend.com/book/view/1

你的修改应该是基于1.8.2之前吧?有些功能已经在1.8.3和1.8.4中完善了。
虽然我还没抽出时间细看,不过确实是有不少地方是用的上的,
过两天会发布1.8.5版,我会结合现在的版本,把我认为可用的部分加进去,
十分感谢。
不回答与技术和引擎不相关的问题
回复

使用道具 举报

14

主题

0

好友

132

积分

士兵

Rank: 1

14#
发表于 2013-11-30 13:39:14 |只看该作者
我是计算机多媒体专业的,不是软件工程专业的,编程靠的全是自学,没人教,没人提醒,有些别人说的东西也是别人说了之后才知道。则个我会慢慢研究怎么用的多谢你的提醒。
回复

使用道具 举报

37

主题

8

好友

9313

积分

诸侯王

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

13#
发表于 2013-11-29 18:17:18 |只看该作者
陈前帆 发表于 2013-11-29 13:31
如若你能提供界面缩放方式的绘制,同时不影响性能,那简直就完美了~

现在在公司,只是大致看了一下,可用的地方很多,等晚上回去我整理一下,正好也准备要更新1.8.5了
朋友不用github吗?以后有好的建议,可以通过github提交给我,看起来更方便一些
不回答与技术和引擎不相关的问题
回复

使用道具 举报

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

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

Archiver|lufy's legend

GMT+8, 2024-5-13 19:03 , Processed in 0.052905 second(s), 21 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

回顶部