今天开始研究WPF + Lua。
总的来说感觉被虐了……
主要是WPF的UI玩不转。
简单来说,WPF里调Lua这都很好实现。。
问题是!!!
我想在Lua的一条指令里实现 一个对UI控件的操作,然后阻塞在对鼠标的响应上。。(就是有鼠标响应之后再执行下一条语句)
这个花了我一晚的时间……而且还是非常非常丑陋的实现。。基本原理和我之前用HGE实现UI渲染机制同出一辙。。
这实在是丑陋得令我自己都忍不了了,放上丑陋的成果。明天继续研究……
丑陋的实现原理:
我实现了一个后台线程作为LuaAPI代理线程,Lua在调用C#功能时先走这个线程代理,由于此线程不能对UI控件进行操作(WPF中禁止跨线程访问UI元素。),我用了一个Dispatcher.BeginInvoke的基于UI线程控制的异步机制来把“代理API”转交到UI。
运行画面:
代码:
LUA代码:
BackImage("battle_back.jpg");
Music("test.mp3");
BindRolePic("测试人物1","2.png");
BindRolePic("测试人物2","MM.png");
Dialog("测试人物1","你说这方法丑不丑陋?");
Dialog("测试人物2","太他妈丑了");
Dialog("测试人物1","好吧,明天再弄。。");
Dialog("测试人物2","嗯。。。。");
Debug("finish script test");