<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>肉包子的摇滚生活 &#187; jQuery</title>
	<atom:link href="http://www.fangyuqiang.com/archives/tag/jquery/feed" rel="self" type="application/rss+xml" />
	<link>http://www.fangyuqiang.com</link>
	<description>前端开发，交互设计，用户体验</description>
	<lastBuildDate>Wed, 01 Sep 2010 09:06:13 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>技术资料</title>
		<link>http://www.fangyuqiang.com/tech</link>
		<comments>http://www.fangyuqiang.com/tech#comments</comments>
		<pubDate>Tue, 27 Oct 2009 06:04:03 +0000</pubDate>
		<dc:creator>fangyuqiang</dc:creator>
				<category><![CDATA[未分类]]></category>
		<category><![CDATA[jQuery]]></category>

		<guid isPermaLink="false">http://www.fangyuqiang.com/?page_id=647</guid>
		<description><![CDATA[这里随意纪录一些平时不好整理，又想分享的一些技术资料。 RFC参考资料，radius项目： RFC 2865 中文版 RFC 2866 中文版 在线文档资料： Maven权威指南中文版 创业： 典型商业计划书模板(范文) 商业计划书如何吸引投资人 商业计划书撰写的12大误区 如何成功地编写商业计划 主动营销 博客、个站 Greengnn大师 样式之美 嗷嗷 [米随随] s5s5 飘飘的实验室 Twinsen彪叔 Tommy偷米饭 CSS森林 lifesinger 射雕 ooxx Bigcat Ytzong 99css Ytzong 99css CanQue 残缺 Daviv’s Blog大伟 Jerry Qu 屈光宇 Justin PlanABC 怿飞 iVane哎文王 Porkfat Gulu77(七七) Realazy 陈贤安 Kaven 秦歌 Kejun 克军 pr1984 振之空间andymao [...]]]></description>
			<content:encoded><![CDATA[<p>这里随意纪录一些平时不好整理，又想分享的一些技术资料。</p>
<h3>RFC参考资料，radius项目：</h3>
<ul>
<li><a href="http://www.fangyuqiang.com/rfc-2865-cn">RFC 2865 中文版</a></li>
<li><a href="http://www.fangyuqiang.com/rfc-2866-cn">RFC 2866 中文版</a></li>
</ul>
<h3>在线文档资料：</h3>
<ul>
<li><a href="http://www.sonatype.com/books/maven-book-stage/reference_zh/public-book.html" target="_blank">Maven权威指南中文版</a></li>
</ul>
<h3>创业：</h3>
<ul>
<li><a href="http://www.fangyuqiang.com/tech/planbook">典型商业计划书模板(范文)</a></li>
<li><a href="http://www.fangyuqiang.com/tech/planbook-howto">商业计划书如何吸引投资人</a></li>
<li><a href="http://www.fangyuqiang.com/tech/planbook-12-bad">商业计划书撰写的12大误区</a></li>
<li><a href="http://office.icxo.com/htmlnews/2007/04/02/1030773_0.htm">如何成功地编写商业计划 </a></li>
<li><a href="http://wiki.mbalib.com/wiki/%E4%B8%BB%E5%8A%A8%E8%90%A5%E9%94%80">主动营销</a></li>
</ul>
<h3>博客、个站</h3>
<ul>
<li><a href="http://www.greengnn.org/" target="_blank">Greengnn大师</a></li>
<li><a href="http://www.aoao.org.cn/blog/" target="_blank">样式之美 嗷嗷</a></li>
<li><a href="http://www.misuisui.com/" target="_blank">[米随随] s5s5</a></li>
<li><a href="http://www.pufen.net/" target="_blank">飘飘的实验室</a></li>
<li><a href="http://www.twinsenliang.net/" target="_blank">Twinsen彪叔</a></li>
<li><a href="http://www.tommyfan.com" target="_blank">Tommy偷米饭</a></li>
<li><a href="http://www.cssforest.org/blog/" target="_blank">CSS森林</a></li>
<li><a href="http://lifesinger.org/blog/" target="_blank">lifesinger 射雕</a></li>
<li><a href="http://ooxx.me" target="_blank">ooxx Bigcat</a></li>
<li><a href="http://www.99css.com/" target="_blank">Ytzong 99css</a></li>
<li><a href="http://www.99css.com/" target="_blank">Ytzong 99css</a></li>
<li><a href="http://canque.rssidea.com/" target="_blank">CanQue 残缺</a></li>
<li><a href="http://www.iwcn.net/" target="_blank">Daviv’s Blog大伟</a></li>
<li><a href="http://www.qgy18.com/" target="_blank">Jerry Qu 屈光宇</a></li>
<li><a href="http://www.alldone.cn/" target="_blank">Justin</a></li>
<li><a href="http://www.planabc.net/" target="_blank">PlanABC 怿飞</a></li>
<li><a href="http://ivane.net/blog/" target="_blank">iVane哎文王</a></li>
<li><a href="http://www.porkfat.cn/blog/" target="_blank">Porkfat</a></li>
<li><a href="http://blog.gulu77.com/" target="_blank">Gulu77(七七)</a></li>
<li><a href="http://realazy.org/blog/" target="_blank">Realazy 陈贤安</a></li>
<li><a href="http://dancewithnet.com/" target="_blank">Kaven 秦歌</a></li>
<li><a href="http://hikejun.com/" target="_blank">Kejun 克军</a></li>
<li><a href="http://blog.pr1984.com" target="_blank">pr1984</a></li>
<li><a href="http://andy.andymao.com/" target="_blank">振之空间andymao</a></li>
<li><a href="http://yuntian.cnblogs.com/" target="_blank">Yuntian爆牙齿</a></li>
<li><a href="http://weilaixu.cn/" target="_blank">weilaixu</a></li>
<li><a href="http://www.macji.com/" target="_blank">MJ麦鸡</a></li>
<li><a href="http://yy.mylovings.net/" target="_blank">YY云烈</a></li>
<li><a href="http://www.htmlcssjs.com/blog/" target="_blank">Rage(正淳)</a></li>
<li><a href="http://www.linxz.cn" target="_blank">linxz林小志</a></li>
<li><a href="http://www.cnbruce.com/blog/" target="_blank">布鲁斯狼</a></li>
<li><a href="http://www.css88.com/" target="_blank">愚人码头</a></li>
<li><a href="http://www.gracecode.com/" target="_blank">手气不错</a></li>
<li><a href="http://blog.rexsong.com/" target="_blank">一葉千鳥’s BLOG</a></li>
<li><a href="http://www.v-sky.com/blog/" target="_blank">卢 力，LuLi</a></li>
<li><a href="http://www.evotech.net/blog/" target="_blank">Estelle Weyl</a></li>
<li><a href="http://veerle.duoh.com/blog/archives/" target="_blank">Veerle’s</a></li>
<li><a href="http://www.andybudd.com/links/cssweb_standards/index.php" target="_blank">Andy Budd</a></li>
<li><a href="http://www.css3.info/" target="_blank">css3 info</a></li>
<li><a href="http://www.csshilfe.de/" target="_blank">csshilfe</a></li>
<li><a href="http://meiert.com/en/" target="_blank">Jens Meiert</a></li>
<li><a href="http://www.maxdesign.com.au/" target="_blank">Max Design</a></li>
<li><a href="http://www.perun.net/kategorie/html-css/" target="_blank">Peruns Weblog</a></li>
<li><a href="http://cssglobe.com/" target="_blank">Css Globe</a></li>
<li><a href="http://www.webdesignerwall.com/tag/css/" target="_blank">webdesignerwall</a></li>
<li><a href="http://www.noupe.com/category/css" target="_blank">Noupe</a></li>
<li><a href="http://www.sleepingawake.net/categories/css/" target="_blank">sleepingawake</a></li>
<li><a href="http://www.thefloatingfrog.co.uk/" target="_blank">thefloatingfrog</a></li>
<li><a href="http://www.knowtebook.com/tag/css" target="_blank">knowtebook</a></li>
<li><a href="http://24ways.org/" target="_blank">24ways</a></li>
<li><a href="http://www.usabilitypost.com/category/html-css/" target="_blank">usabilitypost</a></li>
<li><a href="http://www.conditional-css.com/advanced" target="_blank">conditional-css</a></li>
<li><a href="http://woork.blogspot.com" target="_blank">blogspot</a></li>
<li><a href="http://www.digital-web.com/topics/" target="_blank">digital-web</a></li>
</ul>
<h3>团队、商业</h3>
<ul>
<li><a href="http://webteam.tencent.com/" target="_blank">ISD webteam</a></li>
<li><a href="http://www.tgideas.com/" target="_blank">tgideas</a></li>
<li><a href="http://www.aliued.cn/" target="_blank">Alibaba UED</a></li>
<li><a href="http://www.aliued.com/blog/" target="_blank">Ali UED</a></li>
<li><a href="http://ued.taobao.com/blog/" target="_blank">Taobao UI team</a></li>
<li><a href="http://www.uiplanet.com/taobao/" target="_blank">Taobao UED Team</a></li>
<li><a href="http://ysearchblog.cn/" target="_blank">Yahoo UI &amp; Search</a></li>
<li><a href="http://ucdchina.com/blog/" target="_blank">UCDChina</a></li>
<li><a href="http://q.163.com/mail/" target="_blank">网易邮箱UI团队</a></li>
<li><a href="http://www.webrebuild.org/" target="_blank">WebReBuild_ORG</a></li>
<li><a href="http://www.googlechinawebmaster.com/" target="_blank">谷歌搜索质量组</a></li>
<li><a href="http://www.ysearchblog.cn/" target="_blank">雅虎搜索日志</a></li>
<li><a href="http://www.ued163.com/" target="_blank">163门户UED团队</a></li>
<li><a href="http://www.aliued.com/" target="_blank">阿里巴巴UED团队</a></li>
<li><a href="http://www.aliued.cn/" target="_blank">阿里巴巴中国站UED团队</a></li>
<li><a href="http://www.alisoftued.com/" target="_blank">阿里软件UED团队</a></li>
<li><a href="http://ued.alimama.com/" target="_blank">阿里妈妈UED团队</a></li>
<li><a href="http://ued.koubei.com/" target="_blank">口碑网UED团队</a></li>
<li><a href="http://ued.alipay.com/" target="_blank">支付宝UED团队</a></li>
<li><a href="http://ued.taobao.com/blog/" target="_blank">淘宝网UED团队</a></li>
<li><a href="http://cdc.tencent.com/" target="_blank">腾讯CDC博客</a></li>
<li><a href="http://www.kdued.com/" target="_blank">金蝶友商网UE与前端开发团队</a></li>
<li><a href="http://www.apogeehk.com/" target="_blank">Apogee</a></li>
<li><a href="http://www.humanfactors.com/" target="_blank">Human Factors International</a></li>
<li><a href="http://www.ideo.com/" target="_blank">IDEO Design</a></li>
<li><a href="http://www.semanticstudios.com/" target="_blank">Semantic Dtudios</a></li>
<li><a href="http://www.thedna.net/" target="_blank">The Digital Networking Agency</a></li>
<li><a href="http://www.upassoc.org/" target="_blank">The Usability Professionals’ Association</a></li>
<li><a href="http://www.hci.org.cn/" target="_blank">ACM 人机交互学会中国分会</a></li>
<li><a href="http://www.etucn.com/" target="_blank">ETU 艺土界面设计</a></li>
<li><a href="http://www.eicostudio.com/" target="_blank">Eico Design</a></li>
<li><a href="http://www.isaruid.com/" target="_blank">Isaruid 伊飒尔</a></li>
<li><a href="http://www.upachina.org" target="_blank">UPA 中国用户体验研究中心</a></li>
<li><a href="http://www.uetime.com/" target="_blank">UEtime 咨询团队</a></li>
<li><a href="http://www.understandusability.com/" target="_blank">Understand Usability 优势可用性</a></li>
</ul>
<h3>资讯、社区</h3>
<ul>
<li><a href="http://www.51js.com/" target="_blank">无忧脚本论坛</a></li>
<li><a href="http://www.52design.com/" target="_blank">52Design 我爱设计网</a></li>
<li><a href="http://www.blueidea.com/" target="_blank">Blueidea 蓝色经典</a></li>
<li><a href="http://www.chinaddu.com/" target="_blank">ChinaDDU 设计中国</a></li>
<li><a href="http://www.chinaui.com/" target="_blank">ChinaUI 优艾网</a></li>
<li><a href="http://bbs.okajax.com/" target="_blank">Ajax中国论坛</a></li>
<li><a href="http://www.chinavisual.com/" target="_blank">ChinaVisual 视觉中国</a></li>
<li><a href="http://www.colorbird.com/" target="_blank">ColorBird 七色鸟</a></li>
<li><a href="http://www.designrepublic.org.tw/" target="_blank">DesignRepublic 设计共和</a></li>
<li><a href="http://www.flash8.net/" target="_blank">Flash8 闪吧</a></li>
<li><a href="http://www.flashempire.com/" target="_blank">FlashEmpire 闪客帝国</a></li>
<li><a href="http://www.heyshow.com/" target="_blank">HeyShow 黑秀网</a></li>
<li><a href="http://okvi.com/" target="_blank">OKVI 视觉联盟</a></li>
<li><a href="http://www.pstxg.com/" target="_blank">Pstxg 图像谷</a></li>
<li><a href="http://www.uecn.net/" target="_blank">UEcn 优易中国</a></li>
<li><a href="http://www.javaeye.com/forums/index" target="_blank">JavaEye总论坛</a></li>
<li><a href="http://www.uigarden.net/chinese/" target="_blank">UIGarden UI花园</a></li>
<li><a href="http://www.uxhome.com/" target="_blank">UXhome</a></li>
<li><a href="http://www.uxspace.com/" target="_blank">UXspace</a></li>
<li><a href="http://www.visionunion.com/" target="_blank">VisionUnion 视觉同盟</a></li>
<li><a href="http://www.zcool.com.cn/" target="_blank">Zcool 站酷</a></li>
<li><a href="http://www.accessifyforum.com/" target="_blank">Accessify Forum</a></li>
<li><a href="http://groups.google.com/group/UCDChina" target="_blank">UCDChina Group</a></li>
<li><a href="http://www.ucdcn.com/" target="_blank">UCDcn.com</a></li>
<li><a href="http://groups.google.com/group/DeDream" target="_blank">DeDream Group</a></li>
<li><a href="http://bbs.blueidea.com/" target="_blank">经典论坛</a></li>
<li><a href="http://www.im286.com/" target="_blank">落伍者站长论坛</a></li>
<li><a href="http://www.flashempire.net/" target="_blank">闪客帝国交流中心</a></li>
<li><a href="http://bbs.chinaddu.com/" target="_blank">设计中国论坛</a></li>
<li><a href="http://bbs.5d.cn/" target="_blank">5D互动论坛</a></li>
<li><a href="http://www.ucdchina.com/" target="_blank">UCDChina.com</a></li>
<li><a href="http://www.uichannel.com/" target="_blank">UIChannel.com</a></li>
<li><a href="http://www.uirss.com/" target="_blank">UIRSS.com</a></li>
<li><a href="http://www.accessify.com/" target="_blank">Accessify</a></li>
<li><a href="http://www.asktog.com" target="_blank">AskTog</a></li>
<li><a href="http://www.colourlovers.com/" target="_blank">COLOURlovers </a></li>
<li><a href="http://www.handheldusability.com/" target="_blank">Handheld Usability</a></li>
<li><a href="http://www.hcibib.org/" target="_blank">HCI Bibliography</a></li>
<li><a href="http://mashable.com/" target="_blank">Mashable</a></li>
<li><a href="http://mobhappy.com/blog1/" target="_blank">MobHappy</a></li>
<li><a href="http://www.nngroup.com/reports/" target="_blank">Nielsen Norman Group</a></li>
<li><a href="http://radar.oreilly.com/" target="_blank">O’Reilly Radar</a></li>
<li><a href="http://www.practicalpersonas.com" target="_blank">The User Is Always Right</a></li>
<li><a href="http://www.webaim.org" target="_blank">Web Accessibility in Mind</a></li>
<li><a href="http://www.webdesignpractices.com" target="_blank">Web Design Practices</a></li>
<li><a href="http://website-usability.info/" target="_blank">Website Usability Info</a></li>
<li><a href="http://www.webcredible.co.uk/" target="_blank">Webcredible</a></li>
<li><a href="http://www.usabilitynews.com/" target="_blank">Usability News</a></li>
<li><a href="http://www.uie.com/" target="_blank">User Interface Engineering</a></li>
<li><a href="http://www.uxmag.com/" target="_blank">UX Magazine</a></li>
<li><a href="http://www.uxmatters.com/" target="_blank">UXmatters</a></li>
<li><a href="http://www.zdnet.com" target="_blank">ZDNet</a></li>
<li><a href="http://iavoice.typepad.com/" target="_blank">IA Voice</a></li>
<li><a href="http://www.iainstitute.org/" target="_blank">IA Institute</a></li>
<li><a href="http://www.infodesign.com.au/default.asp" target="_blank">Information Design</a></li>
<li><a href="http://infosthetics.com/" target="_blank">Information aesthetics</a></li>
<li><a href="http://www.informationarchitects.jp/" target="_blank">Information Architects Japan </a></li>
<li><a href="http://www.informationdesign.org/" target="_blank">InfoDesign</a></li>
<li><a href="http://iachina.org" target="_blank">IAChina 中国信息架构兴趣小组</a></li>
<li><a href="http://www.alistapart.com/" target="_blank">A List Apart </a></li>
<li><a href="http://www.cssplay.co.uk/" target="_blank">CSSplay </a></li>
<li><a href="http://www.cssbeauty.com/" target="_blank">CSS Beauty </a></li>
<li><a href="http://www.css8.net/" target="_blank">CSS8.net</a></li>
<li><a href="http://www.artypapers.com/csshelppile/" target="_blank">CSS Help Pile </a></li>
<li><a href="http://www.evotech.net/blog/" target="_blank">CSS, JavaScript and XHTML Explained </a></li>
<li><a href="http://www.artypapers.com/csshelppile/" target="_blank">CSS Help Pile</a></li>
<li><a href="http://www.smileycat.com/design_elements/" target="_blank">Elements of Design</a></li>
<li><a href="http://www.htmldog.com/" target="_blank">HTML Dog</a></li>
<li><a href="http://www.maxdesign.com.au/" target="_blank">Max design </a></li>
<li><a href="http://www.smashingmagazine.com/" target="_blank">Smashing Magazine </a></li>
<li><a href="http://www.webstandards.org/" target="_blank">The Web Standards Project </a></li>
<li><a href="http://www.wpdfd.com/" target="_blank">Web Page Design for Designers </a></li>
<li><a href="http://www.w3.org/" target="_blank">World Wide Web Consortium </a></li>
<li><a href="http://www.webstyleguide.com/" target="_blank">Web Style Guide </a></li>
<li><a href="http://bestwebgallery.com/" target="_blank">Best Web Gallery</a></li>
<li><a href="http://www.csstux.com/" target="_blank">CSStux</a></li>
<li><a href="http://cssvault.com/" target="_blank">CSS Vault </a></li>
<li><a href="http://www.cssreboot.com/" target="_blank">CSS Reboot </a></li>
<li><a href="http://www.cssimport.com/" target="_blank">CSS Import</a></li>
<li><a href="http://bm.straightline.jp/" target="_blank">Straightline bookmark</a></li>
<li><a href="http://www.w3csites.com/" target="_blank">W3C Sites</a></li>
<li><a href="http://w3cs.com/" target="_blank">W3CS Sites</a></li>
<li><a href="http://wufoo.com/gallery/" target="_blank">Wufoo Form Gallery</a></li>
<li><a href="http://ui-patterns.com/" target="_blank">UI Patterns</a></li>
<li><a href="http://www.unmatchedstyle.com/" target="_blank">Unmatched style</a></li>
</ul>
<h3>CSS3</h3>
<ul>
<li><a href="http://www.css3.info/" target="_blank">CSS3.Info</a></li>
<li><a href="http://www.webmonkey.com/tutorial/Get_Started_with_CSS_3" target="_blank">Get Started with CSS 3</a></li>
<li><a href="http://www.w3.org/Style/CSS/current-work" target="_blank">Cascading Style Sheets Current Work</a></li>
<li><a href="http://www.css3.info/preview/border-image/" target="_blank">Border-image: Using Images for Your Border</a></li>
<li><a href="http://www.javascriptkit.com/dhtmltutors/structuralcss.shtml" target="_blank">Overview of CSS3 Structural Pseudo-Classes</a></li>
<li><a href="http://www.smashingmagazine.com/2009/01/08/push-your-web-design-into-the-future-with-css3/" target="_blank">Push Your Web Design Into The Future With CSS3</a></li>
<li><a href="http://westciv.com/iphonetests/" target="_blank">CSS3 Property Tests</a></li>
<li><a href="http://24ways.org/2006/rounded-corner-boxes-the-css3-way" target="_blank">Rounded Corner Boxes the CSS3 Way</a></li>
<li><a href="http://www.456bereastreet.com/archive/200601/css_3_selectors_explained/" target="_blank">CSS3 Selectors Explained</a></li>
<li><a href="http://www.cssportal.com/css3-preview/borders.htm" target="_blank">CSS3 Borders Preview</a></li>
<li><a href="http://css.flepstudio.org/en/css3/box-shadow.html" target="_blank">Box Shadow</a></li>
<li><a href="http://www.css3.info/a-mock-up-interface-using-css3-colour/" target="_blank">A Mock-Up Interface Using CSS3 Color</a></li>
<li><a href="http://www.css3.info/preview/rgba/" target="_blank">RGBA Colors</a></li>
<li><a href="http://css-tricks.com/overriding-the-default-text-selection-color-with-css/" target="_blank">Overriding the Default Text Selection Color with CSS</a></li>
<li><a href="http://www.zurb.com/article/266/super-awesome-buttons-with-css3-and-rgba" target="_blank">Super Awesome Buttons with CSS3 and RGBA</a></li>
<li><a href="http://www.zenelements.co.uk/blog/css3-multiple-columns/" target="_blank">CSS3 Multiple Columns</a></li>
<li><a href="http://jontangerine.com/log/2008/10/font-face-in-ie-making-web-fonts-work" target="_blank">@font-face in IE: Making Web Fonts Work</a></li>
<li><a href="http://dev.opera.com/articles/view/progressive-enhancement-with-css-3-a-be/" target="_blank">Progressive Enhancement with CSS3: A Better Experience for Modern Browsers</a></li>
<li><a href="http://www.zenelements.co.uk/blog/css3-rgba-color-opacity/" target="_blank">CSS3 RGBA</a></li>
<li><a href="http://www.exforsys.com/tutorials/css3/css3-opacity.html" target="_blank">CSS3 Opacity</a></li>
<li><a href="http://group.mind-productions.com/articles/multiple_backgrounds__css3_/" target="_blank">Multiple Backgrounds</a></li>
<li><a href="http://www.codenique.com/web_color/css3_color_names.php" target="_blank">CSS3 Color Names</a></li>
<li><a href="http://www.zenelements.co.uk/blog/css3-background-images/" target="_blank">CSS3 Background Images (Sizing and Multiple Images)</a></li>
<li><a href="http://www.w3.org/TR/css3-layout/" target="_blank">CSS Template Layout Module</a></li>
<li><a href="http://www.alistapart.com/articles/cssatten" target="_blank">CSS at Ten: The Next Big Thing</a></li>
<li><a href="http://www.webfonts.info/wiki/index.php?title=Fonts_available_for_%40font-face_embedding" target="_blank">Fonts Available for @font-face Embedding</a></li>
<li><a href="http://designshack.co.uk/tutorials/introduction-to-css3-part-5-multiple-columns" target="_blank">Introduction to CSS3—Part 5: Multiple Columns</a></li>
<li><a href="http://www.zenelements.co.uk/blog/css3-multiple-columns/" target="_blank">CSS3 Multiple Columns</a></li>
<li><a href="http://www.css3.info/preview/word-wrap/" target="_blank">Word-Wrap</a></li>
<li><a href="http://www.css3.info/liquid-faux-columns-with-background-size/" target="_blank">Liquid Faux Columns with Background-Size</a></li>
<li><a href="http://sixrevisions.com/interviews/six-questions-eric-meyer-on-css3/http:/sixrevisions.com/interviews/six-questions-eric-meyer-on-css3/" target="_blank">Six Questions: Eric Meyer on CSS3</a></li>
<li><a href="http://www.css3.info/semantic-code-put-more-in-get-more-out/" target="_blank">Semantic Code: Put More In, Get More Out</a></li>
<li><a href="http://idreamincode.co.uk/css/css3/the-css3-box-sizing-concept-a-solution-to-a-longstanding-problem" target="_blank">The CSS3 ‘Box-Sizing’ Concept</a></li>
<li><a href="http://www.netmag.co.uk/zine/develop/enhance-internal-page-links" target="_blank">Enhance Internal Page Links</a></li>
<li><a href="http://designshack.co.uk/tutorials/introduction-to-css3-part-4-user-interface" target="_blank">Introduction to CSS3—Part 4: User Interface</a></li>
<li><a href="http://www.marcofolio.net/webdesign/creating_a_polaroid_photo_viewer_with_css3_and_jquery.html" target="_blank">Creating a Polaroid Photo Viewer with CSS3 and jQuery</a></li>
<li><a href="http://www.css3.info/making-an-image-gallery-with-target/" target="_blank">Making an Image Gallery with :Target</a></li>
<li><a href="http://dev.opera.com/articles/view/styling-forms-with-attribute-selectors/" target="_blank">Styling Forms with Attribute Selectors—Part 1</a></li>
<li><a href="http://www.the-art-of-web.com/css/timing-function/" target="_blank">CSS: Transition Timing Functions</a></li>
<li><a href="http://css.maxdesign.com.au/listamatic2/horizontal01.htm" target="_blank">CSS3 Corporate Fun</a></li>
<li><a href="http://www.w3.org/International/articles/css3-text/" target="_blank">CSS3 and International Text</a></li>
<li><a href="http://blog.ph-creative.com/post/CSS-Trick-Hidden-Messages.aspx" target="_blank">CSS Trick: Hidden Messages</a></li>
<li><a href="http://craigmod.com/journal/font-face/" target="_blank">The Potential of Web Typography</a></li>
<li><a href="http://mattwilcox.net/archive/entry/id/1031/" target="_blank">The Fundamental Problems with CSS3</a></li>
<li><a href="http://www.smashingmagazine.com/2009/07/13/css-3-cheat-sheet-pdf/" target="_blank">CSS3 Cheat Sheet</a></li>
<li><a href="http://www.css3.info/html-5-css-3/" target="_blank">A Marriage Made in Heaven? HTML 5 and CSS3</a></li>
<li><a href="http://net.tutsplus.com/tutorials/html-css-techniques/html-5-and-css-3-the-techniques-youll-soon-be-using/" target="_blank">HTML 5 and CSS3: The Techniques You’ll Soon Be Using</a></li>
<li><a href="http://a.deveria.com/caniuse/" target="_blank">When Can I Use…</a></li>
<li><a href="http://perishablepress.com/press/2009/07/19/power-of-html5-css3/" target="_blank">The Power of HTML 5 and CSS3</a></li>
</ul>
<h3>HTML5</h3>
<ul>
<li><a href="http://html5gallery.com/" target="_blank">HTML5 Gallery</a></li>
<li><a href="http://www.alistapart.com/articles/previewofhtml5" target="_blank">A Preview of HTML 5</a></li>
<li><a href="http://html5demos.com/" target="_blank">HTML5 Demos and Examples</a></li>
<li><a href="http://www.sitepoint.com/article/html-5-snapshot-2009/" target="_blank">Yes, You Can Use HTML 5 Today!</a></li>
<li><a href="http://www.smashingmagazine.com/2009/07/06/html-5-cheat-sheet-pdf/" target="_blank">HTML 5 Cheat Sheet</a></li>
<li><a href="http://html5doctor.com/designing-a-blog-with-html5/" target="_blank">Designing a Blog with HTML 5</a></li>
<li><a href="http://www.smashingmagazine.com/2009/08/04/designing-a-html-5-layout-from-scratch/" target="_blank">Coding an HTML 5 Layout From Scratch</a></li>
<li><a href="http://html5doctor.com/html-5-boilerplates/" target="_blank">HTML 5 Boilerplates</a></li>
<li><a href="http://molly.com/html5/html5-0709.html" target="_blank">A Selection of Supported Features in HTML5</a></li>
<li><a href="http://boblet.tumblr.com/post/60552152/html5" target="_blank">HTML5 id/class Name Cheatsheet</a></li>
<li><a href="http://jontangerine.com/log/2008/03/preparing-for-html5-with-semantic-class-names" target="_blank">Preparing for HTML 5 with Semantic Class Names</a></li>
<li><a href="http://dev.opera.com/articles/view/html-5-canvas-the-basics/" target="_blank">HTML 5 Canvas—The Basics</a></li>
<li><a href="http://www.zeldman.com/2009/07/13/html-5-nav-ambiguity-resolved/" target="_blank">HTML 5: Nav Ambiguity Resolved</a></li>
<li><a href="http://html5doctor.com/html-5-xml-xhtml-5/" target="_blank">HTML 5 + XML = XHTML 5</a></li>
<li><a href="http://html5doctor.com/the-video-element/" target="_blank">The Video Element</a></li>
<li><a href="http://www.noupe.com/css3/css3-exciting-functions-and-features-30-useful-tutorials.html" target="_blank">CSS3 Exciting Functions and Features: 30+ Useful Tutorials</a></li>
<li><a href="http://carsonified.com/blog/design/30-essential-css3-resources/" target="_blank">30 Essential CSS3 Resources</a></li>
<li><a href="http://sixrevisions.com/css/20-useful-resources-for-learning-about-css3/" target="_blank">20 Useful Resources for Learning about CSS3</a></li>
<li><a href="http://www.w3avenue.com/2009/06/22/css3-unleashed-tips-tricks-and-techniques/" target="_blank">CSS3 Unleashed Tips, Tricks and Techniques</a></li>
<li><a href="http://speckyboy.com/2008/04/22/20-very-useful-css3-tutorials/" target="_blank">20 Very Useful CSS3 Tutorials</a></li>
<li><a href="http://html5doctor.com/" target="_blank">HTML5 Doctor</a></li>
<li><a href="http://www.cameronmoll.com/archives/2009/01/12_resources_for_html5/" target="_blank">12 Resources for Getting a Jump on HTML 5</a></li>
<li><a href="http://carsonified.com/blog/dev/html-5-dev/23-essential-html-5-resources/" target="_blank">23 Essential HTML 5 Resources</a></li>
</ul>
<h3>资源、实例</h3>
<ul>
<li><a href="http://www.alvit.de/handbook/" target="_blank">Web Developer’s</a></li>
<li><a href="http://www.dezwozhere.com/links.html" target="_blank">Holy CSS ZeldMan!</a></li>
<li><a href="http://pflaumenmus.pf.funpic.de/doku/doku.php?id=webdev:webdesign" target="_blank">webdev:webdesign</a></li>
<li><a href="http://www.intensivstation.ch/linklist/" target="_blank">intensivstation</a></li>
<li><a href="http://joeclark.org/standards/bookmarks/bookmarks-040526.html#ex26140_cNLV21" target="_blank">standards testing</a></li>
<li><a href="http://piepmatzel.de/" target="_blank">piepmatzel</a></li>
<li><a href="http://csscount.com/category?cid=3" target="_blank">csscount</a></li>
<li><a href="http://www.w3.org/" target="_blank">w3.org</a></li>
<li><a href="http://css-discuss.incutio.com/" target="_blank">FrontPage</a></li>
<li><a href="http://www.smashingmagazine.com/" target="_blank">smashingmagazine</a></li>
<li><a href="http://www.cssplay.co.uk/" target="_blank">cssplay</a></li>
<li><a href="http://www.pmob.co.uk/" target="_blank">CSS examples</a></li>
<li><a href="http://cssbeauty.com/" target="_blank">CSS beauty</a></li>
<li><a href="http://www.htmldog.com/" target="_blank">HTML &amp; CSS Tutorials</a></li>
<li><a href="http://www.dynamicdrive.com/" target="_blank">dynamicdrive</a></li>
<li><a href="http://www.w3schools.com/" target="_blank">w3schools</a></li>
<li><a href="http://csscreator.com/" target="_blank">CSS Creator</a></li>
<li><a href="http://www.w3school.com.cn/" target="_blank">w3school.com.cn</a></li>
<li><a href="http://www.intensivstation.ch/templates/" target="_blank">CSS Templates</a></li>
<li><a href="http://ideas.nty3.com/css-templates.html" target="_blank">12 Free CSS Templates</a></li>
<li><a href="http://www.css-garden.ch/css-designs.aspx" target="_blank">css-garden</a></li>
<li><a href="http://ajaxian.com/by/topic/css" target="_blank">Ajaxian</a></li>
<li><a href="http://www.dezinerfolio.com/" target="_blank">dezinerfolio</a></li>
<li><a href="http://www.studio7designs.com/" target="_blank">studio7designs</a></li>
</ul>
<h3>浏览器、调试插件</h3>
<ul>
<li><a href="http://cn.opera.com/download/" target="_blank">Opera浏览器下载</a></li>
<li><a href="http://www.opera.com/docs/specs/doctype/" target="_blank">The Opera 9 DOCTYPE Switches</a></li>
<li><a href="http://www.apple.com.cn/safari/download/" target="_blank">Safari浏览器下载</a></li>
<li><a href="http://www.mozilla.com/" target="_blank">Firefox浏览器下载</a></li>
<li><a href="http://developer.mozilla.org/Cn" target="_blank">Mozilla开发者中心</a></li>
<li><a href="http://addons.mozine.cn/" target="_blank">Firefox附加软件主页</a></li>
<li><a href="https://addons.mozilla.org/zh-CN/firefox/addon/1843" target="_blank">Firebug</a></li>
<li><a href="https://addons.mozilla.org/zh-CN/firefox/addon/60" target="_blank">Web Developer</a></li>
<li><a href="https://addons.mozilla.org/zh-CN/firefox/addon/5369" target="_blank">YSlow</a></li>
<li><a href="https://addons.mozilla.org/zh-CN/firefox/addon/1802" target="_blank">X-Ray</a></li>
<li><a href="http://www.google.com/chrome/" target="_blank">Chrome浏览器下载</a></li>
<li><a href="http://www.microsoft.com/windows/products/winfamily/ie/ie8/readiness/Install.htm" target="_blank">IE8浏览器下载</a></li>
<li><a href="http://www.microsoft.com/windows/downloads/ie/getitnow.mspx" target="_blank">IE7浏览器下载</a></li>
<li><a href="http://tredosoft.com/Multiple_IE" target="_blank">IE绿色版合集</a></li>
<li><a href="http://msdn.microsoft.com/zh-cn/ie/default.aspx" target="_blank">Internet Explorer 开发者资源</a></li>
<li><a href="http://msdn.microsoft.com/zh-cn/library/cc351024(en-us).aspx" target="_blank">CSS Compatibility&amp;IE</a></li>
<li><a href="http://www.my-debugbar.com/wiki/IETester/HomePage" target="_blank">IETester</a></li>
<li><a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=e59c3964-672d-4511-bb3e-2d5e1db91038&amp;displaylang=en" target="_blank">Developer Toolbar</a></li>
<li><a href="http://www.microsoft.com/Downloads/details.aspx?familyid=2F465BE0-94FD-4569-B3C4-DFFDF19CCD99&amp;displaylang=en" target="_blank">Script Debugger</a></li>
<li><a href="http://www.my-debugbar.com/wiki/CompanionJS/HomePage" target="_blank">CompanionJS </a></li>
</ul>
<h3>工具、手册</h3>
<ul>
<li><a href="http://www.w3.org/html/wg/html5/" target="_blank">HTML5 工作草案</a></li>
<li><a href="http://www.w3school.com.cn/html5/index.asp" target="_blank">HTML 5 参考手册</a></li>
<li><a href="http://www.w3school.com.cn/tags/index.asp" target="_blank">XHTML 1.0 参考手册</a></li>
<li><a href="http://webteam.tencent.com/css3/" target="_blank">CSS3中文手册</a></li>
<li><a href="http://www.chinaue.com/tool/css/" target="_blank">CSS2中文手册</a></li>
<li><a href="http://www.w3.org/TR/css3-selectors/" target="_blank">CSS3 选择符</a></li>
<li><a href="http://www.w3school.com.cn/htmldom/htmldom_reference.asp" target="_blank">HTML DOM 参考手册</a></li>
<li><a href="http://www.chinaue.com/tool/myjs/" target="_blank">JavaScript脚本</a></li>
<li><a href="http://www.chinaue.com/tool/jscript/" target="_blank">JScript手册</a></li>
<li><a href="http://www.chinaue.com/tool/xml/xml_cn/" target="_blank">XML手册</a></li>
<li><a href="http://www.w3school.com.cn/php/index.asp" target="_blank">PHP 参考手册</a></li>
<li><a href="http://www.chinaue.com/tool/vbs/" target="_blank">VBScript手册</a></li>
<li><a href="http://pxtoem.com/" target="_blank">PXtoEM(单位换算)</a></li>
<li><a href="http://www.cssoptimiser.com/" target="_blank">cssoptimiser</a></li>
<li><a href="http://www.cleancss.com/" target="_blank">CSS在线优化</a></li>
<li><a href="http://flumpcakes.co.uk/css/optimiser/" target="_blank">CSS压缩优化</a></li>
<li><a href="http://www.855.cn/tools/CssDiver.asp" target="_blank">855_CSS在线压缩工具</a></li>
<li><a href="http://isnoop.net/tools/css.php" target="_blank">CSS SuperScrub</a></li>
</ul>
<h3>xHTML、CSS、RDF、RSS、WAI、508-Validatoren</h3>
<ul>
<li><a href="http://validator.w3.org/" target="_blank">W3C Validator</a></li>
<li><a href="http://www.htmlhelp.com/tools/validator/" target="_blank">WDG HTML</a></li>
<li><a href="http://valet.webthing.com/page/" target="_blank">Webthing Page Valet</a></li>
<li><a href="http://htmlvalidator.com/" target="_blank">CSE HTML Validator</a></li>
<li><a href="http://www.alpdev.com/.docs/pg/drhtml.html" target="_blank">Alpine HTML Doctor</a></li>
<li><a href="http://validator.de.selfhtml.org/" target="_blank">Selfhtml-Validator (Validrome)</a></li>
<li><a href="http://www.validome.org/" target="_blank">Validrome-Validator</a></li>
<li><a href="http://schneegans.de/sv/" target="_blank">schneegans.de-Validator</a></li>
<li><a href="http://jigsaw.w3.org/css-validator/" target="_blank">W3C CSS (jigsaw)</a></li>
<li><a href="http://www.htmlhelp.com/tools/csscheck/" target="_blank">WDG CSS Check</a></li>
<li><a href="http://www.w3.org/RDF/Validator/" target="_blank">W3C RDF</a></li>
<li><a href="http://www.redland.opensource.ac.uk/rss/" target="_blank">Redland RSS Validator and Viewer</a></li>
<li><a href="http://feeds.archive.org/" target="_blank">Pilgrim RSS Validator</a></li>
<li><a href="http://aggregator.userland.com/validator" target="_blank">Userland RSS Validator</a></li>
<li><a href="http://www.xml.com/pub/a/tools/ruwf/check.html" target="_blank">RUWF XML SyntaxChecker</a></li>
<li><a href="http://valet.webthing.com/access/url.html" target="_blank">WebThing Accessibility Valet</a></li>
<li><a href="http://bobby.watchfire.com/bobby/" target="_blank">‘Bobby’-Watchfire</a></li>
<li><a href="http://www.tawdis.net/index2.htm" target="_blank">FICYT.a.w</a></li>
<li><a href="http://www.wave.webaim.org/index.jsp" target="_blank">Piat Wave 3.0</a></li>
<li><a href="http://www.contentquality.com/fulloptions.asp" target="_blank">Cynthia Says</a></li>
<li><a href="http://colorfilter.wickline.org/" target="_blank">Colorblind Webpage Filter</a></li>
<li><a href="http://www.vischeck.com/index.php" target="_blank">VISCHECK: Check der Farbkontraste</a></li>
<li><a href="http://www.csufresno.edu/" target="_blank">Web Access Evaluation Tool</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.fangyuqiang.com/tech/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SourceForge界面大变化，YUI grid css亮相</title>
		<link>http://www.fangyuqiang.com/archives/475</link>
		<comments>http://www.fangyuqiang.com/archives/475#comments</comments>
		<pubDate>Mon, 10 Aug 2009 07:15:55 +0000</pubDate>
		<dc:creator>fangyuqiang</dc:creator>
				<category><![CDATA[Html+CSS]]></category>
		<category><![CDATA[YUI CSS]]></category>
		<category><![CDATA[Blueprints]]></category>
		<category><![CDATA[jQuery]]></category>

		<guid isPermaLink="false">http://www.fangyuqiang.com/?p=475</guid>
		<description><![CDATA[很久之前就知道SourceForge界面做了大的变化，确实变得非常的NICE，用着很爽。这2天无意中用firebug看了下，惊奇的发现居然是用YUI grid css来做的，JavaScript用的是jquery。 我也用yui做过几个项目，yui提供的快速布局工具确实可以很快的生成布局。不过总觉得有缺憾，也找不到一个很好的网站使用yui grid css做的，SourceForge确实让我惊艳了。。因为原来用yui grid做的时候，发现它的布局太死板，没办法做细节调整，后来我就投奔blueprints阵容了，不过，专业级的人物果然不一样，死板的布局一样可以做出像SourceForge现在这样强大的界面。 点击可以查看下新版的SourceForge： http://sourceforge.net/ 不过，说实话，还是blueprints更好用，它对界面布局的颗粒度更细，更自由。从blueprints提供的理念来做，理论上可以做出任意大小栅格的布局的。而这点，yui grid很难。]]></description>
			<content:encoded><![CDATA[<p>很久之前就知道SourceForge界面做了大的变化，确实变得非常的NICE，用着很爽。这2天无意中用firebug看了下，惊奇的发现居然是用<a href="http://developer.yahoo.com/yui/grids/">YUI grid css</a>来做的，JavaScript用的是jquery。<span id="more-475"></span></p>
<p>我也用yui做过几个项目，yui提供的快速布局工具确实可以很快的生成布局。不过总觉得有缺憾，也找不到一个很好的网站使用yui grid css做的，SourceForge确实让我惊艳了。。因为原来用yui grid做的时候，发现它的布局太死板，没办法做细节调整，后来我就投奔<a href="http://www.blueprintcss.org/">blueprints</a>阵容了，不过，专业级的人物果然不一样，死板的布局一样可以做出像SourceForge现在这样强大的界面。</p>
<p>点击可以查看下新版的SourceForge：<br />
<a href="http://sourceforge.net/">http://sourceforge.net/</a></p>
<p>不过，说实话，还是blueprints更好用，它对界面布局的颗粒度更细，更自由。从blueprints提供的理念来做，理论上可以做出任意大小栅格的布局的。而这点，yui grid很难。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.fangyuqiang.com/archives/475/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>jquery官网怎么搞的，那么明显的错误都不改一下</title>
		<link>http://www.fangyuqiang.com/archives/201</link>
		<comments>http://www.fangyuqiang.com/archives/201#comments</comments>
		<pubDate>Mon, 01 Dec 2008 08:27:18 +0000</pubDate>
		<dc:creator>fangyuqiang</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[jQuery]]></category>

		<guid isPermaLink="false">http://playfish.javaeye.com/blog/284127</guid>
		<description><![CDATA[如图，经常上jquery的官方去查api，很早就发现它的tab的那个标签有问题，新版的css会导致它多出0.5em的一个margin，使得tab都浮起来了，看起来很不顺，我说jquery每天多少人访问啊，它干嘛就不修正一下。。根本不会超过5分钟的事情！ 想说的一个主要的问题：这么大的网站，是什么人在负责维护的？]]></description>
			<content:encoded><![CDATA[<p>如图，经常上jquery的官方去查api，很早就发现它的tab的那个标签有问题，新版的css会导致它多出0.5em的一个margin，使得tab都浮起来了，看起来很不顺，我说jquery每天多少人访问啊，它干嘛就不修正一下。。根本不会超过5分钟的事情！<span id="more-201"></span></p>
<p><img src="/upload/attachment/54918/91d267ad-c423-3a31-bdd2-090e597949be.jpg" alt="" /></p>
<p>想说的一个主要的问题：这么大的网站，是什么人在负责维护的？</p>
]]></content:encoded>
			<wfw:commentRss>http://www.fangyuqiang.com/archives/201/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>玩玩webgame开发（3）：自动战斗实现以及一些游戏细节（下）</title>
		<link>http://www.fangyuqiang.com/archives/204</link>
		<comments>http://www.fangyuqiang.com/archives/204#comments</comments>
		<pubDate>Fri, 14 Nov 2008 14:12:30 +0000</pubDate>
		<dc:creator>fangyuqiang</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[webgame]]></category>

		<guid isPermaLink="false">http://playfish.javaeye.com/blog/267275</guid>
		<description><![CDATA[战斗过程图示意： [img]/upload/attachment/50153/d795065a-57e8-343c-9b37-8d1f27bfe3c8.jpg&#8221; alt=&#8221;[/img] 在《自动战斗实现以及一些游戏细节》的上一篇里面介绍了游戏人物战斗属性的设计以及战斗的触发，本章节是一个重点，主要介绍战斗过程的一系列函数与算法的实现。 本作的一个基本的思路很简单： 伤害 = 攻击-防御 速度决定攻击的间隔，其值为最大速度-速度，比如最大速度设置为12，那攻击间隔就是12-3 =9.也就是9秒发动一次攻击。 幸运决定了暴击跟躲闪，如果躲闪，伤害为0，如果暴击，伤害为攻击*2-防御 双方有任何一方HP小于0，则认为战斗结束，如果双方HP都不小于0结束战斗，即战斗中断，则判断人物逃跑，扣除一次攻击的hp。来看看在上篇就给出的代码： 这段代码前面主要是拼凑一个时间戳，类似[00:00]的格式。值得注意的地方在于下面的动作进度条，这个进度条是每秒推进一次，可以很直观的让用户感觉到战斗的过程。实现算是一个小小的技巧： 2个div都设置成绿色的背景，初始的css设置宽度为0。宝宝需要9秒进度条才会满，怪物需要7秒，满之前显示的就是进度的百分比。比如战斗进行了4秒，宝宝显示的进度的长度应该是4/9，而怪物是4/7。据此，temp是战斗时间对宝宝速度的求余操作，每次过9秒宽度就要从0开始。注意的是到9秒的时候进度是满的，求余结果是0，所以要进行一个判断。 接下来是一个核心部分，双方发动攻击的代码： 我这里用的是setInterval(function(){},boboSpeed*1000)这样的方式，就是按照宝宝的速度定时发动攻击。注意setInterval在没有进行clear之前是一直执行的。因为设计的初衷是给自家MM玩，战斗过程不要人操作，遇到怪物就直接开打一直到结束。如果你要要进行攻击设定，可能用setTimeout程序控制战斗过程更合适。 战斗逻辑部分的处理是这样的：根据对方的幸运判断对方躲闪，没有躲闪的话，根据自己幸运判断自己是否出现暴击。这里有个隐藏的bug陷阱，由于伤害是简单的攻击-防御来计算的，如果不加判断，遇到敌人的防御大于攻击的情况，那每次攻击没伤害还会让敌人的hp增加。所以damage的计算要有这个考虑。另外，hp是不能小于0的，这个也有考虑到。 战斗结束后一定要记得清除所有的定时任务，否则会在后台不断运行。这个是宝宝对怪物进行攻击的实现。怪物对宝宝进行攻击基本相同，不再赘述。 接下来看看战斗结束部分。战斗的结束主要要进行的一些动作包括：对一些临时的数据进行清除，判断战斗结果，数据重置等。战斗的结束分为2种，一种是中断逃跑，一种是完全结束，一方阵亡。对于中断逃跑的情况： 注释部分基本做了流程的概括。需要注意的一点是，如果战斗是中断的，那么宝宝跟怪兽都要回到原来的格子上面，所以战斗前要保存宝宝原来的位置的值。而如果战斗进行到底的话，肯定会有一方阵亡。宝宝赢了就占据当前格，输了则直接被移除，就不存在这个问题。 完全结束，一方阵亡的情况基本是相同的流程，只是少了逃跑惩罚以及位置回复。 战斗部分完整的代码在上一篇的最后有给出，可以点击这里查看http://playfish.javaeye.com/blog/265264 本章的最后介绍一下在上面代码里面出现的一些很重要的函数， 这个函数的作用就是拼凑出战斗信息字符串，如开头的示意图所示。函数的最后使用了$(&#8220;#battleInfo&#8221;)[0].scrollTop = 10000;来使得滚动条保持在最底部，现实的效果就是战斗信息会自动往下滚，不然战斗信息多了以后还要手动的下拉滚动条。 在整个程序中大量的用到了jquery的attr函数，稍微做一下介绍，attr支持对dom的属性进行获取跟设置，本代码里面大部分应用都是用来修改宝宝与怪物在各种情况下的表情，例如战斗最后结束，胜利的一方会摆出胜利的表情，而失败会摆出郁闷的表情。 宝宝攻击被躲闪的表情： 另外一个重要的函数是战斗结果的函数，目前还不完整，还缺少了获得战利品跟经验等级的实现。 战斗部分就暂时介绍到这里。以后再下去的部分会介绍物品的设计实现，以及对之前的介绍过的地图设计实现做一些补充，增加了地图障碍实现等。]]></description>
			<content:encoded><![CDATA[<p>战斗过程图示意：</p>
<p>[img]/upload/attachment/50153/d795065a-57e8-343c-9b37-8d1f27bfe3c8.jpg&#8221; alt=&#8221;[/img]</p>
<p>在《自动战斗实现以及一些游戏细节》的上一篇里面介绍了游戏人物战斗属性的设计以及战斗的触发，本章节是一个重点，主要介绍战斗过程的一系列函数与算法的实现。<br />
<span id="more-204"></span><br />
本作的一个基本的思路很简单：</p>
<p>伤害 = 攻击-防御</p>
<p>速度决定攻击的间隔，其值为最大速度-速度，比如最大速度设置为12，那攻击间隔就是12-3 =9.也就是9秒发动一次攻击。</p>
<p>幸运决定了暴击跟躲闪，如果躲闪，伤害为0，如果暴击，伤害为攻击*2-防御</p>
<p>双方有任何一方HP小于0，则认为战斗结束，如果双方HP都不小于0结束战斗，即战斗中断，则判断人物逃跑，扣除一次攻击的hp。来看看在上篇就给出的代码：</p>
<pre class="java"><!--mce:0--></pre>
<p>这段代码前面主要是拼凑一个时间戳，类似[00:00]的格式。值得注意的地方在于下面的动作进度条，这个进度条是每秒推进一次，可以很直观的让用户感觉到战斗的过程。实现算是一个小小的技巧：</p>
<p>2个div都设置成绿色的背景，初始的css设置宽度为0。宝宝需要9秒进度条才会满，怪物需要7秒，满之前显示的就是进度的百分比。比如战斗进行了4秒，宝宝显示的进度的长度应该是4/9，而怪物是4/7。据此，temp是战斗时间对宝宝速度的求余操作，每次过9秒宽度就要从0开始。注意的是到9秒的时候进度是满的，求余结果是0，所以要进行一个判断。</p>
<p>接下来是一个核心部分，双方发动攻击的代码：</p>
<pre class="javascript"><!--mce:1--></pre>
<p>我这里用的是setInterval(function(){},boboSpeed*1000)这样的方式，就是按照宝宝的速度定时发动攻击。注意setInterval在没有进行clear之前是一直执行的。因为设计的初衷是给自家MM玩，战斗过程不要人操作，遇到怪物就直接开打一直到结束。如果你要要进行攻击设定，可能用setTimeout程序控制战斗过程更合适。</p>
<p>战斗逻辑部分的处理是这样的：根据对方的幸运判断对方躲闪，没有躲闪的话，根据自己幸运判断自己是否出现暴击。这里有个隐藏的bug陷阱，由于伤害是简单的攻击-防御来计算的，如果不加判断，遇到敌人的防御大于攻击的情况，那每次攻击没伤害还会让敌人的hp增加。所以damage的计算要有这个考虑。另外，hp是不能小于0的，这个也有考虑到。</p>
<p>战斗结束后一定要记得清除所有的定时任务，否则会在后台不断运行。这个是宝宝对怪物进行攻击的实现。怪物对宝宝进行攻击基本相同，不再赘述。</p>
<p>接下来看看战斗结束部分。战斗的结束主要要进行的一些动作包括：对一些临时的数据进行清除，判断战斗结果，数据重置等。战斗的结束分为2种，一种是中断逃跑，一种是完全结束，一方阵亡。对于中断逃跑的情况：</p>
<pre class="javascript"><!--mce:2--></pre>
<p>注释部分基本做了流程的概括。需要注意的一点是，如果战斗是中断的，那么宝宝跟怪兽都要回到原来的格子上面，所以战斗前要保存宝宝原来的位置的值。而如果战斗进行到底的话，肯定会有一方阵亡。宝宝赢了就占据当前格，输了则直接被移除，就不存在这个问题。</p>
<p>完全结束，一方阵亡的情况基本是相同的流程，只是少了逃跑惩罚以及位置回复。</p>
<p>战斗部分完整的代码在上一篇的最后有给出，可以点击这里查看<a href="http://playfish.javaeye.com/blog/265264" target="_blank">http://playfish.javaeye.com/blog/265264</a></p>
<p>本章的最后介绍一下在上面代码里面出现的一些很重要的函数，</p>
<pre class="javascript"><!--mce:3--></pre>
<p>这个函数的作用就是拼凑出战斗信息字符串，如开头的示意图所示。函数的最后使用了$(&#8220;#battleInfo&#8221;)[0].scrollTop = 10000;来使得滚动条保持在最底部，现实的效果就是战斗信息会自动往下滚，不然战斗信息多了以后还要手动的下拉滚动条。</p>
<p>在整个程序中大量的用到了jquery的attr函数，稍微做一下介绍，attr支持对dom的属性进行获取跟设置，本代码里面大部分应用都是用来修改宝宝与怪物在各种情况下的表情，例如战斗最后结束，胜利的一方会摆出胜利的表情，而失败会摆出郁闷的表情。</p>
<p>宝宝攻击被躲闪的表情：</p>
<p><img src="/upload/attachment/50171/962ee186-9b9f-3624-8ed6-4cc149e543a0.jpg" alt="" /></p>
<p>另外一个重要的函数是战斗结果的函数，目前还不完整，还缺少了获得战利品跟经验等级的实现。</p>
<pre class="javascript"><!--mce:4--></pre>
<p>战斗部分就暂时介绍到这里。以后再下去的部分会介绍物品的设计实现，以及对之前的介绍过的地图设计实现做一些补充，增加了地图障碍实现等。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.fangyuqiang.com/archives/204/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>玩玩webgame开发（3）：自动战斗实现以及一些游戏细节（上）</title>
		<link>http://www.fangyuqiang.com/archives/206</link>
		<comments>http://www.fangyuqiang.com/archives/206#comments</comments>
		<pubDate>Mon, 10 Nov 2008 15:14:43 +0000</pubDate>
		<dc:creator>fangyuqiang</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[webgame]]></category>

		<guid isPermaLink="false">http://playfish.javaeye.com/blog/265264</guid>
		<description><![CDATA[国际惯例，先上个效果图： 战斗部分的实现应该是游戏里最复杂的部分，具体实现我的小游戏还没做完整，这里只是给出一些我的思路和做法。 战斗部分很复杂，全文大概分成以下几点： 战斗属性设置 战斗触发 战斗过程（重点） 战斗结束 由于游戏初衷是给我家MM玩的，所以过程都设置得很简单，宝宝跟怪物遇上，就自动开打，战斗过程全部自动，根据双方的速度定时发动攻击。 宝宝的战斗属性我的设置如下 var bobo = { pos : {X:1, Y:1}, //地图上的坐标位置 name : '辛德瑞拉 杰克罗琳', //宝宝的名字，GF喜欢个这么拉风的。。。 hp : 100, //full hp curHp : 100, //current hp level : 0, //等级 exp : 0, //经验 ap : 15, //攻击力attack power def : 1, //防御力defence speed : 3, //速度 luck [...]]]></description>
			<content:encoded><![CDATA[<p>国际惯例，先上个效果图：</p>
<div id="attachment_470" class="wp-caption alignnone" style="width: 633px"><img class="size-full wp-image-470" title="webgame自动战斗实现" src="http://www.fangyuqiang.com/wp-content/uploads/2008/11/f8f832f4-057e-3493-9871-9aaa69b038a1.jpg" alt="webgame自动战斗实现" width="623" height="371" /><p class="wp-caption-text">webgame自动战斗实现</p></div>
<p>战斗部分的实现应该是游戏里最复杂的部分，具体实现我的小游戏还没做完整，这里只是给出一些我的思路和做法。<span id="more-206"></span></p>
<p>战斗部分很复杂，全文大概分成以下几点：</p>
<ul>
<li>战斗属性设置</li>
<li>战斗触发</li>
<li>战斗过程（重点）</li>
<li>战斗结束</li>
</ul>
<p>由于游戏初衷是给我家MM玩的，所以过程都设置得很简单，宝宝跟怪物遇上，就自动开打，战斗过程全部自动，根据双方的速度定时发动攻击。</p>
<p>宝宝的战斗属性我的设置如下</p>
<pre class="js" title="code">var bobo = {
	pos		:	{X:1,	Y:1},        //地图上的坐标位置
	name	:	'辛德瑞拉 杰克罗琳',    //宝宝的名字，GF喜欢个这么拉风的。。。
	hp		:	100,	                       //full hp
	curHp	:	100,	                       //current hp
	level	:	0,			               //等级
	exp		:	0,                           //经验
	ap		:	15,		              //攻击力attack power
	def		:	1,		              //防御力defence
	speed	:	3,		              //速度
	luck	:	15,                                 //幸运
	eyeshot	:	2,		              //视野
	type	:	'bobo',                           //类型，用于区分怪兽，宝宝，NPC
	file	:	'baozi'                            //文件名称
};</pre>
<p>怪物的属性基本跟这个类似。但是不同的是，一个地图上可能有多种多样的怪物，所以怪物我使用对象数组来保存：</p>
<pre class="javascript" title="code">var monsters = [
		{
			pos:{	X:1,	Y:8	},
			name:'青蛙',	hp:30, curHp:30, level:0,
			exp:0,	ap:10,	def:0,	speed:5,
			luck:15,	type:'monster',	file:'qingwa'
		},
		{
			pos:{	X:5,	Y:6	},
			name:'青蛙',	hp:30,	curHp:30,	level:0,
			exp:0,	ap:20,	def:0,	speed:5,
			luck:15,	type:'monster',	file:'qingwa'
		},
		{
			pos:{	X:4,	Y:5	},
			name:'青蛙',	hp:130,	curHp:30,	level:0,
			exp:0,	ap:5,	def:0,	speed:5,
			luck:15,	type:'monster',	file:'qingwa'
		},
		{
			pos:{	X:10,	Y:9	},
			name:'青蛙',	hp:50,	curHp:30,	level:0,
			exp:0,	ap:20,	def:0,	speed:5,
			luck:15,	type:'monster',	file:'qingwa'
		}
];</pre>
<p>当然，如果以后做成了多人互动，也可以将宝宝改成使用对象数组来保存。</p>
<p>有了这样的数据结构后，还需要将这样的数据结构转化为页面上的表现形式。比如宝宝要变成页面上的一个图片，怪物要变成在各个地点散落出现的图片。这就需要一个将数组转化为html元素的过程。这个过程我是采用jquery的map函数实现的。</p>
<pre class="javascript" title="code">//将所有怪物对象转换为jQuery的img对象
var monstersFace = $.map(monsters,function(i){
	return $('<img class="monster" title="'+i.name+'" src="images/'+i.type+'/'+i.file+'/lv'+i.level+'/common.gif" alt="" />');
});</pre>
<p>map的作用，就是将一个数组映射为另一个数组返回。这里就省却了我们自己不少功夫。关于jquery的map具体说明可以参看<a href="http://docs.jquery.com/Utilities/jQuery.map#arraycallback" target="_blank">http://docs.jquery.com/Utilities/jQuery.map#arraycallback</a></p>
<p>在开发篇的2已经提到了如果将这些对象插入到地图中，这里不再重复。接下来介绍下战斗如何触发以及如何进行。</p>
<p>战斗的触发设定我的实现是：每次宝宝移动，都判断当前坐标上面的图片数目，如果图片为2，即宝宝跟怪物在同一个格子上面，那么触发战斗。用jquery的方式实现就很简单了</p>
<pre class="javascript" title="code">	var curPosObj = $("#"+"X"+curPos.X+"Y"+curPos.Y); //当前坐标对象

	if($(curPosObj).find('img').length &gt; 1 ){              //如果有2张图片
		var obj = $(curPosObj).find('img').get(0);   //获得第一张
		switch(obj.className){                             //使用classname来区分图片是怪物还是物品，物品功能将在以后介绍
			case "monster": //与怪物战斗
				battle(curPos,prePos);
				break;
			case "item":	  //获得物品
				getItem(curPos);
				break;
		}
	}</pre>
<p>触发了战斗后，开打。开篇的效果图就是开打后的效果，相信大家对thickbox的效果都很熟悉了，不过这个使用jquery的另一个插件blockUI实现的，因为觉得这个界面的定制性更强一些。关于jquery的blockUI插件：<a href="http://malsup.com/jquery/block/#overview" target="_blank">http://malsup.com/jquery/block/#overview</a></p>
<p>进入战斗：</p>
<pre class="js" title="code">	var curPosObj = $("#"+"X"+curPos.X+"Y"+curPos.Y);   //当前战斗坐标
	var prePosObj = $("#"+"X"+prePos.X+"Y"+prePos.Y); //战斗前宝宝的位置

	var boboFace = $(curPosObj).find('img').get(1);
	var monsterFace = $(curPosObj).find('img').get(0);
	$('#boboFace').append(boboFace);          //将宝宝的头像设置到战斗画面中
	$('#monsterFace').append(monsterFace);//怪物的头像设置

	var monster = getObjByPos(curPos.X,curPos.Y,'monster');

	setBattleValue('monster', monster); //将宝宝的战斗信息设置到战斗画面中
	setBattleValue('bobo', bobo);           //怪物的战斗信息设置

	//利用blockUI显示战斗画面
	$.blockUI({
		message	: 	$('#battle') ,
		css		: 	{
						top		:	'15%',
						width 	:	'60%',
						left	:	'20%',
						cursor	:	'default'
					}
	});</pre>
<p>战斗部分应该说是一个大难点，篇幅也比较长，时间关系，所以本篇分成了上下2篇，我有时间就继续往下写。等不及的同志可以先玩味下代码，下篇我就继续介绍的战斗实现的一些细节。主要是战斗过程以及战斗结束的处理。</p>
<pre class="javascript" title="code">	//开始战斗，当前双方hp都大于0
	if(bobo.curHp &gt;0 || monster.curHp &gt; 0 ){

		var boboWin = true;
		var timer = 0;				//战斗计时
		var timerStr = '[00:00]';	//显示时间字符串

		sysBattleMessage('战斗开始');

		var boboSpeed = maxSpeed-bobo.speed;		//宝宝速度计算
		var monsterSpeed = maxSpeed-monster.speed;	//怪物速度计算

		var battleTimer=setInterval(function(){		//计时，定时显示信息
			var s = timer%60;
			var m = Math.floor(timer/60);
			if (s&lt;10) {
				s = "0" + s;
			}
			if(m&lt;10){
				m = "0" + m;
			}
			timerStr = '['+m+':'+s+']';

			//显示宝宝动作进度条
			var temp = (timer+1)%boboSpeed == 0  ? boboSpeed : (timer+1)%boboSpeed;
			$('#boboAction').width(temp/boboSpeed*100+'%');
			//显示怪物动作进度条
			temp = (timer+1)%monsterSpeed == 0 ? monsterSpeed : (timer+1)%monsterSpeed;
			$('#monsterAction').width(temp/monsterSpeed*100+'%');
			//计时增加
			timer++;
		},1000);

		//宝宝定时发动攻击
		var attackMonsterT = setInterval(function(){

			//战斗模式，先判断对方躲闪，如果躲闪，此次攻击无效
			var dodge =  Math.floor(Math.random()*100) &lt; monster.luck;	//躲闪

			if(dodge){
				battleMessage(bobo,monster,'dodge',0,timerStr,monster.curHp);
			}
			else{
				var crit = Math.floor(Math.random()*100) &lt; bobo.luck;	//暴击判断，返回bool值 				 				var damage = bobo.ap*(Number(crit)+1) - monster.def &gt; 0 ? bobo.ap*(Number(crit)+1) - monster.def : 0;

				monster.curHp -= damage;

				if(monster.curHp &lt; 0 ){
					monster.curHp = 0;
				}

				//显示战斗信息
				battleMessage(bobo,monster,crit?'crit':'common',damage,timerStr,monster.curHp);

				//战斗结束，清除所有定时任务
				if(monster.curHp &lt;=0){
					clearInterval(attackMonsterT);
					clearInterval(attackBoboT);
					clearInterval(battleTimer);
					battleOver(boboWin,monster);
				}
			}
		},boboSpeed*1000);

		//怪物定时发动攻击
		var attackBoboT = setInterval(function(){

			var dodge =  Math.floor(Math.random()*100) &lt; bobo.luck;	//躲闪

			if(dodge){
				battleMessage(monster,bobo,'dodge',0,timerStr,bobo.curHp);
			}
			else{
				var crit = Math.floor(Math.random()*100) &lt; monster.luck;	//暴击 				 				var damage = monster.ap*(Number(crit)+1) - bobo.def &gt; 0 ? monster.ap*(Number(crit)+1) - bobo.def : 0;

				bobo.curHp -= damage;

				if(bobo.curHp &lt; 0){
					bobo.curHp = 0;
				}

				battleMessage(monster,bobo,crit?'crit':'common',damage,timerStr,bobo.curHp);

				if(bobo.curHp &lt;=0){ 					clearInterval(attackMonsterT); 					clearInterval(attackBoboT); 					clearInterval(battleTimer); 					boboWin = false; 					battleOver(boboWin,monster); 				} 			} 		},monsterSpeed*1000); 	} 	 	$('#battleCloseIcon').click(function(){ 		if(bobo.curHp&gt;0
		&amp;&amp; monster.curHp&gt;0
		&amp;&amp; confirm('战斗还未结束，逃跑将被怪兽追击，确定宝宝要逃跑吗？')){		//战斗未结束
			$.unblockUI({
                onUnblock: function(){
						bobo.curHp = bobo.curHp - monster.ap &gt;0?bobo.curHp - monster.ap : 1;
						clearInterval(attackMonsterT);
						clearInterval(attackBoboT);
						clearInterval(battleTimer);
						$('#battleInfo').html('');	//清空战斗信息
						$('#monsterFace').empty();	//清空头像

						$('#boboAction').width('0%');	//重置战斗计时
						$('#monsterAction').width('0%');

						//将图片改为普通图片，占据位置
						$(boboFace).attr({
							src:'images/'+bobo.type+'/'+bobo.file+'/'+'lv'+bobo.level+'/common.gif'
						});
						$(prePosObj).append(boboFace);
						//设置坐标
						bobo.pos.X = prePos.X;
						bobo.pos.Y = prePos.Y;
						//怪兽图片
						$(monsterFace).attr({
							src:'images/'+monster.type+'/'+monster.file+'/'+'lv'+monster.level+'/common.gif'
						});
						$(curPosObj).append(monsterFace);
						$("#battleCloseIcon").unbind( "click" );
					}
				});
			}
			else{
			$.unblockUI({
                onUnblock: function(){
					clearInterval(attackMonsterT);
					clearInterval(attackBoboT);
					clearInterval(battleTimer);
					$('#battleInfo,#monsterFace').empty();	//清空战斗信息

					$('#boboAction').width('0%');	//重置战斗计时
					$('#monsterAction').width('0%');

					//将图片改为普通图片，占据位置
					if(boboWin){
						$(boboFace).attr({
							src:'images/'+bobo.type+'/'+bobo.file+'/'+'lv'+bobo.level+'/common.gif'
						});
						$(curPosObj).append(boboFace);
					}
					else{
						$(monsterFace).attr({
							src:'images/'+monster.type+'/'+monster.file+'/'+'lv'+monster.level+'/common.gif'
						});
						$(curPosObj).append(monsterFace);
					}
				}
            });
			}
		});</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.fangyuqiang.com/archives/206/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>玩玩webgame开发（2）：人物移动与战争迷雾实现</title>
		<link>http://www.fangyuqiang.com/archives/207</link>
		<comments>http://www.fangyuqiang.com/archives/207#comments</comments>
		<pubDate>Tue, 04 Nov 2008 15:28:04 +0000</pubDate>
		<dc:creator>fangyuqiang</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[webgame]]></category>

		<guid isPermaLink="false">http://playfish.javaeye.com/blog/262481</guid>
		<description><![CDATA[惯例，先上下效果图片： 在上一篇玩玩webgame开发（1）大概给出了jquery方式的地图实现，最近又做了一些改进，加进了更多元素。代码全部改成jquery插件的方式。有机会做专门的介绍。 这次的主题主要是地图上面人物的移动以及战争迷雾的实现。 人物的移动其实比较简单，就是监听键盘上下左右按键事件。 $(document).keydown(function(event){ $.boboMove(event); }); 后台boboMove函数的写法： switch(event.keyCode){ case 37: if(bobo.pos.X &#62; minX){ //判断地图边缘 bobo.pos.X -= 1; //坐标变化 $("#"+"X"+bobo.pos.X+"Y"+bobo.pos.Y).append(boboFace);//将人物移动到这个位置上，实际做法就是将人物的图片放在这个div上面 } break; case 38: if(bobo.pos.Y &#60; maxY){ bobo.pos.Y += 1; $("#"+"X"+bobo.pos.X+"Y"+bobo.pos.Y).append(boboFace); } break; case 39: if(bobo.pos.X &#60; maxX){ bobo.pos.X += 1; $("#"+"X"+bobo.pos.X+"Y"+bobo.pos.Y).append(boboFace); } break; case 40: if(bobo.pos.Y &#62; minY){ bobo.pos.Y -= 1; $("#"+"X"+bobo.pos.X+"Y"+bobo.pos.Y).append(boboFace); } break; [...]]]></description>
			<content:encoded><![CDATA[<p>惯例，先上下效果图片：</p>
<div id="attachment_401" class="wp-caption aligncenter" style="width: 310px"><img class="size-medium wp-image-401" title="webgame地图效果" src="http://www.fangyuqiang.com/wp-content/uploads/2008/11/3b8e0d31-b9cc-3272-abbb-0941300a68ef-300x171.png" alt="webgame地图效果" width="300" height="171" /><p class="wp-caption-text">webgame地图效果</p></div>
<p>在上一篇玩玩webgame开发（1）大概给出了jquery方式的地图实现，最近又做了一些改进，加进了更多元素。代码全部改成jquery插件的方式。有机会做专门的介绍。</p>
<p>这次的主题主要是地图上面人物的移动以及战争迷雾的实现。<span id="more-207"></span></p>
<p>人物的移动其实比较简单，就是监听键盘上下左右按键事件。</p>
<pre class="javascript" title="code">$(document).keydown(function(event){
			$.boboMove(event);
});</pre>
<p>后台boboMove函数的写法：</p>
<pre class="javascript" title="code">	switch(event.keyCode){
		case 37:
			if(bobo.pos.X &gt; minX){ //判断地图边缘
				bobo.pos.X -= 1; //坐标变化
				$("#"+"X"+bobo.pos.X+"Y"+bobo.pos.Y).append(boboFace);//将人物移动到这个位置上，实际做法就是将人物的图片放在这个div上面
			}
			break;
		case 38:
			if(bobo.pos.Y &lt; maxY){
				bobo.pos.Y += 1;
				$("#"+"X"+bobo.pos.X+"Y"+bobo.pos.Y).append(boboFace);
			}
			break;
		case 39:
			if(bobo.pos.X &lt; maxX){ 				bobo.pos.X += 1; 				$("#"+"X"+bobo.pos.X+"Y"+bobo.pos.Y).append(boboFace); 			} 		break; 		case 40: 			if(bobo.pos.Y &gt; minY){
				bobo.pos.Y -= 1;
				$("#"+"X"+bobo.pos.X+"Y"+bobo.pos.Y).append(boboFace);
			}
		break;
	}
	cleanBattleFog(); //清除战争迷雾</pre>
<p>我写的这个webgame打算做个战争迷雾的效果，玩过魔兽争霸或者英雄无敌的人应该对这个概念很清楚，就是在没有探索之前，地图上面的区域都是迷雾覆盖无法看到的。</p>
<p>迷雾覆盖效果实现其实很简单，对于我所做的系统来说，迷雾就是所有的区域div都加上一个battleFog的css。</p>
<p>移除战争迷雾的算法是这样的：在人物的视野内的格子div移除battleFog这个css类。例如人物视野为1，人物坐标3，3。那么视野内的(2,3),(3,3),(3,4),(4,3),(3,2)。显示出来就是一个十字形，如果视野是2，那么显示出来就类似一个星形。</p>
<p>在正式给出代码之前，各位看客可以自己考虑一下这个算法的实现。可能大家都觉得这个很简单。。但是今天在写这个的时候才发觉这个看似简单的问题要写好不那么好想，可能很久没动脑筋了吧，这里卖个小关子，大家动动脑筋想想，给出人物当前的坐标，以及人物的视野，得出当前人物所有可以看到的坐标。<br />
=================思考十分钟分割线=================<br />
呵呵，最后给出我的战争迷雾移除算法： </p>
<pre class="js" title="code">
function cleanBattleFog(){
	var fogToBeClean = []; //将被移除迷雾的区域数组，保存所有将被移除迷雾的div的id
//bobo.pos.X 人物X坐标，
//bobo.pos.Y 人物Y坐标
//bobo.eyeshot 人物视野
	for(var m =bobo.pos.X-bobo.eyeshot;m<=bobo.pos.X+bobo.eyeshot; m++ ){
		for(var n=bobo.pos.Y-bobo.eyeshot;n<=bobo.pos.Y+bobo.eyeshot;n++){
			var xdiff = m - bobo.pos.X;
			var ydiff = n - bobo.pos.Y;
			if(xdiff*xdiff + ydiff*ydiff <= bobo.eyeshot*bobo.eyeshot
				 &#038;&#038; m>=1 &#038;&#038; n>=1 &#038;&#038; m <= map.maxY &#038;&#038; n <= map.maxX
			){
				fogToBeClean.push('#X'+m+'Y'+n);
			}
		}
	}
	$(fogToBeClean.join(',')).removeClass('battleFog');
}
</pre>
<p>其实算法不难，就是2点间坐标距离要小于视野。并且要注意考虑地图的边界，不然可能得到不在地图内的坐标。<br />
每得到一个坐标，用数组的push方法保存到数组中。jquery支持用逗号分割的表达式获得多个对象，所以最后直接一个join搞定。 </p>
]]></content:encoded>
			<wfw:commentRss>http://www.fangyuqiang.com/archives/207/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>玩玩webgame开发（1）：用jquery生成地图</title>
		<link>http://www.fangyuqiang.com/archives/208</link>
		<comments>http://www.fangyuqiang.com/archives/208#comments</comments>
		<pubDate>Wed, 29 Oct 2008 16:46:03 +0000</pubDate>
		<dc:creator>fangyuqiang</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[cakephp]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[webgame]]></category>

		<guid isPermaLink="false">http://playfish.javaeye.com/blog/259876</guid>
		<description><![CDATA[先上个效果图： 选型：jquery,php,mysql。我喜欢jquery，灵活，强大的选择器，还算够用的ajax功能，还有丰富的plugin，以及effects，这些对于做webgame都是很有用的。php打算用框架来做，不过我php也是半吊子，现在在cakephp跟国产的fleaphp中犹豫不决。mysql，无条件选用 =正文= 由于我很想做一个战斗系统来玩，类似war3里面迷雾探索的，所以不管3721，js直接从战斗系统开始写。晚上写了一会，大概整出这样的代码。 var battle = { //can accect a random map createMap:function(map){ var defaultMap = [       //定义默认地图，字母分别对应css的类名 ['g','r','f','f','f','r','f','w'], ['w','g','f','f','f','r','g','f'], ['w','r','g','f','f','g','f','r'], ['f','r','f','f','f','r','f','f'], ]; //函数传递进来的参数判断 if(boboUtil.isUndefined(map) &#124;&#124; map.length == 0){ map = defaultMap; } //将2维数组转化为1维数组 var mapSequence =  new Array(); for(var i=0;i&#60;map.length;i++){ mapSequence = mapSequence.concat(map[i]); } //计算地图的宽，即横向总共几个格子 var fieldWidth = map[0].length; //设置地图的总宽度 $("#battleField").width(fieldWidth*50); //为每个格子设置对应的css类，即渲染地图 $("#battleField [...]]]></description>
			<content:encoded><![CDATA[<p><strong>先上个效果图：</strong></p>
<p><strong> </strong></p>
<div id="attachment_399" class="wp-caption aligncenter" style="width: 418px"><strong><strong><img class="size-full wp-image-399 " title="jquery生成webgame的地图" src="http://www.fangyuqiang.com/wp-content/uploads/2008/10/048232e5-7cf2-332d-8337-f76822751a47.jpg" alt="jquery生成webgame的地图" width="408" height="212" /></strong></strong><p class="wp-caption-text">jquery生成webgame的地图</p></div>
<p><strong> </strong></p>
<p>选型：jquery,php,mysql。我喜欢jquery，灵活，强大的选择器，还算够用的ajax功能，还有丰富的plugin，以及effects，这些对于做webgame都是很有用的。php打算用框架来做，不过我php也是半吊子，现在在cakephp跟国产的fleaphp中犹豫不决。mysql，无条件选用<span id="more-208"></span></p>
<p>=正文=</p>
<p>由于我很想做一个战斗系统来玩，类似war3里面迷雾探索的，所以不管3721，js直接从战斗系统开始写。晚上写了一会，大概整出这样的代码。</p>
<pre class="js" title="code">var battle = {
 //can accect a random map
 createMap:function(map){
 var defaultMap = [       //定义默认地图，字母分别对应css的类名
 ['g','r','f','f','f','r','f','w'],
 ['w','g','f','f','f','r','g','f'],
 ['w','r','g','f','f','g','f','r'],
 ['f','r','f','f','f','r','f','f'],
 ];
//函数传递进来的参数判断
 if(boboUtil.isUndefined(map) || map.length == 0){
 map = defaultMap;
 }
//将2维数组转化为1维数组
 var mapSequence =  new Array();
 for(var i=0;i&lt;map.length;i++){
 mapSequence = mapSequence.concat(map[i]);
 }
//计算地图的宽，即横向总共几个格子
 var fieldWidth = map[0].length;
//设置地图的总宽度
 $("#battleField").width(fieldWidth*50);
//为每个格子设置对应的css类，即渲染地图
 $("#battleField div").each(function(i){
 //create map
 if(i &gt; mapSequence.length )
 return false;
 $(this).addClass(mapSequence[i]);
//设置格子的坐标
 //set x,y index
 var x = i % fieldWidth +1;
 var y = Math.floor(i / fieldWidth +1);
 $(this).attr("id",""+x+y);
 });
 }
};</pre>
<pre class="javascript"><!--mce:0--></pre>
<p><strong>实现原理：</strong></p>
<ul>
<li>页面上先添加适当数目的空div，我觉得用js添加div可能存在性能问题，所以直接html里面放置一些空的div，作为地图元素。</li>
<li>定义一系列的css，为不同格子地图设置好宽高与背景色，实际运用时候这些背景可以换成图片什么的。</li>
<li>定义一个map的数组，这个数组保存地图的信息，即地图每个格子的css类名，通过js，将这些css类名添加到每个div中</li>
</ul>
<p>最近业余时间想找点事情做，看我家MM似乎回家都比较无聊，就一个劲看片，就想给她写个webgame玩吧，至于为什么不做其他的游戏啥的，好吧，我承认我只会web。也想练练自己的JavaScript，提高下js水平，虽然对js很有兴致，但是工作方面都是做java，再下去就荒废了。</p>
<p>最后顺便附上一个简单的时间测试代码，使用console.log，请在firefox用firebug查看，当然，如果是IE，可以把这句换成alert。用法简单，在页面上写：</p>
<pre class="js" title="code">var executeTimeTest=function(func){
	var start = 0;
	var end = 0;
	start = new Date().getTime()
	for(i = 0; i &lt; 10000000; i++) {
		func;
	}
	end = new Date().getTime();
	console.log((end - start) / 1000+'s');

};</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.fangyuqiang.com/archives/208/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>liferay的JS代码基础解析</title>
		<link>http://www.fangyuqiang.com/archives/210</link>
		<comments>http://www.fangyuqiang.com/archives/210#comments</comments>
		<pubDate>Mon, 08 Sep 2008 15:17:45 +0000</pubDate>
		<dc:creator>fangyuqiang</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[jQuery]]></category>

		<guid isPermaLink="false">http://playfish.javaeye.com/blog/239582</guid>
		<description><![CDATA[这段代码是Liferay 5.1版本的代码，主要功能是实现浏览器版本的判断，以根据浏览器的不同调用不同css，实现多浏览器兼容。本文秉着学习JS的态度逐步的对Liferay的一些有用的js代码进行解析。 Liferay.Browser = { init: function() { var instance = this; var version = instance.version(); var exactVersion = instance.version(true); instance._browserVars = { agent: '', is_firefox: false, ...节约篇幅略去部分代码 is_mozilla: false, }; instance._browserVars.agent = instance.browser().toLowerCase(); ... jQuery.extend(instance, instance._browserVars); }, browser: function() { var instance = this; return jQuery.browser.browser; }, compat: function() { var instance = this; [...]]]></description>
			<content:encoded><![CDATA[<p>这段代码是Liferay 5.1版本的代码，主要功能是实现浏览器版本的判断，以根据浏览器的不同调用不同css，实现多浏览器兼容。本文秉着学习JS的态度逐步的对Liferay的一些有用的js代码进行解析。<span id="more-210"></span></p>
<pre class="js" title="code">Liferay.Browser = {
	init: function() {
		var instance = this;
		var version = instance.version();
		var exactVersion = instance.version(true);
		instance._browserVars = {
			agent: '',
			is_firefox: false,
                       ...节约篇幅略去部分代码
			is_mozilla: false,
		};
		instance._browserVars.agent = instance.browser().toLowerCase();
                ...
		jQuery.extend(instance, instance._browserVars);
	},
	browser: function() {
		var instance = this;

		return jQuery.browser.browser;
	},
	compat: function() {
		var instance = this;
		for (var i in instance._browserVars) {
			if (!window[i]) {
				window[i] = instance._browserVars[i];
			}
		}
	},
	version: function(exact) {
		var instance = this;
		if (!exact) {
			return jQuery.browser.version.major;
		}
		else {
			return jQuery.browser.version.string;
		}
	},
	_browserVars: {}
};
jQuery(
	function() {
		Liferay.Browser.init();
	}
);</pre>
<p>这一段代码主要是对jQuery的一个j2browse的插件进行了包装，使用自己的变量命名需要来命名。对于初学者来说这样的写法可能比较难以理解。首先是</p>
<pre class="js">Liferay.Browser＝{...}；</pre>
<p>可能会有疑惑，定义一个变量不是var开头吗？从JE上面一些锁定的老帖http://www.javaeye.com/topic/19506，大家都知道javascript是可以隐式声名变量的。但要注意，隐式声名变量总是被创建为全局变量。这种写法的意思就是将Liferay.Browser这个对象声明为全局变量。</p>
<p>再看</p>
<pre class="js">Liferay.Browser＝{...}；</pre>
<p>{}是js里面对象直接量的写法，在js中，对象属性也可以是函数，而不仅仅是数字字符串。这样的写法我所知道的带来的好处是：js中对象属性可以通过.来调用，而通过.来调用从外观上是很符合其它语言的习惯的，比较易读。在{}内定义了函数后，就可以通过Liferay.Browser.init()这样的方式来完成调用了。也就是接下来的</p>
<pre class="js">jQuery(
	function() {
		Liferay.Browser.init();
	}
);</pre>
<p>这一段jQuery();实际上就是执行了一个函数，这个jQuery()的函数的参数也是一个function，可以理解为jQuery(var);同alert(&#8220;error&#8221;);对比就非常容易理解了。很多新人对于jquery的写法很困惑，跟平常用的一些简单的验证脚本的js写法都不一样,其实最容易混淆和难以接受的概念就是函数function也可以作为一个变量一个参数来传递。</p>
<p>而其实上面的整个代码，你可以这样来理解：</p>
<pre class="js">a = {1,2,3};
alert(a.1);</pre>
<p>还有一点，通常看到的function的形式都是 function a(){}的形式，这里的function()函数名都没有。这是js的匿名函数，js允许这样的匿名函数。通常这种匿名函数都用在被作为参数传递的场合，在jQuery的应用中非常常见。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.fangyuqiang.com/archives/210/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
