设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 5990|回复: 4
打印 上一主题 下一主题

[交流讨论] 准备写个API详细描述

[复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
48 小时
注册时间
2010-10-26
帖子
17
跳转到指定楼层
1
发表于 2016-1-16 11:53:38 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
因为官方教程的API描述太过模糊,所以想写个详细的API说明
说明由源代码和描述构成,为了降低门槛,所以会尽量的对其进行解释,想听听你们的建议

API详细说明

Utils对象
Utils.isOptionValid 方法
Utils.isOptionValid = function(name) {
    return location.search.slice(1).split('&').contains(name);
};
location存放的是你项目所在位置的URL,如file:///D:/RPGMV/Games/test/index.html?test,其中D:/RPGMV/Games/test/为该项目的文件夹,test为项目名
location.search会返回一个?x,其中x为你的项目名
location.search.slice(0)与location.search.slice(1)分别为?x与x
location.search.slice(1).split('&')会返回你的项目名
contains是对原生对象string与array的扩展,功能都是对输入的参数进行比较,如果大于等于,就返回true否则返回false

Utils.isNwjs 方法
Utils.isNwjs = function() {
    return typeof require === 'function' && typeof process === 'object';
};
如果require与process分别是函数和对象,那么就返回true,整个后台脚本均无这两个参数的声明

Utils.isMobileDevice 方法
Utils.isMobileDevice = function() {
    var r = /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i;
    return !!navigator.userAgent.match(r);
};
将r初始化为该正则表达式,这个正则表达式的意思是,不区分大小写,且匹配上面任意一项即为真
navigator.userAgent为字符串,内容为浏览器版本,navigator.userAgent.match(r)则意味着以正则表达式r的规则进行检索,如果不与上面的匹配,返回null
!!是将其强制转换为布尔值

Utils.isAndroidChrome 方法
Utils.isAndroidChrome = function() {
    var agent = navigator.userAgent;
    return !!(agent.match(/Android/) && agent.match(/Chrome/));
};
同时匹配Android与Chrome即为真,即检测浏览器是否为安卓版的 Chrome 浏览器


Utils.canReadGameFiles 方法
Utils.canReadGameFiles = function() {
    var scripts = document.getElementsByTagName('script');
    var lastScript = scripts[scripts.length - 1];
    var xhr = new XMLHttpRequest();
    try {
        xhr.open('GET', lastScript.src);
        xhr.overrideMimeType('text/javascript');
        xhr.send();
        return true;
    } catch (e) {
        return false;
    }
};
将所有脚本元素放入scripts变量中,然后将最末尾的脚本元素放入lastScript里,将ajax实例化
通过overrideMimeType指定接受的资源以什么方式解析,在这里就是按照js脚本解析(因为参数为'text/javascript'),如果没有异常,那么send()后返回true,否则返回false

Utils.rgbToCssColor 方法
Utils.rgbToCssColor = function(r, g, b) {
    r = Math.round(r);
    g = Math.round(g);
    b = Math.round(b);
    return 'rgb(' + r + ',' + g + ',' + b + ')';
};
Math.round()方法对输入的参数进行四舍五入,如3.6==4;3.1==3;
最后返回形如:rgb(0,0,255)的参数,该参数用于css的color属性

isMobileSafari 方法未在官方脚本内定义

Lv3.寻梦者

梦石
0
星屑
1232
在线时间
1017 小时
注册时间
2011-4-30
帖子
1516
2
发表于 2016-1-16 12:41:54 | 只看该作者
本帖最后由 汪汪 于 2016-1-16 12:43 编辑

希望楼主允许我在 小白机翻注释mv里使用楼主的解释。
【小白】机翻注释mv
https://rpg.blue/thread-385523-1-1.html
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
48 小时
注册时间
2010-10-26
帖子
17
3
 楼主| 发表于 2016-1-16 13:39:54 | 只看该作者
汪汪 发表于 2016-1-16 12:41
希望楼主允许我在 小白机翻注释mv里使用楼主的解释。
【小白】机翻注释mv
https://rpg.blue/thread-3855 ...

可以,同时也希望可以反馈一些建议

点评

功能都是对输入的参数进行比较,如果大于等于,..这里的大于等于说的不直观,应该说或许用 存在输入的这个参数 来比较直观  发表于 2016-1-18 07:58
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
48 小时
注册时间
2010-10-26
帖子
17
4
 楼主| 发表于 2016-1-20 01:36:16 | 只看该作者
汪汪 发表于 2016-1-16 12:41
希望楼主允许我在 小白机翻注释mv里使用楼主的解释。
【小白】机翻注释mv
https://rpg.blue/thread-3855 ...

大于等于那个应该是大于等于0,少打了个0
回复 支持 反对

使用道具 举报

Lv3.寻梦者 (版主)

…あたしは天使なんかじゃないわ

梦石
0
星屑
2208
在线时间
4033 小时
注册时间
2010-10-4
帖子
10779

开拓者贵宾

5
发表于 2016-1-20 07:40:56 | 只看该作者
本帖最后由 taroxd 于 2016-1-20 07:52 编辑

只需要解释一个方法是「做什么」的,不需要解释「是如何实现的」。看完之后觉得你的描述还不如官方自带的那些有用。
更详细的 API 文档可以在默认注释的基础上添加调用的例子,各个参数及返回值更具体的意义等等,而不是逐行解释实现的代码。

给你一个 Array.prototype.concat 的文档作为参考吧(随便选的一个方法,没有什么特殊意义)
https://developer.mozilla.org/en ... bjects/Array/concat



以下解释有误:

location.search.slice(1).split('&')会返回你的项目名
canReadGameFiles
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-5-5 13:00

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表