场景编辑器开发第三天,重新审视整体需求,修改方案,制作涂鸦工具。
经过昨天也就是第二天的思考分析确定了技术实现方案,本身是可行的但是经过多方面综合性质的考虑,最终还是希望玩家也可以进行编辑,所以回归到了造轮子的位置。
第一点.flash pro并不是我们自己写的代码,出问题或者有技术难题我们自己是无法控制的。
第二点.经过一晚上看jsfl参考文档,发现jsfl面向用户操作,而不是程序员,也没有actionscript灵活,制作场景编辑器因此难度提高。
第三点.语法比较老,没有typescript语法新,且和typescript JavaScript语法有一定区别。
第四点.研发出来也不是我们现有体系中的功能,没办法最大化的利用。
更重要的还是希望玩家也可以进行场景编辑,且功能丰富起来,几乎一半多的功能都需要定制,不如直接自己造一个了,所以放弃了原flash pro+jsfl方案
改为在现有的游戏引擎上搭建起来自己的场景编辑器,这里技术应用是egret引擎,typescript,json数据结构,可能也会用到zip包装,服务端运行nodeJS进行文件操作处理,数据库是用mongoDB。
考虑到大的场景都是我们这边专门去绘画的所以需要给玩家制作一个用于绘画的功能,肯定不会说完完全全让玩家来画,玩家只需要简单的绘画指示就可以完成一个场景,我准备用瓦片图,但是瓦片图过度太生硬了,所以我用羽化遮罩+瓦片图,自己做一个瓦片系统,来实现这个需求,这里是我想到了曾经玩过的魔法哈奇里面的创意空间里面地形的贴图就是这种方式实现的。



制作绘画功能比较简单,我就直接做出来了,也参考了一下,egret社区网友的逻辑,其中的关键点在于可以记录每一步操作和创建图层。并且可以保存为一个json数据的历史记录文件以后玩家就可以随时打开编辑,同时json也可以被场景解析出来。
总结几个制作涂鸦工具箱的时候遇到的问题。
1.move事件并不是真的记录每一点拖动,所以需要些一些特有的算法实现插值插入到间隙,否则玩家画的快的时候就只有几个点了。

2.不要所有的绘画点都放到显示列表,这会让设备性能占满,最合适的方法是每点画完都塌缩到一个Bitmap里面这里是用截取texture的方法实现

而画的实现逻辑是,按下时候监听移动和抬起,移动时候画,每一点清理塌缩,就是这样。