前言
写这篇BLOG时真真激动不已。如你猜想,我已经在这个问题上花费了不少时间(数个小时...).
缘由
自从COCOSTUDIO 1.2起(可能是这个版本,具体小版本我忘记了),它的场景编辑器中引入了触发器机制。引入触发器的原因,有关专家已经作了明确介绍(http://www.cocoachina.com/bbs/read.php?tid=179215)。
可以说,这个触发器说简单还算简单,说复杂还是比较复杂的。把握好了触发器,将给编码部分带来极大简化,当然还包括编码模块设计方面的巨大影响。
于是,我安装了最新版本的COCOSTUDIO 1.3,学习使用场景编辑器中引入的触发器机制。
问题
最简单情况,在场景编辑器下你可以使用触发器编辑器中提供的默认触发器迅速搭建一个触发器的例子。然后,点击“确定”按钮退出小窗口。然后,点击工具栏中的预览图标来熟悉触发器的功能并感受其魅力。
这个试验很容易成功,我也是如此。但是,当我再次进入到触发器编辑器中想使用”生成“按钮(对应于英文版本中的”Build“)生成COCOACHINA论坛中提到的code文件夹及其下相应文件时--以便把它们拿到VS中编码使用,程序崩溃了!一下整个场景编辑器软件DEAD!!!???
请记住下图中这个你可能熟悉而又陌生的提示吧。
求解过程
如你所想,求解过程很艰难。正如狄仁杰破解连环案,也如目前正热播的长安三怪探中独孤先生的破案,需要借助论坛,BAIDU,等等进行前后的数次问题回溯分析。恕细节不再描述。忽然想到办公室的新机器--这是我们学校新配置的台式机。何不在办公室机器上也试验一下。办公室机器档次略微高一些,特别是上面没有安装太多的程序(只有WIN7 -64位,还有PS和FLASH,这些都是我的必需)。下载后安装运行并测试,VERY OK!!!
但是,我终不该把办公室的机器搬到家中吧?(当然也不是绝对不可以)
办公室的机器上安装的是360,家中安装的是瑞星。是不是它们的问题?
为此,针对题目中的错误提示,我还专门分析了MSDN网站上的许多文章,但是五花八门--不信,你使用BAIDU以中文搜索一下看看-这个错误还相当经典呢?根据自己以前的WINDOWS系统程序开发小经验,并结合网络搜索,很可能是场景编辑器触发器在生成CODE文件夹及操作XML文件时出现的文件共享冲突。
于是,我关闭网络连接(我这个人很保守,至少在安全这方面!),又关闭了瑞星及其防火墙。再试验还是不行!
那么,是不是WINDOWS防火墙的问题。前段时间,我在WIN7下通过自己的ANDROID手机测试软件开发过程中需要用到手机的实时上网测试,在借助WIN7+无线网卡实现连接热点操作时就出现了WINDOWS防火墙相关阻挠。
接下来,打开服务程序界面(WIN7下,开始按钮-在搜索框中输入SERVICES.MSC后按回车比较快)。我先后关闭了WINDOWS FIREWALL和WINDOWS DEFENDER。再次创建触发器代码测试,结果SUCCEEDED!!!
最终把原因锁定在WINDOWS DEFENDER。就是它,只要把它对应的服务关闭就OK了。
为我欢呼吧!
补充
看起来,“欢呼”还是有些为时过早,在后来的操作中,发现不时地还是会出现如本文上图中所出现的错误界面(同样导致整个编辑器DEAD)!?我自己的解决办法是首先关闭WINDOWS DEFENDER;其实,在点击“生成”触发器代码时,先把此前你已经点击“生成”生成的CODE文件夹改名成其他的(或者删除);而且,这一步操作与现点击“生成”生成触发器代码之间要多间隔一些时间。
因此,我的分析还是,根本上上述错误应当与文件的共享操作有关,因为办公室的机器上安装的东西非常少,而且档次也比家中的笔记本要高一些,自然速度快不少。例如,OFFICE中的WORD,我们知道,在我们操作WORD文档期间,很可能因为数次保存,在相应路径下产生一些临时文件,在退出后,这些文件要经过些许时间才被WORD系统的退出操作部分清理掉。如果在还未清理完之前又做一些对此WORD有关的操作(如你常见的U盘插拔操作),则很可能要出现错误提示。看起来机器的速度还是很关键的!