移動(dòng)開發(fā)框架Monkey語法簡介
在前一篇文章中簡單介紹了一些我曾經(jīng)評(píng)估過的一些跨平臺(tái)開發(fā)框架,其中提到過Monkey,不過這個(gè)框架目前還太過簡陋,如果要用它來做一個(gè)商業(yè)的App還有太多的工作要做,所以目前階段不會(huì)再花太多精力在上面,但是之前評(píng)估的時(shí)候也仔細(xì)閱讀了它的教程,并跟著寫過幾個(gè)Sample,所以對(duì)它也還有一些知識(shí)的整理。

Monkey( http://www.monkeycoder.co.nz)是一個(gè)與Corona類似的框架,但是比Corona要稍好一些,如果單從開發(fā)者角度來看的話。
Monkey使用Bliz Basic語言開發(fā)應(yīng)用,然后編譯生成目標(biāo)平臺(tái)的Project,再將這個(gè)Project按照正常開發(fā)流程編譯生成App。這個(gè)流程與Corona基本相 似,不過編譯的過程是在本地進(jìn)行的,所以可以在目標(biāo)Project生成之后再進(jìn)行修改,這樣一些在特定平臺(tái)上的功能可以分別進(jìn)行添加和修改。
另外Monkey的授權(quán)費(fèi)比Corona要低得多,只需要一次付費(fèi),授權(quán)費(fèi)也只需要120美元。
Monkey的問題在于它還處在開發(fā)的初期階段,目前發(fā)布的版本只實(shí)現(xiàn)了最基礎(chǔ)的功能,對(duì)于游戲開發(fā)來說,你還需要自己添加物理支持,粒子系統(tǒng),如果你想要加入網(wǎng)絡(luò)功能的話也得自己去做。當(dāng)然社區(qū)里有熱心用戶公開了他們的一部分代碼。
先來看一個(gè)Monkey App的最基礎(chǔ)框架:
- Import mojo
- Class MyApp Extends App
- Method OnCreate()
- End
- Method OnUpdate()
- End
- Method OnRender()
- End
- End
- Function Main()
- New MyApp
- End
雖然作者反復(fù)強(qiáng)調(diào)你不需要是一個(gè)程序員,你不需要懂?dāng)?shù)學(xué),你不需要會(huì)寫代碼,甚至You don’t need any special skills。BUT,如果你不懂程序,上面這12行英文我還是很難跟你解釋清楚,SO,如果你懂了,就繼續(xù),Else,Return!J
開個(gè)玩笑。
Monkey語言還是比較簡單的,類Basic語法,寫起來就跟自然語言一樣,你甚至可以把上面的代碼當(dāng)作一段英文來讀。是的,Read It!
下面是一些語法知識(shí),如果你看懂了上面那12行代碼,下面的你也很好理解。
變量:
與其他語言類似的語法規(guī)范,字母數(shù)字與下劃線的組合,不能以數(shù)字打頭。
內(nèi)置變量類型有Int,F(xiàn)loat,String,分別代表什么你也懂的。
變量的聲明使用Local關(guān)鍵字,當(dāng)然有時(shí)候使用的是Field關(guān)鍵字。
數(shù)學(xué)運(yùn)算:
+、-、*、/是最基本的,^是指數(shù)去處,比如3 ^ 2 = 9
條件運(yùn)算:
- If … Then …
- If … Then … Else …
上面的條件語句必須寫在一條上,如果要換行,則是
- If …
- …
- Else
- …
- EndIf
邏輯運(yùn)算:
=、<、>、<>、<=、>=
大部分你應(yīng)該都見過,只需要注意一下,相等只有一個(gè)=,不等是<>,也許你在某種語言里也見過這樣用的。
循環(huán)語句:
Repeat … Forever是永遠(yuǎn)循環(huán)
一般會(huì)這樣用:
Repeat
If … Then Exit
Forever
還有
Repeat
…
Until …
以及
While …
…
Wend
這些分別代表什么意思你也懂的
函數(shù):
Function Name() … End
Function Name(param:String) … End
函數(shù)的默認(rèn)參數(shù):Function Name(ammo:Int = 10) … End
與其他語言類似,默認(rèn)參數(shù)也只能出現(xiàn)在參數(shù)列表的最后面
同樣的,函數(shù)也能有返回值。你知道什么是返回值。
類和對(duì)象:
還記得寫在最開始的那12行代碼嗎?那里就定義了一個(gè)類,然后創(chuàng)建了一個(gè)對(duì)象
注意類中定義的變量使用Field關(guān)鍵字,不是Local
在我嘗試著寫代碼時(shí)遇到過的兩個(gè)問題,這里再重點(diǎn)提出來一下,我曾在這上面花了點(diǎn)時(shí)間來查找原因:
全局函數(shù)用關(guān)鍵字Function,Class的函數(shù)叫Method。如果把Class的函數(shù)也用Function定義,Monkey并不會(huì)報(bào)錯(cuò),但這些Function都不會(huì)被回調(diào)。
函數(shù)中的變量聲明用Local,Class中的變量聲明用Field。
另外,如果函數(shù)沒有返回值,那么函數(shù)名后的冒號(hào)加返回值類型可以省略,就像我上面舉的例子那樣。