国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

詳解在JAVA(J2ME)中使用Lua腳本引擎kahlua

移動開發 iOS
在JAVA(J2ME)中使用Lua腳本引擎kahlua是本文要介紹的內容,主要是來學習JAVS中如何來使用LUA,具體內容來看本文詳解。

JAVA(J2ME)中使用Lua腳本引擎kahlua是本文要介紹的內容,主要是來學習JAVS中如何來使用LUA,Lua有幸被暴雪選中,在魔獸中大量應用,從而獲得了極快的發展,Lua也因此成為游戲、軟件開發中腳本語言的首選。Lua是一種十分簡潔的腳本語言,不過寫起來并不是很簡單,當然過分的簡化使得程序本身有些混亂。具體的語言教程在網上有很多,這里就不再說了。

kahlua最初是為J2ME設計的,現在已經擴展到J2SE,項目地址是http://code.google.com/p/kahlua/,在這里可以下載到源代碼及編譯好的jar包。在實際應用中我發現J2ME中導入jar包很困難,弄了好幾天也沒有成功,只好將源代碼放在在工程的目錄里一同編譯。kahlua可以識別*.lua及*.lbc文件,*.lbc是編譯后的lua文件,項目中一般使用這種文件,因為不會泄露lua文件的內容??梢缘絟ttp://www.lua.org上下載一個lua的運行環境,安裝后會自動添加安裝路徑到系統變量,此時在cmd中運行luac程序就可以編譯腳本,命令是luac -o f.lbc d:\f.lua,詳情看幫助文檔。

我下的kahlua是kahlua-release-20090611.zip源代碼包,解壓后是一個Ant工程,將src目錄下的內容及resource中的stdlib.lua(lbc)文件復制到J2ME項目中src下。在編程之前首先說明一點,在程序中指定文件的路徑時要注意對應工程文件的位置。我的工程的src文件夾對應程序中的根目錄,比如說上的/src/stdlib.lua在程序中就是/stdlib.lua。

lua腳本語言中一個獨特的數據類型就是表,表其實就是java中的map、哈希表,比如說下面一個表:

  1. T1 = {} -- 定義一個空表  
  2. T1[1]=10 --定義表的內容  
  3. T1["John"]={Age=27Gender="Male"

而每一個腳本文件實際上就是一個大表,每一個變量、方法都是表的成員,因此腳本的變量默認都是全局的,而且也可以定以方法為變量,kahlua正是依據這個概念來的。

1、初始化:

  1. LuaState state=new LuaState(System.out);  
  2. UserdataArray.register(state);  
  3. OsLib.register(state);  
  4. LuaCompiler.register(state); 

se.krka.kahlua.vm.LuaState對象是kahlua引擎的核心,一切操作都由它來完成,在生成LuaState對象后再進行一些注冊。

2、獲取全局表:

  1. LuaTable table=state.getEnvironment();  
  2.  
  3. LuaTable有一系列函數添加、獲取腳本內容,最常用的有:  
  4. void rawset(Object key, Object value);//添加內容  
  5. Object rawget(Object key);//獲取內容 

3、加載腳本:

  1. InputStream is=this.getClass().getResourceAsStream(scriptName);  
  2. //scriptName為腳本文件的路徑  
  3. LuaClosure closure=LuaCompiler.loadis(is , "lua" , table);  
  4. //LoadCompiler為編譯器,loadis為加載輸入流的方法  
  5. //is為輸入流;"lua"為編譯器的名字,好像任意字符串都可以;table為全局表  
  6. //LuaClosure為腳本編譯后的語句。 

整個腳本編譯后相當于一個大的方法,并將其添加到全局表。

4、執行腳本:

  1. sate.call(closure, null);  
  2. LuaState的public Object call(Object fun, Object[] args) 

方法是用來執行全局表中的方法,前面說到,整個腳本編譯后是作為一個方法存入全局表的,因此也可以用這個方法執行腳本。

5、方法:

public Object call(Object fun, Object[] args)中fun為函數對象,args為參數

(1)在Java中調用Lua方法

  1. state.call( table.rawget("say") , new String[]{"Hello!"}); 

即從全局表中取出函數并執行。

(2)在Lua中調用Java方法

首先生成一個繼承自JavaFunction接口的類,然后添加到全局表中

JavaFunction只有一個public abstract int call(LuaCallFrame callFrame, int nArguments)方法,其中callFrame用于獲取輸入參數及指定返回值,nArguments獲取輸入參數數量。返回值為返回參數的個數,因為lua函數可以有多個返回值的。

  1. class JavaFunctionSay implements JavaFunction{  
  2. public int call(LuaCallFrame frame, int arg) {  
  3. String str=BaseLib.rawTostring(frame.get(0));//獲取輸入參數  
  4. say(str);//執行對應Java內容  
  5. frame.push("result");//返回參數  
  6. return 1;  
  7. }   

再用table.rawset("say", new JavaFunctionSay());添加到全局表,這樣就可以在對應Lua腳本中使用say方法了。

附注:

kahlua顯示中文有問題,應該是編碼不正確,修改LexState中String newstring( byte[] chars, int offset, int len )方法的第一行編碼為"GBK"后好像就可以了。
本人在windows中使用用luac生成的lbc時出錯..文件不支持中文,有中文就會報錯,而英文就能順利通過,想來可能和字符編碼有關系...想在lbc中使用中文,本人的方法是:

  1. File luascript = new File("E:\\getWeather.lua");//--其實什么后綴名無所謂的  
  2. File lbcscript=new File("C:\\Users\\信豐boy\\getWeather.lbc");  
  3. closure = LuaCompiler.loadis(new FileInputStream(luascript), "信豐boy",table);//"信豐boy"這個字符串是可以隨意的.其作用是表示作用域.  
  4. OutputStream os=new FileOutputStream(lbcscript);  
  5. closure.prototype.dump(os);//這樣就把lbc格式的字節碼文件寫到"C:\\Users\\信豐boy\\getWeather.lbc"了.  
  6. os.close(); 

當下次要調用的時候

  1. File lbcscript=new File("C:\\Users\\信豐boy\\getWeather.lbc");  
  2. closure = LuaPrototype.loadByteCode(new FileInputStream(lbcscript), table); 

ps:kuhlua不支持gfind函數,所有你得用find函數ps:kuhlua不支持gfind函數,所有你得用find函數。

小結:詳解在JAVA(J2ME)中使用Lua腳本引擎kahlua的內容介紹完了,希望通過本文的學習能對你有所幫助!

責任編輯:zhaolei 來源: 互聯網
相關推薦

2011-09-01 16:45:15

J2MELua

2010-09-30 11:16:53

J2ME Snake腳

2010-10-09 15:00:22

SnakeJ2ME

2010-09-29 08:57:04

J2ME前景

2009-06-17 11:27:00

setClip方法J2ME

2010-09-30 13:48:10

J2ME游戲引擎

2010-09-30 09:56:26

J2ME Polish

2010-09-29 10:41:18

J2MEJVM

2010-09-29 13:23:12

J2MEPIM

2010-09-29 16:20:06

J2MEWeb服務API

2009-07-09 16:06:10

JDK J2EE J2

2009-06-16 16:03:12

緩存J2ME

2010-09-30 12:53:00

J2MECSS

2010-09-30 11:04:53

J2MERMS

2010-09-29 09:19:39

J2ME開發工具

2010-10-09 15:58:36

J2ME圖形

2010-09-30 13:39:52

2009-06-23 11:30:16

RMSJ2ME

2009-03-22 09:38:03

Android移植J2ME

2010-09-30 13:28:55

J2ME圖形
點贊
收藏

51CTO技術棧公眾號

欧美日韩成人综合| 97在线看福利| 一区二区日本| 亚洲欧洲av| 欧美日韩另类一区| 777永久免费网站国产| 日韩精品免费一区二区在线观看| 亚洲视频在线看| 中文字幕在线永久在线视频| 蜜桃视频一区二区| 色噜噜狠狠色综合网图区| 日本xxxxwwww| 国产一区清纯| 欧美另类变人与禽xxxxx| 日韩欧美亚洲区| 欧美一区=区三区| 亚洲影院在线观看| 美女视频久久| 91精品一区| 欧美午夜免费电影| 亚洲一区二区三区四区中文| 成人午夜888| 亚洲综合在线五月| 国产一区二区视频在线观看| 成人黄色网址| 久久欧美一区二区| 91wwwcom在线观看| 亚洲精品天堂成人片av在线播放 | 亚洲国语精品自产拍在线观看| 1769视频在线播放免费观看| 在线不卡中文字幕播放| 超碰在线最新| 亚洲激情在线观看| 国产极品一区| 91精品国产精品| 欧美电影免费播放| 亚洲精品电影网| 888av在线视频| 亚洲美女黄网| 欧美国产精品v| 日韩国产在线播放| 国产大片精品免费永久看nba| 中文字幕日韩精品一区二区| 亚洲成av人影片在线观看| 国产秀色在线www免费观看| 精品一区视频| 日韩avvvv在线播放| 色一情一乱一乱一91av| 久久九九亚洲综合| 你懂的网址一区二区三区| av免费看大片| 日韩午夜一区| 亚洲精品在线91| aa成人免费视频| 九一国产在线| 久久精品国产福利| 在线综合亚洲| 色综合一区二区三区| 国产v综合ⅴ日韩v欧美大片| 欧美精品一区二区三区免费播放| 成人在线观看黄色| 77成人影视| 日韩电影免费一区| 国语精品一区| 国产欧美视频一区二区三区| 欧美丰满高潮xxxx喷水动漫| 欧美福利视频在线观看| 水蜜桃亚洲精品| 色网站免费在线观看| 9999久久久久| 日本aⅴ免费视频一区二区三区| 亚洲在线一区二区三区| 久久这里有精品| 国产精品美女黄网| 青青青免费在线| 欧美aaaaaaa| 亚洲电影影音先锋| 国产精品日产欧美久久久久| 91成人免费电影| 成人欧美一区二区| 国产资源在线看| 国产乱码精品一区二区三区四区| 国产一区二区三区免费看| 欧美日韩视频第一区| 欧美—级高清免费播放| 欧美精品久久久| 免费网站www在线观看| 国产色噜噜噜91在线精品| 不卡一区二区三区四区| 日本精品久久久久影院| 国外男同性恋在线看| 小说区图片区色综合区| 亚洲成人中文在线| 日韩美女免费观看| 妞干网视频在线观看| 在线免费观看h| 综合欧美精品| 国产suv精品一区二区883| 亚洲色无码播放| 亚洲欧洲国产精品久久| 国产福利在线观看| 久久午夜影院| 精品日韩中文字幕| 日本亚洲欧美三级| 激情se五月| 欧美一区 二区| 丁香五六月婷婷久久激情| 97精品国产91久久久久久| 成人福利网址| 欧美色片在线观看| 国产精品麻豆一区二区| 97在线视频免费看| 超碰在线电影| 日日摸夜夜添夜夜添国产精品 | 欧美精品性生活| 国内欧美日韩| 国产91丝袜在线播放0| 欧美老少做受xxxx高潮| **孕交吃奶水一级毛片| 黄色成人美女网站| 国产精品乱码一区二区三区软件| 久久精品99久久久香蕉| 中文字幕欧美一区二区| 欧美亚洲一区二区三区| 亚洲乱码av中文一区二区| 免费在线观看日韩视频| 欧美挤奶吃奶水xxxxx| 欧美一a一片一级一片| 国产一二三视频| 蜜桃av一区二区三区电影| 日韩美女视频中文字幕| 91在线亚洲| 亚洲在线视频网站| 亚洲三区在线| 日韩理论在线| 亚洲精选一区二区| 999在线观看免费大全电视剧| 免费一区二区三区在线视频| 亚洲综合色网站| 国产午夜伦鲁鲁| 日韩vs国产vs欧美| 成人写真视频福利网| 成人午夜sm精品久久久久久久| 在线中文字幕一区二区| 偷偷要 色偷偷| av动漫一区二区| 国产亚洲激情在线| 91精品国产黑色瑜伽裤| 亚洲精品国产精品国自产在线 | 丁香天五香天堂综合| 天天在线免费视频| 成人免费观看av| 日本福利视频在线| 国产精品美女久久久久久2018| 先锋影音资源999| 日本高清不卡aⅴ免费网站| 午夜激情视频在线观看| 亚洲国产精品va在线看黑人 | 免费看污久久久| 日本不卡视频一二三区| 国产精品久久久久9999爆乳| 国产精品国产馆在线真实露脸 | 久久噜噜噜精品国产亚洲综合 | 激情综合一区二区三区| 精品中文字幕av| 亚洲国产aⅴ成人精品无吗| 国产精品99999| 亚洲国产成人在线视频| 成功精品影院| 国产精品一区视频| 成人av资源站| 轻轻色免费在线视频| 日韩久久精品一区| 久久午夜影院| 日本一区视频在线| 国产精品婷婷午夜在线观看| 免费黄网站在线观看| 国产一区二区三区在线观看网站| 亚洲动漫在线观看| 亚洲不卡一卡2卡三卡4卡5卡精品| 精品一区二区在线播放| 羞羞在线观看网站| 亚洲精品久久久久国产| 日韩高清电影免费| 色播亚洲视频在线观看| 国产精品热久久久久夜色精品三区 | 视频一区视频二区在线观看| 中文av一区二区三区| 亚洲激情第一页| 五月婷婷六月综合| 国产亚洲天堂网| 日韩欧美在线影院| av资源久久| 激情伊人五月天| 日韩三级在线观看| 99久久99热这里只有精品| 日韩激情在线视频| 国产在线青青草| 亚洲精品乱码久久久久久| 久久久久久国产三级电影|