lufy's legend

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

lufylegend-1.7.7BUG

[复制链接]

14

主题

0

好友

132

积分

士兵

Rank: 1

跳转到指定楼层
楼主
发表于 2013-10-14 17:23:46 |只看该作者 |倒序浏览
function base(d, b, a){
b.apply(d, a);
    var p = null,
        o;
    for (p in b.prototype) {
        o = d.constructor.prototype;
        if (!o[p]) o[p] = b.prototype[p];
        o[p][SUPER] = b.prototype;
    }
}

这种实现方法会导致基类构造函数中对基类本身声明的函数调用时报错:

TypeError: this.setItemRendererBuilder is not a function),

因为传递到基类构造函数中的 this 对象,一开始只具备了子类本身声明的方法与属性,而未具备基类声明的方法。

改成

function base(d, b, a){
    var p = null,
        o;
    for (p in b.prototype) {
        o = d.constructor.prototype;
        if (!o[p]) o[p] = b.prototype[p];
        o[p][SUPER] = b.prototype;
    }
    b.apply(d, a);

}

就不会出现错误

还有事件的传导方式,如LSprite 的方法 mouseEvent 其实还有一种更好的方式来实现冒泡,并且实现 actionScript 3.0 顶层 LSprite 对象屏蔽底层鼠标感应的方法。
回复

使用道具 举报

14

主题

0

好友

132

积分

士兵

Rank: 1

沙发
发表于 2013-10-14 17:27:16 |只看该作者
还有LPoint类也可以提供 跟ActionScript 3.0同样的方法,方便用户计算使用,想我这边用这套组件这些东西还得自己写,比较麻烦。
回复

使用道具 举报

37

主题

8

好友

9312

积分

诸侯王

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

板凳
发表于 2013-10-15 10:16:59 |只看该作者
基类构造函数中对基类本身声明

不知道我理解是不是有误,是说在构造函数中实例化本身吗?
类还没构造完呢,怎么会去实例化本身呢?有这种需求吗?
不回答与技术和引擎不相关的问题
回复

使用道具 举报

37

主题

8

好友

9312

积分

诸侯王

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

地板
发表于 2013-10-15 10:17:59 |只看该作者
陈前帆 发表于 2013-10-14 17:27
还有LPoint类也可以提供 跟ActionScript 3.0同样的方法,方便用户计算使用,想我这边用这套组件这些东西还 ...

这个只是临时需要先加进去了,以后会好好完善一下的
不回答与技术和引擎不相关的问题
回复

使用道具 举报

14

主题

0

好友

132

积分

士兵

Rank: 1

5#
发表于 2013-10-15 10:40:22 |只看该作者
lufy 发表于 2013-10-15 10:16
不知道我理解是不是有误,是说在构造函数中实例化本身吗?
类还没构造完呢,怎么会去实例化本身呢?有这种 ...

我根据你写的这套组件,编写了一套类似于Flash&Flex的组件.
比如一个Container组件中用:
p={
    //声明一个设置布局函数
    setLayout : function (){
        ...;
    }
};

然后在 Container() 构造函数中调用 this.setLayout(layout)初始化Container组件的布局方式。然后创建一个ListBase类继承Container类,运行 new ListBase() 构造函数时, 就会抛出 TypeError 提示 this.setLayout() is undefined.

检查了你的代码后发现,基类 Container 中的 this 事实上是 ListBase this 的引用而函数 base(...) 中,其先将 this 传递给 Container() 构造函数执行,而后才将基类中的方法加到 ListBase 类中,也就是说 this 在Container()构造函数中时,是没有 Container 的所有方法的。
回复

使用道具 举报

37

主题

8

好友

9312

积分

诸侯王

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

6#
发表于 2013-10-15 22:49:56 |只看该作者
陈前帆 发表于 2013-10-15 10:40
我根据你写的这套组件,编写了一套类似于Flash&Flex的组件.
比如一个Container组件中用:
p={

js中的this的用法有些特殊
引擎中的继承函数我一直都在用,demo已经有几十个了,感觉应该没什么问题的。
能否把你的代码完整的贴出来,我看一看问题出在哪里,如果是引擎的问题,我会尽快修复
不回答与技术和引擎不相关的问题
回复

使用道具 举报

7#
无效楼层,该帖已经被删除
8#
无效楼层,该帖已经被删除
9#
无效楼层,该帖已经被删除
10#
无效楼层,该帖已经被删除
您需要登录后才可以回帖 登录 | 立即注册

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

Archiver|lufy's legend

GMT+8, 2024-5-4 23:10 , Processed in 0.055119 second(s), 21 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

回顶部