jabbany / CommentCoreLibrary

Javascript Live Comment (Danmaku) Engine Implementation. JS弹幕模块核心,提供从基本骨架到高级弹幕的支持。
http://jabbany.github.io/CommentCoreLibrary/demo
MIT License
1.9k stars 304 forks source link

有一个百思不得其解的问题想请教一下(弹幕不滚动) #107

Closed CoreDX9 closed 3 years ago

CoreDX9 commented 4 years ago

在使用CCL核心0.11.0时,使用入门文档的代码无法正常运行。弹幕不会滚动。通过调试发现manager.runline数组一直是空的。使用弹幕提供器读取弹幕也不行。 但是使用ABPlayerHTML5播放器就能顺利运行弹幕,我反复看了代码将近一周,一直没发现文档示例代码和播放器中调用弹幕的代码有什么巨大差异。这个问题已经困扰我一周了,希望您能指点迷津。 完整代码如下,项目中仅有3个文件:wwwroot/index.html; wwwroot/js/CommentCoreLibrary.min.js; wwwroot/css/style.min.css

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <title></title>
    <link href="/css/style.min.css" rel="stylesheet" />
</head>
<body>
    <div style="width: 800px; height: 450px; background-color: black;">
        <div class="abp" style="width: 800px; height: 400px;">
            <div class="container" id="dm" style="width: 800px; height: 400px;"></div>
        </div>
        <!--<video id="v" src="/videos/1.mp4" style="width: 800px; height: 450px;" controls></video>-->
    </div>
    <script src="/js/CommentCoreLibrary.min.js"></script>
    <script>
        var $ = function (e) {
            return document.getElementById(e);
        }

        //var v = $('v');
        var dm = $('dm')
        var cm = new CommentManager(dm);
        cm.init('css'); // 初始化

        // 载入弹幕列表
        var danmakuList = [
            {
                "mode": 1,
                "text": "Hello World",
                "stime": 0,
                "size": 25,
                "color": 0xffffff
            }
        ];
        cm.load(danmakuList);

        // 插入弹幕
        var someDanmakuAObj = {
            "mode": 1,
            "text": "Hello CommentCoreLibrary",
            "stime": 1000,
            "size": 30,
            "color": 0xff0000
        };
        cm.insert(someDanmakuAObj);

        // 启动播放弹幕(在未启动状态下弹幕不会移动)
        cm.start();
    </script>
</body>
</html>
CoreDX9 commented 4 years ago

找到原因了,原来是要自己调用cm.time()设定时间,一直以为cm.start()以后cm的时间会自己走,希望能在入门文档的示例代码中加入一段,提醒新人要自己调用cm.time()函数。

setInterval(
  function (){
    cm.time(cm.position += 50);
  }, 50);
wzjiscode commented 3 years ago

我的弹幕使用cm.insert()会出现数据丢包现象

jabbany commented 3 years ago

在文档里加了个工作模式概览示意图解决这个issue。