实战教程
本文档将给出一些详尽的示例教程。
如需了解创建应用、读写数据等基础操作,请参考文档 快速入门。
本教程以弹幕为例,讲解如何通过 Wilddog Sync 实现多端实时互动。百余行代码即可完全实现该功能,可见 Sync 的简单与强大。
示例的最终的展示效果如下,可以进入这里体验

1. 引入 SDK
Section titled “1. 引入 SDK”
|
2. 实现 “说点什么” 与 “发射” 功能
Section titled “2. 实现 “说点什么” 与 “发射” 功能”使用写入数据的 API push(),它用来在当前节点下生成随机子节点,以保证 key 的不重复和有序。
// 创建数据库引用。最好自己创建一个应用,把 danmu 即 `SyncAppID` 换成你自己的var config = { authDomain: "danmu.wilddog.com", syncURL: "https://danmu.wilddogio.com"};wilddog.initializeApp(config);var ref = wilddog.sync().ref();
// 获取输入框的数据var text = $(".s_txt").val();// 将数据写到云端 message 节点下,child 用来定位子节点ref.child('message').push(text);数据库中的数据结构就是这个样子的:

3. “清屏”功能
Section titled “3. “清屏”功能”清屏即删除数据,定位到节点下调用 remove() 即可。
ref.remove();4. 在窗口显示
Section titled “4. 在窗口显示”在窗口显示即读取数据,Wilddog 获取数据是先绑定监听事件,然后在回调函数中获取数据:
// 绑定 'child_added' 事件,当 message 节点下有子节点新增时,就会触发回调,回调的 `snapshot` 对象包含了新增的数据ref.child('message').on('child_added', function(snapshot) { var text = snapshot.val();});如果有人“清屏”了,通过 child_removed 获取事件:
ref.on('child_removed', function(snapshot) {
});用到的相关 Wilddog API 就这么多,接下来就是弹幕相关的特定实现了。
5. 画出页面轮廓
Section titled “5. 画出页面轮廓”只是牵涉到 Web 页面的基础知识,这里不再叙述,可直接到最下方查看源码。
6. 滚动及逐行显示
Section titled “6. 滚动及逐行显示”var arr = []; // 此数组用来存放所有的消息元素var topMin = $('.d_mask').offset().top; // 显示框距顶部距离var topMax = topMin + $('.d_mask').height(); // 显示框底部距顶部距离var _top = topMin; // 每个滚动消息距顶部距离
var moveObj = function(obj) { var _left = $('.d_mask').width() - obj.width(); _top = _top + 50; if (_top > (topMax - 50)) { _top = topMin; } obj.css({ left : _left, top : _top, color : getRandomColor() // 获取随机颜色,之后讲 }); var time = 20000 + 10000 * Math.random(); // animate() 方法执行 CSS 属性集的自定义动画。逐渐改变的,这样就可以创建动画效果。 obj.animate({ left : "-" + _left + "px" // 让消息距左距离逐渐减小,产生右向左滚动动画。 }, time, function() { obj.remove(); });}7. 每 3s 随机选取一条消息播放
Section titled “7. 每 3s 随机选取一条消息播放”var getAndRun = function() { if (arr.length > 0) { var n = Math.floor(Math.random() * arr.length + 1) - 1; var textObj = $("<div>" + arr[n] + "</div>"); $(".d_show").append(textObj); moveObj(textObj); }
setTimeout(getAndRun, 3000);}8. 生成随机颜色
Section titled “8. 生成随机颜色”var getRandomColor = function() { return '#' + (function(h) { return new Array(7 - h.length).join("0") + h })((Math.random() * 0x1000000 << 0).toString(16))}获取示例源码
Section titled “获取示例源码”点此获取完整的示例源码