2017年7月

iis Compilation Error 解决方案

今天在虚拟机上发布.net网站
报错为
Compiler Error Message: CS0016: Could not write to output file 'c:\Windows\Microsoft.NET\Framework64\v4.0.30319\Temporary ASP.NET Files\root...'

网上找了好多解决方案没有用,最终发现:
"C:\Windows\temp"文件夹加上 IIS_IUSRS的权限就好了。
汗= =

图片瀑布流制作.

由于在网上找的相关图片瀑布流的代码,封装性都不太高,并且都不支持自适应的效果(js在初始化的时候就确定了宽度,不支持放大缩小改变宽度)
于是想着自己封装一个图片瀑布流的代码.
暂时的做法是宽度都统一,高度自适应.
等以后有时间的话,再想一下宽度是多列的思路.

源码链接:图片瀑布流

基本的思路是每个图片以绝对定位的方式一个一个的放到页面上.有一个数组记录每列的当前高度.
做完之后看一下效果不错,主页面监听页面是否滚动到了底部去加载新的图片.
但是偶尔却会出现.图片重叠的现象,非常奇怪.
一开始认为是程序可能没有读取到图片的高度.写代码监听一下图片高度

 var imageHeight = dom.find('img').height();
 if (imageHeight < 50) debugger;

却发现从来都没跳到断点中来.判断应该不是没有读取到图片的高度.

后来偶然间发现一个问题:虽然封装的对象中的方法:addImageList是一个一个加载图片的,不存在没有记录图片的高度,然后在对象外部页面是监听滚动条的方式去加载图片的,也就是说同一时间可能会调用多次加载图片的方法.

这个情况下就会出现一张图片已经确定好位置,但是需要在图片加载结束后读取高度,记录这个图片占用的空间之前,另外一个图片也加载在同一个位置的情况.

找到出问题的原因,剩下的就很好办了.外部不再直接调用addImageList方法.而是以堆栈的方式,将需要放置的图片放在一个对列中.

//添加图片到对列中.(推入对列中统一处理)
p.pushImages = function (opt_arr, callback) {
    var self = this;
    if (!(opt_arr instanceof Array)) {
        opt_arr = [opt_arr];
    }
    for (var i = 0; i < opt_arr.length; i++) {
        var obj = {
            data: opt_arr[i],
            callback: callback
        };
        self.plusImageList.push(obj);
    }
};

然后在创建对象的时候,启动方法_detailImage检测是否有需要处理的图片,这样就不会在同一时间多次调用增加图片的方法,外部只是往对象内部添加数组,真正的添加图片在对象内部处理.

//处理对列中的图片
p._detailImage = function () {
    var self = this;
    if (self.plusImageList.length == 0) {   //如果对列中没有图片,延迟100毫秒再来读取对列.
        window.setTimeout(function () {
            self._detailImage();
        }, 100);
    } else {
        var temp = self.plusImageList.splice(0, 1)[0];     //取出一个图片对象.
        self.addImage(temp.data, function () {
            if (typeof temp.callback === 'function') temp.callback();
            //继续对下一个对列中的图片进行处理.(如果让图片一张一张出来的效果可以这里加一个延迟)
            window.setTimeout(function () { self._detailImage(); }, 100);  
           // self._detailImage();
        });
    }
};

这里记录一下走过的坑,以免下次再踩进去了,最终我想要做一个自定义表情包的页面,代码整理好后,再放上链接

QQ浏览器支持api调试

QQ浏览器有chrome的优点,又可以不翻墙直接装插件
一直很喜欢用,但是他调试webapi返回的json数据的时候并不友好(是直接下载的,问题是我们下载下来看很麻烦),因为他返回json数据的时候仍然用的是ie内核

于是百度搜索ie解决json显示问题:

http://blog.csdn.net/dream_ll/article/details/45151001#

通过修改注册表实现:


Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\MIME\Database\Content Type\application/json]

"CLSID"="{25336920-03F9-11cf-8FD0-00AA00686F13}"

"Encoding"=dword:00080000

[HKEY_CLASSES_ROOT\MIME\Database\Content Type\text/json]

"CLSID"="{25336920-03F9-11cf-8FD0-00AA00686F13}"

"encoding"=dword:00080000


保存为.reg后缀名,双击执行,再打开QQ浏览器,就没问题了

基于openlayer的地图基本操作

相对于arcgis庞大的地图框架,openlayer显的小巧易用.
专门针对公司地图使用业务写了一个简单类,实现快速开发.
如画点,画线,画面,画圈,计算面积,计算长度,轨迹回放,以及对应的点击/移动事件.
后续有新功能,再继续添加

案例demo: openlayer地图示例

全民飞机大战游戏开发

  • 基于学习使用createjs,博主准备在业余时间,做一个小游戏,因为在网上下载到了腾讯的全民飞机大战的素材包,决定用他的素材,做一个简化版的全民飞机大战游戏.
    制作源码访问路径:全民飞机大战
    还在制作当中,将持续更新,直到完成.

  • 首先做游戏第一步是加载图片素材以及音频素材,避免后面加载异步处理的麻烦.
    createjs中的LoadQueue对象是用来专门的类用来加载各种文件.
    另外背景是多张相同的图片铺满整个canvas,当下降到一个背景的高度后又回到起来来实现的.
    暂时就做了开始游戏的动画,后面的功能等做完了再来补充更新.

  • 这段时间公司项目比较忙,好不容易抽了点时间,把英雄子弹完成了.
    首先子弹初始化时,应该有一个发射角度和样式.最后当子弹超出屏幕时,通过回收检查移除掉.
    (具体代码参考源码路径下的js/Bullet.js文件)
    与飞机碰撞等功能在最后补上