Kongregate场景共享API(仅适用于AS3)Kongregate的场景共享API使开发人员比以往更容易加入特点如自定义场景分享到你的游戏中。新的API使你的玩家们能够:
我们鼓励你们都在Hexiom: Connect并在这里获取完整的文档 安装共享内容API可以通过Kongregate API的sharedContent资源得到。目前,共享内容API只在AS3可用。当使用该服务时,你需要在调用连接到Kongregate API前注册你的事件监听器,如下所示: // 在连接前注册共享内容加载监听器 kongregate.sharedContent.addLoadListener('Level', onLoadLevel); // 连接 kongregate.services.connect(); 每个游戏可储存多达10个不同类型的共享内容,所以你用这个API的可以做的事几乎是无止境的。 API函数添加加载事件监听器您可以使用addLoadListener函数来注册一个事件监听器,当指定类型的内容是由用户加载时将被开启。 addLoadListener(contentType:String, callback:Function):void
回调函数必须接受一个单一的
例如: 加载共享内容"Contraption"作为内容类型: kongregate.sharedContent.addLoadListener("Contraption", onContraptionLoad); function onContraptionLoad(params:Object) { var id:Number = params.id; var name:String = params.name; var permalink:String = params.permalink; var content:String = params.content; var label:String = params.label; trace("Contraption " + id + " [" + label + "] loaded: " + content); } 浏览共享内容
通过 browse(contentType:String, sortOrder:String=null, label:String=null):void
示例: 显示一个Contraptions共享内容的浏览器,只显示那些你朋友制作的带有“3级解决方案”标签的内容 kongregate.sharedContent.browse("Contraption", kongregate.sharedContent.BY_FRIENDS, "Level 3 Solution"); 保存内容您可以使用保存函数提交共享内容到Kongregate后端。 save(type:String,content:String,callback:Function,thumb:DisplayObject=null,label:String=null):void
例如: 保存一些"x1y3z10"的共享内容,作为一个"Contraption", 在 kongregate.sharedContent.save('Contraption', 'x1y3z10', onSaved, myContraptionEditor, 'Level 3 Solution'); function onSaved(params:Object) { if (params.success) { //共享内容被成功保存 trace("Content saved, id:" + params.id + ", name:" + params.name); } else { // 共享内容没被保存 // 最有可能的原因的是用户忽略了保存对话框 } } 在网站上而非Kongregate上保存共享内容除了Kongregate,你还可以提交您游戏版本中创建的共享内容到网站上。API只是由一组网址参数组成,与你传送的GET请求一起发送到Kongregate上的你游戏的网址。 相关的参数查询有类型,内容和可选标签。请注意,由于是通过一个网址浏览器限制得以通过,因此这方法就内容的尺寸尤为限制, - 编码后它们需要限制在2000个字符以下以确保它能工作。 此外,一个尾随的&z必须附加到网址,以表示内容没有被截断。 例子这个片段是一个简单的函数,它接受有关参数,并转发到Kongregate: var saveRemote:Function=function(kongregateGameUrl:String,type:String,content:String,label:String=null):void{ var toQueryString:Function = function(params:Object):String { var q:Array = []; for (var p:String in params) q.push(encodeURIComponent(p) + '=' + encodeURIComponent(params[p])); return q.join('&'); } var loc:String = kongregateGameUrl + "?" + toQueryString({ 'type': contentType, 'content': content, 'label': label }) + '&z'; // 这各&z印记表明,没有内容被一个差劲的浏览器从网址截断了 // 并且当一个用户访问游戏时需要保存你的场景 // 确保你的网址通过浏览器发送时不会太长 if (loc.length < 2000) navigateToURL(new URLRequest(loc), '_blank'); // 还有。。。 // 你将需要提供一些错误处理方式以防内容太大 } |