📄 lua移植到mtk平台小结.htm
字号:
<LI class=alt><SPAN></SPAN>
<LI><SPAN>lua_State * L;</SPAN>
<LI class=alt><SPAN></SPAN>
<LI><SPAN></SPAN><SPAN
class=keyword>void</SPAN><SPAN> Key1DownHandler()</SPAN>
<LI class=alt><SPAN>{</SPAN>
<LI><SPAN> func (L,KEY_DOWN,KEY1,0);</SPAN>
<LI class=alt><SPAN>}</SPAN>
<LI><SPAN></SPAN><SPAN
class=keyword>void</SPAN><SPAN> Key2DownHandler()</SPAN>
<LI class=alt><SPAN>{</SPAN>
<LI><SPAN> func (L,KEY_DOWN,KEY2,0);</SPAN>
<LI class=alt><SPAN>}</SPAN>
<LI><SPAN></SPAN><SPAN
class=keyword>void</SPAN><SPAN> Key3DownHandler()</SPAN>
<LI class=alt><SPAN>{</SPAN>
<LI><SPAN></SPAN>
<LI
class=alt><SPAN> func (L,KEY_DOWN,KEY3,0);</SPAN>
<LI><SPAN>}</SPAN>
<LI class=alt><SPAN> ...................</SPAN>
<LI><SPAN> </SPAN>
<LI class=alt><SPAN></SPAN><SPAN
class=keyword>void</SPAN><SPAN> KeyRSKDownHandler()</SPAN>
<LI><SPAN>{</SPAN>
<LI
class=alt><SPAN> func (L,KEY_DOWN, KEY_RSK,0);</SPAN>
<LI><SPAN>}</SPAN>
<LI class=alt><SPAN></SPAN><SPAN
class=keyword>void</SPAN><SPAN> KeyRSKUpHandler()</SPAN>
<LI><SPAN>{</SPAN>
<LI
class=alt><SPAN> func (L,KEY_UP,KEY_RSK,0);</SPAN>
<LI><SPAN>}</SPAN>
<LI class=alt><SPAN></SPAN>
<LI><SPAN></SPAN>
<LI class=alt><SPAN></SPAN><SPAN
class=keyword>typedef</SPAN><SPAN> </SPAN><SPAN
class=keyword>struct</SPAN><SPAN> mtk_key_event</SPAN>
<LI><SPAN>{</SPAN>
<LI class=alt><SPAN> </SPAN><SPAN
class=keyword>void</SPAN><SPAN> (*f) ();</SPAN>
<LI><SPAN> </SPAN><SPAN
class=datatypes>int</SPAN><SPAN> event;</SPAN>
<LI class=alt><SPAN> </SPAN><SPAN
class=datatypes>int</SPAN><SPAN> eventType;</SPAN>
<LI><SPAN>}mtk_key_event;</SPAN>
<LI class=alt><SPAN></SPAN>
<LI><SPAN></SPAN><SPAN
class=keyword>const</SPAN><SPAN> mtk_key_event eventHandlerS[]=</SPAN>
<LI class=alt><SPAN>{</SPAN>
<LI><SPAN> {Key1DownHandler, KEY_1, KEY_EVENT_DOWN },</SPAN>
<LI
class=alt><SPAN> {Key2DownHandler, KEY_2, KEY_EVENT_DOWN },</SPAN>
<LI><SPAN> {Key2DownHandler, KEY_2, KEY_EVENT_DOWN },</SPAN>
<LI class=alt><SPAN></SPAN>
<LI><SPAN> ...................</SPAN>
<LI class=alt><SPAN></SPAN>
<LI><SPAN> {KeyRSKDownHandler, KEY_RSK, KEY_EVENT_DOWN},</SPAN>
<LI
class=alt><SPAN> {KeyRSKUpHandler, KEY_RSK, KEY_EVENT_UP},</SPAN>
<LI><SPAN>};</SPAN>
<LI class=alt><SPAN></SPAN>
<LI><SPAN></SPAN><SPAN
class=keyword>void</SPAN><SPAN> lua_set_key_handler(</SPAN><SPAN
class=keyword>void</SPAN><SPAN>)</SPAN>
<LI class=alt><SPAN>{</SPAN>
<LI><SPAN> </SPAN><SPAN
class=keyword>for</SPAN><SPAN>(i =0;i <</SPAN><SPAN
class=keyword>sizeof</SPAN><SPAN>(eventHandlerS)/</SPAN><SPAN
class=keyword>sizeof</SPAN><SPAN>(eventHandlerS[0]);i++)</SPAN>
<LI class=alt><SPAN> {</SPAN>
<LI><SPAN> </SPAN><SPAN
class=comment>//TODO:Clear Key Handler</SPAN><SPAN></SPAN>
<LI class=alt><SPAN> }</SPAN>
<LI><SPAN> </SPAN><SPAN
class=keyword>for</SPAN><SPAN>(i =0;i <</SPAN><SPAN
class=keyword>sizeof</SPAN><SPAN>(eventHandlerS)/</SPAN><SPAN
class=keyword>sizeof</SPAN><SPAN>(eventHandlerS[0]);i++)</SPAN>
<LI class=alt><SPAN> {</SPAN>
<LI><SPAN> SetKeyHandler(eventHandlerS[i].f, eventHandlerS[i].event, eventHandlerS[i].eventType);</SPAN>
<LI class=alt><SPAN> }</SPAN>
<LI><SPAN>}</SPAN>
<LI class=alt><SPAN></SPAN>
<LI><SPAN></SPAN><SPAN
class=datatypes>int</SPAN><SPAN> my_event_handler(</SPAN><SPAN
class=keyword>void</SPAN><SPAN> *pthis,</SPAN><SPAN
class=datatypes>int</SPAN><SPAN> evtType, </SPAN><SPAN
class=datatypes>UINT32</SPAN><SPAN> param1, </SPAN><SPAN
class=datatypes>UINT32</SPAN><SPAN> param2)</SPAN>
<LI class=alt><SPAN>{</SPAN>
<LI><SPAN> </SPAN><SPAN
class=datatypes>int</SPAN><SPAN> ret = 0;</SPAN>
<LI class=alt><SPAN> </SPAN><SPAN
class=keyword>switch</SPAN><SPAN> (evtType)</SPAN>
<LI><SPAN> {</SPAN>
<LI
class=alt><SPAN> </SPAN><SPAN
class=keyword>case</SPAN><SPAN> KEY_DOWN:</SPAN>
<LI><SPAN> {</SPAN>
<LI
class=alt><SPAN> </SPAN><SPAN
class=keyword>return</SPAN><SPAN> lua_event_handler(L, evtType, param1, param2);</SPAN>
<LI><SPAN> }</SPAN>
<LI class=alt><SPAN></SPAN>
<LI><SPAN> </SPAN><SPAN
class=keyword>case</SPAN><SPAN> INIT:</SPAN>
<LI class=alt><SPAN> {</SPAN>
<LI><SPAN> L = lua_open();</SPAN>
<LI
class=alt><SPAN> luaL_openlibs(L);</SPAN>
<LI><SPAN></SPAN>
<LI
class=alt><SPAN> my_openlibs(L); </SPAN><SPAN
class=comment>// 注册 C 函数</SPAN><SPAN></SPAN>
<LI><SPAN></SPAN>
<LI
class=alt><SPAN> luaL_dofile(L, (</SPAN><SPAN
class=datatypes>char</SPAN><SPAN>*)param1);</SPAN>
<LI><SPAN></SPAN>
<LI
class=alt><SPAN> lua_event_handler(L, evtType, param1, param2);</SPAN>
<LI><SPAN> }</SPAN>
<LI
class=alt><SPAN> </SPAN><SPAN
class=comment>//TODO: other event</SPAN><SPAN></SPAN>
<LI><SPAN> }</SPAN>
<LI class=alt><SPAN> </SPAN><SPAN
class=keyword>return</SPAN><SPAN> 1;</SPAN>
<LI><SPAN>}</SPAN>
<LI class=alt><SPAN></SPAN>
<LI><SPAN></SPAN>
<LI class=alt><SPAN>unsigned </SPAN><SPAN
class=datatypes>int</SPAN><SPAN> lua_event_handler(lua_State *L, </SPAN><SPAN
class=datatypes>int</SPAN><SPAN> evtType, </SPAN><SPAN
class=datatypes>UINT32</SPAN><SPAN> param1, </SPAN><SPAN
class=datatypes>UINT32</SPAN><SPAN> param2)</SPAN>
<LI><SPAN>{</SPAN>
<LI class=alt><SPAN> unsigned </SPAN><SPAN
class=datatypes>int</SPAN><SPAN> ret = 0;</SPAN>
<LI><SPAN> </SPAN>
<LI class=alt><SPAN> lua_getglobal(L,</SPAN><SPAN
class=string>"main"</SPAN><SPAN>);</SPAN>
<LI><SPAN> lua_pushnumber(L, evtType);</SPAN>
<LI
class=alt><SPAN> lua_pushnumber(L, param1);</SPAN>
<LI><SPAN> lua_pushnumber(L, param2);</SPAN>
<LI class=alt><SPAN></SPAN>
<LI><SPAN> </SPAN><SPAN
class=keyword>if</SPAN><SPAN>(lua_pcall(L, 3, 1, 0) != 0)</SPAN>
<LI class=alt><SPAN> {</SPAN>
<LI><SPAN> </SPAN><SPAN
class=keyword>const</SPAN><SPAN> </SPAN><SPAN
class=datatypes>char</SPAN><SPAN> *str;</SPAN>
<LI
class=alt><SPAN> lua_pop(L,1);</SPAN>
<LI><SPAN> str = lua_tostring(L, 0);</SPAN>
<LI
class=alt><SPAN> ret = ret;</SPAN>
<LI><SPAN> }</SPAN>
<LI class=alt><SPAN></SPAN>
<LI><SPAN> ret = (unsigned </SPAN><SPAN
class=datatypes>int</SPAN><SPAN>)lua_tonumber(L, -1);</SPAN>
<LI class=alt><SPAN> lua_pop(L, 1);</SPAN>
<LI><SPAN> </SPAN><SPAN
class=keyword>return</SPAN><SPAN> ret;</SPAN>
<LI class=alt><SPAN>}</SPAN>
<LI><SPAN></SPAN></LI></OL></DIV></O:P></SPAN>
<P></P>
<P class=MsoNormal><SPAN lang=EN-US>4</SPAN><SPAN
style="FONT-FAMILY: 宋体">。初始化以及退出</SPAN></P>
<P class=MsoNormal><SPAN style="FONT-FAMILY: 宋体">
<DIV class=highlighter>
<OL class=highlighter-cpp>
<LI><SPAN></SPAN>
<LI class=alt><SPAN></SPAN><SPAN
class=datatypes>int</SPAN><SPAN> init()</SPAN>
<LI><SPAN>{</SPAN>
<LI class=alt><SPAN> </SPAN><SPAN
class=comment>//TODO: allocate memory</SPAN><SPAN></SPAN>
<LI><SPAN> </SPAN><SPAN
class=comment>//TODO: entry new screen</SPAN><SPAN></SPAN>
<LI
class=alt><SPAN> func = my_event_handler;</SPAN>
<LI><SPAN> lua_set_key_handler();</SPAN>
<LI
class=alt><SPAN> func(0, INIT, 0, 0);</SPAN>
<LI><SPAN>}</SPAN>
<LI class=alt><SPAN></SPAN>
<LI><SPAN></SPAN><SPAN class=datatypes>int</SPAN><SPAN> fini()</SPAN>
<LI class=alt><SPAN>{</SPAN>
<LI><SPAN> </SPAN><SPAN
class=comment>//TODO:free memory</SPAN><SPAN></SPAN>
<LI class=alt><SPAN> </SPAN><SPAN
class=comment>//TODO: exit screen</SPAN><SPAN></SPAN>
<LI><SPAN>}</SPAN>
<LI class=alt><SPAN></SPAN></LI></OL></DIV><BR></SPAN></DIV></FONT><FONT
size=2></FONT></DIV></BODY></HTML>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -