lufy's legend

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
楼主: ningbnii

关于动画加快的问题

[复制链接]

36

主题

7

好友

8910

积分

诸侯王

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

发表于 2019-12-5 09:16:55 |显示全部楼层
ningbnii 发表于 2019-12-5 09:13
嗯,是这样的,每个页面里面都有一个canvas,我就是想测试一下是否可行,因为我感觉css定位比canvas要方 ...

因为这样会导致多次调用引擎的初始化函数LInit,所以才会导致上述的问题的,
如果可以考虑iframe的话,倒是可以解决这个问题
不回答与技术和引擎不相关的问题
回复

使用道具 举报

6

主题

1

好友

198

积分

士兵

Rank: 1

发表于 2019-12-5 09:21:23 |显示全部楼层
lufy 发表于 2019-12-5 09:16
因为这样会导致多次调用引擎的初始化函数LInit,所以才会导致上述的问题的,
如果可以考虑iframe的话,倒 ...

哦,是否有方法可以主动清除初始化的状态呢,让页面再次进入的时候重新初始化,因为这个ionic可以监听到页面离开事件,我想在这个事件中做一些处理
回复

使用道具 举报

36

主题

7

好友

8910

积分

诸侯王

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

发表于 2019-12-5 09:36:37 |显示全部楼层
ningbnii 发表于 2019-12-5 09:21
哦,是否有方法可以主动清除初始化的状态呢,让页面再次进入的时候重新初始化,因为这个ionic可以监听到 ...

其实虽然你使用了多个canvas,但是页面里也只是一个canvas有效而已,
所以,你可以只用一个canvas,然后通过改变这个canvas本身的css来解决问题不是吗?

或者,通过修改引擎的初始化函数
https://github.com/lufylegend/lu ... nction.js#L489-L511
这个是引擎的源码,你可以重写一个LInit来覆盖原来的代码,
思路是在_requestAF(loop, s);的地方加个赋值
var requestId = _requestAF(loop, s);
然后通过window.cancelAnimationFrame(requestId);来取消
理论上是可行的,我不确定是否会引起其他问题,如果有的话,可以告诉我,我再看看其他地方是否有需要改动的地方
不回答与技术和引擎不相关的问题
回复

使用道具 举报

6

主题

1

好友

198

积分

士兵

Rank: 1

发表于 2019-12-5 09:47:32 |显示全部楼层
lufy 发表于 2019-12-5 09:36
其实虽然你使用了多个canvas,但是页面里也只是一个canvas有效而已,
所以,你可以只用一个canvas,然后 ...

好的,感谢lufy,我试一下
回复

使用道具 举报

6

主题

1

好友

198

积分

士兵

Rank: 1

发表于 2019-12-5 16:53:51 |显示全部楼层
我测试发现使用requestAnimationFrame会出现动画加速的问题,使用数值没有问题
回复

使用道具 举报

36

主题

7

好友

8910

积分

诸侯王

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

发表于 2019-12-6 08:05:21 |显示全部楼层
ningbnii 发表于 2019-12-5 16:53
我测试发现使用requestAnimationFrame会出现动画加速的问题,使用数值没有问题

动画加速具体在什么情况下发生?
不回答与技术和引擎不相关的问题
回复

使用道具 举报

6

主题

1

好友

198

积分

士兵

Rank: 1

发表于 2019-12-6 10:05:40 |显示全部楼层
本帖最后由 ningbnii 于 2019-12-6 10:09 编辑
lufy 发表于 2019-12-6 08:05
动画加速具体在什么情况下发生?

当两个页面的LInit的speed值不一致的时候,比如A为500,B为50,打开A动画慢,打开B动画快,这时候再打开A,会发现动画和B一样快了,感觉是取了最大值
如果所有页面speed都一样,就不会出现动画变快的现象
回复

使用道具 举报

36

主题

7

好友

8910

积分

诸侯王

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

发表于 2019-12-6 23:51:00 |显示全部楼层
ningbnii 发表于 2019-12-6 10:05
当两个页面的LInit的speed值不一致的时候,比如A为500,B为50,打开A动画慢,打开B动画快,这时候再打开A ...

等我抽空自己试一下看看
不回答与技术和引擎不相关的问题
回复

使用道具 举报

36

主题

7

好友

8910

积分

诸侯王

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

发表于 2019-12-8 10:24:06 |显示全部楼层
我在www/index.html中把LInit重写了一下,你试试看还会不会出现上述你说的问题

index.html

3.88 KB, 下载次数: 193

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

使用道具 举报

6

主题

1

好友

198

积分

士兵

Rank: 1

发表于 2019-12-8 18:31:51 |显示全部楼层
本帖最后由 ningbnii 于 2019-12-8 18:41 编辑
lufy 发表于 2019-12-8 10:24
我在www/index.html中把LInit重写了一下,你试试看还会不会出现上述你说的问题
...


确实没问题了,我复制了两个动画页面,一个用的requestAnimationFrame,一个用的100,每个页面的speed不再受其他页面的影响啦,
请问:LGlobal.childList 这个是干嘛用的呢
回复

使用道具 举报

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

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

Archiver|lufy's legend

GMT+8, 2020-8-12 19:54 , Processed in 0.069841 second(s), 22 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

回顶部