本教程持续更新,但是缓更,到暑假一口气我会把它更完的
此教程作为对于想扩展自己的玩法但又不会的人
有耐心学习的人,内容较多,请耐心学习
本教程适用人群:有Java和Android基础的人
也请注意,本教程不是给无Java基础的准备的
小白也可以学,但恐怕
后面的高级知识是听不懂的
ModPE简介
ModPE作为当下PE最流行的扩展脚本 使用的是JavaScript这个语言的格式 JavaScript是一个弱类型语言 所有变量全部使用var定义 不像Java里面一样 String[] a=["a","b","c"]; int b = 1; 而这里ModPE全部使用var var a=["a","b","c"]; var b = 1; 其实要不要;都可以,ModPE格式要求不是很严格 但这里注意啦,我们在ModPE里面定义的这个b,会被默认为 类型是String,也就是你print(b+1),输出的将不会是2,而是11。 ModPE为何如此受人追捧呢? 它里面预置了Javs的函数,还有一些全局函数,包括Android的函数 都可以在里面进行调用,而且语法格式要求不言。 |
配套教学资源
1.ModPE最新函数表 2.生物ID 3.生物模型ID |
目录
1.ModPE及其基本语法 2.ModPE全局函数 3.ModPE关键字详解 4.认识钩子函数 5.使用钩子函数激活你的函数 6.自定义函数 7.传入变量 8.if语句 9.switch语句 10.while循环 11.for循环 12.循环综合利用讲解 13.捕获异常 14.处理异常 |
Part.1——ModPE及其基本语法
函数需以关键字 function开头来定义
如你所见,和Java一样 function定义函数以后 ()内里面的参数叫传入变量,可改名字 数量也是可以改的,需要几个参数就传入几个参数,启动器会在调用时自动传入相应参数 ModPE的函数体也是用的{}来进行包裹 注意,这里和Java不一样的是 不需要定义返回类型,也不需要填void 直接这样就可以了
如果var定义的变量不在任何函数体内 我们称之为全局函数 它会在ModPE加载时,进行一次变量初始化赋值,如果你不对其进行修改 它将永远是初始值 |
Part.2ModPE全局函数
这些函数不属于ModPE但是是预置的函数 有如下的几个预置函数 这里只介绍几个我们用得着的 eval("") 把参数内的字符串计算出javascript字符 并把它计算的结果执行 通常就是加密用的这个东西 getClass() 返回一个JavaObject对象 isFinite() 检查某个值的大小是否是无限大 比如一个数除于0就会产生一个无限大的数 是返回true 不是返回false isNaN() 检查字符串是否为数字 是返回true 不是返回false Number() 将对象值转化为数字 String() 将对象值转化为字符串 parseInt() 将对象转化为int 为什么有这个玩意呢 我科普一下 javascipt是弱类型语言 var定义的包括1,2,3这样会被默认作为字符串 比如说
就会输出12 而不是3 转换后才会输出3 |
Part.3JavaScipt关键字详解
如你所看到的一样 如果你学过Java会知道 Java内一般使用枚举或者 public final static a 作为一个常量 但在JavaScript里面不是这样的 我们通常使用const关键字来申明一个常量
var
function 来定义一个函数
值得注意的是,这相当于java里面的方法 ()内的是参数,因为前面我也说过js是弱类型语言 不强制要求像java那样
在modpe里面,启动器会根据你的函数名字来在相应事件触发的时候调用该函数 所以你如果想监听一个事件必须要和函数表内的钩子函数名字一样 至于形参,你不必全部填完 只填你需要的就可以了 如
|
Part.4-认识钩子函数
什么是钩子函数呢 ModPE为对应的原版事件提供了多种不同的钩子函数 对应钩子函数会在对应事件发生的时候由启动器调用 并传入参数
只填你需要的就行 相当于Bukkit插件内的事件监听 |
Part.5-使用钩子函数激活你的函数
Part.6-自定义函数
自定义函数差不多相当于Java里面的方法 你可以在函数体里面写入一些要执行的东西 等待其他钩子函数或者其他函数来调用 注意:ModPE内的函数,不需要写返回类型 你可以任意返回boolean或者int或者String什么的 当然也可以不返回 例如
|
Part.7.传入变量
例如
|
Part.8-If语句
If语句基本语法
else if和else的语法
|
Part.9-Switch语句
switch是一个条件分歧语句,用于对一个值的多种情况进行判断
这里不能用!!!! Java的default是这样用的
|
Part.10-While循环
while循环格式如下(和Java内格式基本是相同的不过还是讲一下吧)
while从字面理解的意思就是当也就是
所以我们当然也可以这样玩 |
11.for循环
这里的for循环同样和Java内的for循环一样 不过可没有foreach语法糖哦~ 因此我们这样来
也就是 定义一个局部变量i让他初始化等于0 然后如果这个i小于10 那么i这个变量每循环一次自加1 直到不符合循环条件为止 |
12.循环综合利用讲解
循环的作用是干什么,当然是为了方便运算和实现各种算法等等 比如我们要在玩家的X轴+方向放置十个方块 那么不用循环我们必须这样写
累死啦... (这里我说明一下,就是你一次放置再多方块,如果方块位置不在你游戏已经加载的区块内,无效.) 所以我们用循环来
这个setblock函数要求传入一个entity的对象 也就是 恩...你要在哪个生物放置方块 这里我们选用玩家作为对象 所以我们
那么为什么呢,y需要减去2 因为玩家的y位置是从头开始计算 我们必须往下数两格才是脚底下 所以就这样要减去2 |
13.捕获异常
那么什么叫捕获异常 是一种异常处理机制 当程序遇到了未知的异常的时候 他可不会自己处理 所以这时候你不捕获它 就会导致程序异常终止 所以我们必须将其捕获自行处理 (这里要提到的是,和Java一样,I/O操作必须捕获异常,不管你是不是会出现,否则通过不了启动器检查) 那么我们这里用到的是try-catch语句 格式如下
|
14.处理异常
下面示范一下如何捕获异常后处理它 例如以下代码
写入进去test这个字符串 那么不知道它这个文件存在不存在 所以我们将其捕获 当文件不存在的时候 抓住异常,并创建这个文件,将异常栈打印出来 这样就可以了 |
回复:
闪烁的萤石 发表于 2016-8-25 16:37
楼主,从FOR循环语句开始的折叠页内容都是空白啊
for(变量;条件;步进值){
你要循环的代码
}
2016-08-27 08:54:00