在前一篇文章中简单介绍了一些我曾经评估过的一些跨平台开发框架,其中提到过Monkey,不过这个框架目前还太过简陋,如果要用它来做一个商业的App还有太多的工作要做,所以目前阶段不会再花太多精力在上面,但是之前评估的时候也仔细阅读了它的教程,并跟着写过几个Sample,所以对它也还有一些知识的整理。
Monkey( http://www.monkeycoder.co.nz)是一个与Corona类似的框架,但是比Corona要稍好一些,如果单从开发者角度来看的话。
Monkey使用Bliz Basic语言开发应用,然后编译生成目标平台的Project,再将这个Project按照正常开发流程编译生成App。这个流程与Corona基本相 似,不过编译的过程是在本地进行的,所以可以在目标Project生成之后再进行修改,这样一些在特定平台上的功能可以分别进行添加和修改。
另外Monkey的授权费比Corona要低得多,只需要一次付费,授权费也只需要120美元。
Monkey的问题在于它还处在开发的初期阶段,目前发布的版本只实现了最基础的功能,对于游戏开发来说,你还需要自己添加物理支持,粒子系统,如果你想要加入网络功能的话也得自己去做。当然社区里有热心用户公开了他们的一部分代码。
先来看一个Monkey App的最基础框架:
- Import mojo
- Class MyApp Extends App
- Method OnCreate()
- End
- Method OnUpdate()
- End
- Method OnRender()
- End
- End
- Function Main()
- New MyApp
- End
虽然作者反复强调你不需要是一个程序员,你不需要懂数学,你不需要会写代码,甚至You don’t need any special skills。BUT,如果你不懂程序,上面这12行英文我还是很难跟你解释清楚,SO,如果你懂了,就继续,Else,Return!J
开个玩笑。
Monkey语言还是比较简单的,类Basic语法,写起来就跟自然语言一样,你甚至可以把上面的代码当作一段英文来读。是的,Read It!
下面是一些语法知识,如果你看懂了上面那12行代码,下面的你也很好理解。
变量:
与其他语言类似的语法规范,字母数字与下划线的组合,不能以数字打头。
内置变量类型有Int,Float,String,分别代表什么你也懂的。
变量的声明使用Local关键字,当然有时候使用的是Field关键字。
数学运算:
+、-、*、/是最基本的,^是指数去处,比如3 ^ 2 = 9
条件运算:
- If … Then …
- If … Then … Else …
上面的条件语句必须写在一条上,如果要换行,则是
- If …
- …
- Else
- …
- EndIf
逻辑运算:
=、<、>、<>、<=、>=
大部分你应该都见过,只需要注意一下,相等只有一个=,不等是<>,也许你在某种语言里也见过这样用的。
循环语句:
Repeat … Forever是永远循环
一般会这样用:
Repeat
If … Then Exit
Forever
还有
Repeat
…
Until …
以及
While …
…
Wend
这些分别代表什么意思你也懂的
函数:
Function Name() … End
Function Name(param:String) … End
函数的默认参数:Function Name(ammo:Int = 10) … End
与其他语言类似,默认参数也只能出现在参数列表的最后面
同样的,函数也能有返回值。你知道什么是返回值。
类和对象:
还记得写在最开始的那12行代码吗?那里就定义了一个类,然后创建了一个对象
注意类中定义的变量使用Field关键字,不是Local
在我尝试着写代码时遇到过的两个问题,这里再重点提出来一下,我曾在这上面花了点时间来查找原因:
全局函数用关键字Function,Class的函数叫Method。如果把Class的函数也用Function定义,Monkey并不会报错,但这些Function都不会被回调。
函数中的变量声明用Local,Class中的变量声明用Field。
另外,如果函数没有返回值,那么函数名后的冒号加返回值类型可以省略,就像我上面举的例子那样。