飞行射击类游戏很常用的追踪子弹,或者塔防里面固定炮台打 怪物的时候,为了保证子弹不会打空,追踪是必要的。
然而,这是极其简单的事情。
在每一帧里判断当前子弹和目标位置的距离和方向,不断修正 速度方向即可。
-
追踪子弹-初中简单的物理和数学
In 未分类 on 2012年02月21日 by TAT.岑安 view: 5,5535
-
关于 base64 编码的原理及实现
In 未分类 on 2012年02月09日 by TAT.岑安 view: 3,3901
我们的图片大部分都是可以转换成 base64 编码的 data:image。 这个在将 canvas 保存为 img 的时候尤其有用。虽然除 ie 外,大部分现代浏览器都已经支持原生的基于 base64 的 encode 和 decode,例如 btoa 和 atob。(将 canvas 画布保存成 img 并强制改变 mimetype 进行下载,会在下一篇记录)
但是处于好奇心,还是驱使我去了解下 base64 编码的原理。以便也在不支持原生 base64 编码的 ie 下可以得以实现。
-
canvas 保存为 data:image 扩展功能的实现
In 未分类 on 2012年02月09日 by TAT.岑安 view: 6,5333
【已知】
canvas 提供了 toDataURL 的接口,可以方便的将 canvas 画布转化成 base64 编码的 image。目前支持的最好的是 png 格式,jpeg 格式的现代浏览器基本也支持,但是支持的不是很好。
-
HTML5 离线应用无法更新的定位与解决
In 未分类 on 2012年01月12日 by TAT.iAzrael view: 11,6756
一、些许前提
最近在制作一个 Web 应用, 其中用到了 HTML5 的离线应用功能 (offline application), 离线应用的概念就不再阐述, 可以查看这两篇文章:
http://www.ibm.com/developerworks/cn/web/1011_guozb_html5off/
http://www.mhtml5.com/2011/02/583.html
这里主要讨论它的更新问题. 首先浏览器是有两部分 cache 的, browser cache 和 app cache, browser cache 就是常说的浏览器缓存, app cache 是离线应用的缓存.
-
css 捕捉器的实现
In 未分类 on 2011年12月09日 by TAT.melody view: 5,6872
这个工具的实现,是我长久以来的一个愿望,缘于之前看到的蓝色理想上的一个代码捕捉器。当时我下下来用了一下,没仔细研究,只觉得很难用,于是心底就有了一颗种子,希望有一天自己能开发出这样的工具。感谢伟大的谷歌,给了我一种优雅的实现方式——谷歌插件。
下面说说技术部分:
一开始用的是浏览器原生的 css rules,可是后来发现谷歌的 css rules 是经过解析的,而 ie 的不是。由于对谷歌的偏爱,所以不得不另辟蹊径。凑巧之前又看到了谷歌的另一个插件——Web Developer,可以把页面引用到的 css 文件内容都显示出来。于是,在控制台把代码复制了下来,考到了我的 js 里面。它的实现原理是用 ajax 请求把所有 css 文件内容给抓下来,这涉及到一个跨域问题。不过不用怕,我们是插件嘛,当然有特殊的权利——跨域 ajax 请求。
-
一种简单的实现自定义事件的方法
In 未分类 on 2011年12月09日 by TAT.melody view: 4,085412345678910111213141516171819202122232425262728293031323334var CustomEvent = {events:{},dispatchEvent:function(ev,data){if(this.events[ev]){var handlers=this.events[ev];for(var i=0,l=handlers.length;i<l;++i){try{handlers[i](data);}catch(e){}}}},addEventListener:function(ev,handler){if(!this.events[ev]){this.events[ev]=[handler];}else{this.events[ev].push(handler);}},removeEventListener:function(ev,handler){if(this.events[ev]){var handlers=this.events[ev];for(var i=0,l=handlers.length;i<l;++i){if(handlers[i]==handler){handlers.splice(i);break;}}}}}
-
ie6 position fixed
In 未分类 on 2011年11月21日 by TAT.melody view: 2,5070123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><title>Untitled Document</title><style>html, body {margin: 0px;padding: 0px;_overflow:hidden;_height:100%;}.lay_topfixed {width: 100%;height: 34px;position: relative;z-index: 400;}.lay_topfixed .lay_topfixed_inner {left: 0px;top: 0px;width: 100%;position: fixed;_position: absolute;background-color:#4B97BD;color:white;text-align:center;height: 34px;line-height:34px;}.container{_margin-right:15px;_overflow:auto;_height:100%;}</style></head><body><div class="container"><div class="lay_topfixed"><div class="lay_topfixed_inner"> 哈哈,我一直不动~~ </div></div><div style="height:2000px"><br /><br />adfadfasdfasdfasdfasdfsdfasdfasdfasdfasdfasdfsdfsdfasdf</div></div></body></html>
-
Html5 音乐播放器(一)
In 未分类 on 2011年10月31日 by TAT.pel view: 9,0111
过去在网页上播放声音一般使用 wmp(windows media player)控件,但是 wmp 控件提供的 js 接口非常有限,更致命的是 IE only。如果不想接受 wmp 的界面,又或者想要跨平台,只能借助于 flash 了。现在 html5 标准已经原生支持音频播放,并且各大浏览器都不同程度地实现了。
-
关于团队合作的 css 命名规范
In 未分类 on 2011年10月28日 by TAT.sheran view: 38,52718
关于团队合作的 css 命名规范
常用的 css 命名规则:
- 头:header
- 内容:content/container
- 尾:footer
- 导航:nav
- 侧栏:sidebar
- 栏目:column
-
完美实现溢出文本省略
In 未分类 on 2011年10月25日 by TAT.iAzrael view: 8,5039
文本溢出展示省略号的需求经常都会用到,而对于新式的浏览器,这完全不是问题,因为 css3 里面已经有实现 text-overflow:ellipsis,但是最新 w3c 文档中却移除了这个属性,即使这样,也有不少浏览器实现了这个特性。其浏览器支持情况如下:
12IE Firefox Opera Safari Chrome6+ - 11.0+ 3.0+ 1.0+可以看到,只有 firefox 和 opera11 一下的版本不支持这个浏览器,以此也可以放心大胆的用了。但是遇到要求高的产品经理时(╮(╯_╰)╭),就不得不考虑 firefox 等不支持的浏览器了,唯有使用 js 进行字符截断。
比较简单的截断方式就是按字符个数截断,以一个中文宽度等于两个英文宽度为前提,根据给定字符个数进行截取。但是字符在页面显示的时候,其宽度并不是一定的,会根据不同的字体和字体大小的不同而不同,更何况字母 i 和 A 的宽度是不一样的,存在 bug 且不够精确。