<?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; Flex</title>
	<atom:link href="http://www.iwanna.cn/topics/ui/adobe/flex-adobe-ui/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.iwanna.cn</link>
	<description></description>
	<lastBuildDate>Sat, 31 Jul 2010 15:12:14 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>使用框架建立富联网应用</title>
		<link>http://www.iwanna.cn/archives/2010/07/27/4752/</link>
		<comments>http://www.iwanna.cn/archives/2010/07/27/4752/#comments</comments>
		<pubDate>Tue, 27 Jul 2010 13:41:38 +0000</pubDate>
		<dc:creator>seasun</dc:creator>
				<category><![CDATA[Adobe]]></category>
		<category><![CDATA[Ajax]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[JQuery]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[MooTools]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[YUI]]></category>
		<category><![CDATA[RIA]]></category>
		<category><![CDATA[Silverlight]]></category>

		<guid isPermaLink="false">http://www.iwanna.cn/?p=4752</guid>
		<description><![CDATA[JavaScript库，ICEfaces，Adobe  Flash，微软Silverlight，现在还有HTML5，全球性的网络支配地位的竞争已经进入了崭新的时代——一个富网络应用（简称RIA，中文也 有叫富互联网应用）的时代。本文目的是界定什么是RIA，解释为何网络已经开始向RIA靠拢，探索今天已经存在的不同RIA框架，对每个框架作出一些优点和缺点的概述，并讨论这些新技术在未来将是怎么样的生存态。


RIA是何物?
所谓RIA，或者说富网络网应用，就是指可以像桌面程序一样操作的网络应用。 在RIA冒出来之前，大多数的网络应用都是静态的页面构建的。

Sumo Paint 是一个基于Flash的RIA,  具有像Photoshop一样的图形编辑功能。
跟桌面应用程序不同，任何一个网页的互动往往需要重新加载一个全新的页面。而桌面应用程序，在另一方面，有很多更好的用户交互性，因为所有处理都是在用户的机器本身，所以能给以更加无缝的用户体验。
因此，软件开发商开始问自己，“我们产品应该是一个桌面应用程序还是一个Web应用程序呢？”
这一直是一个公平的问题，因为这两种类型的应用程序都具有各自优点和缺点。
桌面应用程序具有流畅的用户交互性，但软件是售出去的，会遇到发布和更新的问题。
Web应用程序，另一方面，很容易从网上获得，摆脱相关的软件发布和更新的问题，但在用户交互性体验非常差。
因此，怎么样才能两全其美呢？
RIA就是两全其美。RIA通过网络发布，有非常丰富的用户交互。得益于Ajax的出现，一个无需刷新就可以发送服务器请求的网络应用的方法，新技术出现，加入了RIA的运动。
基于这些技术出现了一些框架，帮助开发人员构建和部署富网络应用程序，如JavaScript库，ICEfaces，Adobe Flash 4（Flex 3前身），微软Silverlight，以及HTML5的。
让我们来一个个探讨RIA的框架。
网络应用的JavaScript库
JavaScript库，例如 jQuery和MooTools 是首批技术之一，可以真正的帮助部署流畅和互动的富网络应用。它们提供通过杠杆客户端脚本来处理前端接口功能的RIA框架。它们是一些基本的 Javascript文件，由一些有用的，经过跨浏览器测试功能的集成。可以使用Ajax，以及处理普通的基于用户驱动事件的交互，如显示和隐藏内容。
目前最流行的有jQuery（尤其是使用jQuery UI），MooTools，YIU（雅虎用户界面库），以及EXTJS。这些库包括RIA组件，如网格，图表和复杂的表单元素，以及处理Ajax的工具。最引人入胜的是，大部分网络开发的JavaScript库都是开源的。
如果你不想购买一个集成开发环境（IDE），但仍希望在自己的网站绚丽而专业的RIA功能，JavaScript库是一个很不错的选择。
使用JavaScript库的网站有Google，Digg，雅虎，亚马逊，微软，Twitter，以及Best Buy。
ICEfaces
ICEfaces是标准的JavaServer Faces（JSF）的框架的扩展，旨在去除方程中的JavaScript从而简化程序员的工作流程。换句话说，ICEfaces通过Java应用接口为你处理了所有的JavaScript/Ajax。通过删除这些自定义JavaScript函数的复杂引入，大大简化了创建富网络应用的任务。
如果你的团队主要成员是Java开发人员，或者如果你的网络应用程序不需要其它ICEfaces没有的复杂组件，又或者如果你的网络应用程序是事件驱动的，那么使用ICEfaces是很好的选择。如果你的网路应用是事件驱动的，请确定你已经了解ICEfaces不提供真正的“服务器推”技术的，HTML5，Flash Builder 4和Silverlight都支持的。不过，相应地ICEfaces使用长轮询的方法来模拟服务器推技术。
使用ICEfaces的网站有波音，美国航空航天局，联合太平洋公司，T-Mobile，以及美国银行。
Adobe Flash Builder 4
Flash已经出现了很长一段时间，但是用使用Flash来构建整个网络应用十分麻烦，直到Flex的引进，这是Flash的一个扩展，提供RIA网络组 件。
Adobe Flash Builder  4最令人兴奋的是它的跨平台和跨浏览器特性，允许程序在所有的操作系统和所有的浏览器上以同样的方式运行。相比于JavaScript，浏览器有不同的 JavaScript引擎管理和处理的代码，而Adobe的Flash只有一个引擎，用户通过Adobe  Flash浏览器插件来安装（通常的情况是他们有了）。
Flash Builder 4  应用之所以能如此，因为它们已经嵌入到HTML页面，这意味着浏览器本身并没有对应用程序的性能有什么影响。这意味着你如果你乐意，  你还可以在IE6上运行最复杂的网络应用程序。（这当然简单，因为Flash插件/引擎经常会更新，因此只是稍微依赖于用户插件的版本）。
这些应用通常是伴随着服务器端处理，比如一个Java后端处理，而且需要Flash Builder 4IDE做开发。
如果你的团队主要是Java开发（因为搭配Java运作良好），或者你的应用程序使用事件驱动的构架，可以选择Adobe Flash Builder  4。
使用Flash作为网络应用程序的网站有Mint.com，Flickr和Hyundai。
Silverlight
Silverlight是基本上微软版本的Adobe Flex /的Adobe Flash。现在已获得了一些吸引力，但似乎并没有达到的Adobe  Flash的普及程度。
Silverlight应用程序明显约束于.NET的后端，因为它是微软的产品。这意味着，你不得不 Silverlight /.NET 和Adobe  Flex / [一些服务器端脚本，如PHP] [...]]]></description>
			<content:encoded><![CDATA[<p><strong><a href="http://www.iwanna.cn/tags/javascript/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with JavaScript">JavaScript</a>库，ICEfaces，Adobe  <a href="http://www.iwanna.cn/tags/flash/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with Flash">Flash</a>，微软<a href="http://www.iwanna.cn/tags/silverlight/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with Silverlight">Silverlight</a>，现在还有HTML5，全球性的网络支配地位的竞争已经进入了崭新的时代——一个富网络应用（简称<a href="http://www.iwanna.cn/tags/ria/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with RIA">RIA</a>，中文也 有叫富互联网应用）的时代。</strong>本文目的是界定什么是<a href="http://www.iwanna.cn/tags/ria/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with RIA">RIA</a>，解释为何网络已经开始向<a href="http://www.iwanna.cn/tags/ria/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with RIA">RIA</a>靠拢，探索今天已经存在的不同<a href="http://www.iwanna.cn/tags/ria/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with RIA">RIA</a>框架，对每个框架作出一些优点和缺点的概述，并讨论这些新技术在未来将是怎么样的生存态。<br />
<a href="http://sixrevisions.com/web-development/building-rich-internet-applications-with-frameworks/"><img src="http://images.uheed.com/iwanna/2010/07/27/13151901685270962.png" alt="Building Rich Internet Applications with Frameworks" width="550" height="200" /></a><br />
<span id="more-4752"></span><br />
<strong><a href="http://www.iwanna.cn/tags/ria/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with RIA">RIA</a>是何物?</strong></p>
<p>所谓<a href="http://www.iwanna.cn/tags/ria/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with RIA">RIA</a>，或者说富网络网应用，就是指可以像桌面程序一样操作的网络应用。 在<a href="http://www.iwanna.cn/tags/ria/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with RIA">RIA</a>冒出来之前，大多数的网络应用都是静态的页面构建的。<br />
<a href="http://www.iwanna.cn/" target="_blank"><img src="http://images.uheed.com/iwanna/2010/07/27/1315421675113898.png" alt="What's an RIA?" width="550" height="420" /></a><br />
<a href="http://www.sumopaint.com/app/">Sumo Paint</a> 是一个基于<a href="http://www.iwanna.cn/tags/flash/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with Flash">Flash</a>的<a href="http://www.iwanna.cn/tags/ria/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with RIA">RIA</a>,  具有像Photoshop一样的图形编辑功能。</p>
<p>跟桌面应用程序不同，任何一个网页的互动往往需要重新加载一个全新的页面。而桌面应用程序，在另一方面，有很多更好的用户交互性，因为所有处理都是在用户的机器本身，所以能给以更加无缝的用户体验。</p>
<p>因此，软件开发商开始问自己，“我们产品应该是一个桌面应用程序还是一个Web应用程序呢？”</p>
<p>这一直是一个公平的问题，因为这两种类型的应用程序都具有各自优点和缺点。</p>
<p>桌面应用程序具有流畅的用户交互性，但软件是售出去的，会遇到发布和更新的问题。</p>
<p>Web应用程序，另一方面，很容易从网上获得，摆脱相关的软件发布和更新的问题，但在用户交互性体验非常差。</p>
<p>因此，怎么样才能两全其美呢？</p>
<p><a href="http://www.iwanna.cn/tags/ria/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with RIA">RIA</a>就是两全其美。<a href="http://www.iwanna.cn/tags/ria/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with RIA">RIA</a>通过网络发布，有非常丰富的用户交互。得益于<a href="http://www.iwanna.cn/tags/ajax/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with Ajax">Ajax</a>的出现，一个无需刷新就可以发送服务器请求的网络应用的方法，新技术出现，加入了<a href="http://www.iwanna.cn/tags/ria/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with RIA">RIA</a>的运动。</p>
<p>基于这些技术出现了一些框架，帮助开发人员构建和部署富网络应用程序，如<a href="http://www.iwanna.cn/tags/javascript/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with JavaScript">JavaScript</a>库，ICEfaces，Adobe <a href="http://www.iwanna.cn/tags/flash/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with Flash">Flash</a> 4（Flex 3前身），微软<a href="http://www.iwanna.cn/tags/silverlight/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with Silverlight">Silverlight</a>，以及HTML5的。</p>
<p>让我们来一个个探讨<a href="http://www.iwanna.cn/tags/ria/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with RIA">RIA</a>的框架。</p>
<p><strong>网络应用的<a href="http://www.iwanna.cn/tags/javascript/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with JavaScript">JavaScript</a>库</strong></p>
<p><a href="http://www.iwanna.cn/tags/javascript/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with JavaScript">JavaScript</a>库，例如 jQuery和MooTools 是首批技术之一，可以真正的帮助部署流畅和互动的富网络应用。它们提供通过杠杆客户端脚本来处理前端接口功能的<a href="http://www.iwanna.cn/tags/ria/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with RIA">RIA</a>框架。它们是一些基本的 <a href="http://www.iwanna.cn/tags/javascript/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with JavaScript">Javascript</a>文件，由一些有用的，经过跨浏览器测试功能的集成。可以使用<a href="http://www.iwanna.cn/tags/ajax/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with Ajax">Ajax</a>，以及处理普通的基于用户驱动事件的交互，如显示和隐藏内容。</p>
<p>目前最流行的有jQuery（尤其是使用jQuery UI），MooTools，YIU（雅虎用户界面库），以及EXTJS。这些库包括<a href="http://www.iwanna.cn/tags/ria/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with RIA">RIA</a>组件，如网格，图表和复杂的表单元素，以及处理<a href="http://www.iwanna.cn/tags/ajax/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with Ajax">Ajax</a>的工具。最引人入胜的是，大部分网络开发的<a href="http://www.iwanna.cn/tags/javascript/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with JavaScript">JavaScript</a>库都是开源的。</p>
<p>如果你不想购买一个集成开发环境（IDE），但仍希望在自己的网站绚丽而专业的<a href="http://www.iwanna.cn/tags/ria/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with RIA">RIA</a>功能，<a href="http://www.iwanna.cn/tags/javascript/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with JavaScript">JavaScript</a>库是一个很不错的选择。</p>
<p>使用<a href="http://www.iwanna.cn/tags/javascript/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with JavaScript">JavaScript</a>库的网站有Google，Digg，雅虎，亚马逊，微软，Twitter，以及Best Buy。</p>
<p><strong>ICEfaces</strong></p>
<p>ICEfaces是标准的JavaServer Faces（JSF）的框架的扩展，旨在去除方程中的<a href="http://www.iwanna.cn/tags/javascript/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with JavaScript">JavaScript</a>从而简化程序员的工作流程。换句话说，ICEfaces通过Java应用接口为你处理了所有的<a href="http://www.iwanna.cn/tags/javascript/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with JavaScript">JavaScript</a>/<a href="http://www.iwanna.cn/tags/ajax/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with Ajax">Ajax</a>。通过删除这些自定义<a href="http://www.iwanna.cn/tags/javascript/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with JavaScript">JavaScript</a>函数的复杂引入，大大简化了创建富网络应用的任务。</p>
<p>如果你的团队主要成员是Java开发人员，或者如果你的网络应用程序不需要其它ICEfaces没有的复杂组件，又或者如果你的网络应用程序是事件驱动的，那么使用ICEfaces是很好的选择。如果你的网路应用是事件驱动的，请确定你已经了解ICEfaces不提供真正的“服务器推”技术的，HTML5，<a href="http://www.iwanna.cn/tags/flash/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with Flash">Flash</a> Builder 4和<a href="http://www.iwanna.cn/tags/silverlight/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with Silverlight">Silverlight</a>都支持的。不过，相应地ICEfaces使用长轮询的方法来模拟服务器推技术。</p>
<p>使用ICEfaces的网站有波音，美国航空航天局，联合太平洋公司，T-Mobile，以及美国银行。</p>
<p><strong>Adobe <a href="http://www.iwanna.cn/tags/flash/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with Flash">Flash</a> Builder 4</strong></p>
<p><a href="http://www.iwanna.cn/tags/flash/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with Flash">Flash</a>已经出现了很长一段时间，但是用使用<a href="http://www.iwanna.cn/tags/flash/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with Flash">Flash</a>来构建整个网络应用十分麻烦，直到Flex的引进，这是<a href="http://www.iwanna.cn/tags/flash/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with Flash">Flash</a>的一个扩展，提供<a href="http://www.iwanna.cn/tags/ria/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with RIA">RIA</a>网络组 件。</p>
<p>Adobe <a href="http://www.iwanna.cn/tags/flash/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with Flash">Flash</a> Builder  4最令人兴奋的是它的跨平台和跨浏览器特性，允许程序在所有的操作系统和所有的浏览器上以同样的方式运行。相比于<a href="http://www.iwanna.cn/tags/javascript/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with JavaScript">JavaScript</a>，浏览器有不同的 <a href="http://www.iwanna.cn/tags/javascript/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with JavaScript">JavaScript</a>引擎管理和处理的代码，而Adobe的<a href="http://www.iwanna.cn/tags/flash/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with Flash">Flash</a>只有一个引擎，用户通过Adobe  <a href="http://www.iwanna.cn/tags/flash/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with Flash">Flash</a>浏览器插件来安装（通常的情况是他们有了）。</p>
<p><a href="http://www.iwanna.cn/tags/flash/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with Flash">Flash</a> Builder 4  应用之所以能如此，因为它们已经嵌入到<a href="http://www.iwanna.cn/tags/html/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with HTML">HTML</a>页面，这意味着浏览器本身并没有对应用程序的性能有什么影响。这意味着你如果你乐意，  你还可以在IE6上运行最复杂的网络应用程序。（这当然简单，因为<a href="http://www.iwanna.cn/tags/flash/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with Flash">Flash</a>插件/引擎经常会更新，因此只是稍微依赖于用户插件的版本）。</p>
<p>这些应用通常是伴随着服务器端处理，比如一个Java后端处理，而且需要<a href="http://www.iwanna.cn/tags/flash/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with Flash">Flash</a> Builder 4IDE做开发。</p>
<p>如果你的团队主要是Java开发（因为搭配Java运作良好），或者你的应用程序使用事件驱动的构架，可以选择Adobe <a href="http://www.iwanna.cn/tags/flash/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with Flash">Flash</a> Builder  4。</p>
<p>使用<a href="http://www.iwanna.cn/tags/flash/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with Flash">Flash</a>作为网络应用程序的网站有Mint.com，Flickr和Hyundai。</p>
<p><strong><a href="http://www.iwanna.cn/tags/silverlight/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with Silverlight">Silverlight</a></strong></p>
<p><a href="http://www.iwanna.cn/tags/silverlight/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with Silverlight">Silverlight</a>是基本上微软版本的Adobe Flex /的Adobe <a href="http://www.iwanna.cn/tags/flash/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with Flash">Flash</a>。现在已获得了一些吸引力，但似乎并没有达到的Adobe  <a href="http://www.iwanna.cn/tags/flash/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with Flash">Flash</a>的普及程度。</p>
<p><a href="http://www.iwanna.cn/tags/silverlight/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with Silverlight">Silverlight</a>应用程序明显约束于.NET的后端，因为它是微软的产品。这意味着，你不得不 <a href="http://www.iwanna.cn/tags/silverlight/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with Silverlight">Silverlight</a> /.NET 和Adobe  Flex / [一些服务器端脚本，如PHP] 之间整合考虑。</p>
<p>如果你的网络应用需要复杂的图形，或者如果你的团队主要是.NET开发人员，又或者如果你的应用程序使用事件驱动的架构，那你可以选择 <a href="http://www.iwanna.cn/tags/silverlight/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with Silverlight">Silverlight</a>。</p>
<p>使用<a href="http://www.iwanna.cn/tags/silverlight/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with Silverlight">Silverlight</a>的网站，如Netflix。</p>
<p><strong>HTML5</strong></p>
<p>HTML5的是<a href="http://www.iwanna.cn/tags/ria/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with RIA">RIA</a>运动中的最新发展。  HTML5，在本质上是HTML4，<a href="http://www.iwanna.cn/tags/javascript/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with JavaScript">JavaScript</a>，<a href="http://www.iwanna.cn/tags/css/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with CSS">CSS</a>，<a href="http://www.iwanna.cn/tags/javascript/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with JavaScript">Javascript</a>代码库以及Falsh的最优合并，利用API模型成为一个单一规 范。 HTML5的是一个开放的技术，这意味着不会有单一的主管团体如<a href="http://www.iwanna.cn/tags/flash/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with Flash">Flash</a>的Adobe或<a href="http://www.iwanna.cn/tags/silverlight/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with Silverlight">Silverlight</a>的微软。</p>
<p>由于HTML5规范还没有完成，IE9尚未发布，要建立产品级的网络应用，你还需要等待一点点时间。</p>
<p>目前，所有主要浏览器除了IE8都支持HTML5。由于IE8的浏览器市场占据了主要部分，在IE9发布之前，HTML5实在难以成为主流。</p>
<p>一旦HTML5得到广泛支持，如果你不想购买和学习的IDE（像Flex和<a href="http://www.iwanna.cn/tags/silverlight/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with Silverlight">Silverlight</a>框架所必需的），如果你的应用程序使用事件驱动架构，或 者如果你喜欢使用内置的<a href="http://www.iwanna.cn/tags/html/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with HTML">HTML</a>功能和<a href="http://www.iwanna.cn/tags/javascript/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with JavaScript">JavaScript</a> API 功能而不是使用第三方<a href="http://www.iwanna.cn/tags/javascript/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with JavaScript">JavaScript</a>库，那么使用<a href="http://www.iwanna.cn/tags/html/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with HTML">HTML</a>是很好的选择。</p>
<p>尽管HTML5中可以很好地处理图形，但是使用<a href="http://www.iwanna.cn/tags/flash/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with Flash">Flash</a>和<a href="http://www.iwanna.cn/tags/silverlight/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with Silverlight">Silverlight</a>来处理复杂图形和动画在目前仍然容易/更快的选择。</p>
<p><strong><a href="http://www.iwanna.cn/tags/ria/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with RIA">RIA</a> 的未来</strong><br />
<a href="http://www.iwanna.cn/" target="_blank"><img src="http://images.uheed.com/iwanna/2010/07/27/13154422012391927.jpg" alt="使用框架建立富联网应用 | iwanna.cn 我想网" /></a></p>
<p>HTML5应用程序是互联网的未来吗？不完全是。只要那些创造性和创新性的网络开发人员还在不断的去创造一些特别的东西，就会总是出现一些新技术可以造出 些HTML5或其他任何网络技术无法完成的神奇的东西。</p>
<p><a href="http://www.iwanna.cn/tags/javascript/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with JavaScript">JavaScript</a>库，ICEfaces，<a href="http://www.iwanna.cn/tags/flash/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with Flash">Flash</a>，<a href="http://www.iwanna.cn/tags/silverlight/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with Silverlight">Silverlight</a>和HTML5的存在首要原因是其创造力和创新性。未来的网络将会由许多 共存的技术组成，就像现在。</p>
<hr />
<p>© <a href="http://www.iwanna.cn">我想网</a> Akon 所有 , 2010. |
<a href="http://www.iwanna.cn/archives/2010/07/27/4752/">永久链接</a> |
<a href="http://www.iwanna.cn/archives/2010/07/27/4752/#comments">没有评论</a> |
提交到
<a rel="nofollow" target="_blank" href="http://www.google.com/reader/view/feed/http://www.iwanna.cn/archives/2010/07/27/4752/">Google Reader</a>
<a rel="nofollow" target="_blank" href="http://www.xianguo.com/subscribe.php?url=http://www.iwanna.cn/archives/2010/07/27/4752/">鲜果</a>
<a rel="nofollow" target="_blank" href="http://www.zhuaxia.com/add_channel.php?url=http://www.iwanna.cn/archives/2010/07/27/4752/">抓虾</a>
<hr />
</p>
	标签：<a href="http://www.iwanna.cn/topics/ui/adobe/" title="Adobe" rel="tag nofollow">Adobe</a>, <a href="http://www.iwanna.cn/tags/adobe/" title="Adobe" rel="tag nofollow">Adobe</a>, <a href="http://www.iwanna.cn/topics/ui/javascript/ajax/" title="Ajax" rel="tag nofollow">Ajax</a>, <a href="http://www.iwanna.cn/tags/ajax/" title="Ajax" rel="tag nofollow">Ajax</a>, <a href="http://www.iwanna.cn/tags/flash/" title="Flash" rel="tag nofollow">Flash</a>, <a href="http://www.iwanna.cn/topics/ui/adobe/flash-adobe-ui/" title="Flash" rel="tag nofollow">Flash</a>, <a href="http://www.iwanna.cn/topics/ui/adobe/flex-adobe-ui/" title="Flex" rel="tag nofollow">Flex</a>, <a href="http://www.iwanna.cn/topics/ui/html/" title="HTML" rel="tag nofollow">HTML</a>, <a href="http://www.iwanna.cn/tags/html/" title="HTML" rel="tag nofollow">HTML</a>, <a href="http://www.iwanna.cn/topics/ui/javascript/" title="JavaScript" rel="tag nofollow">JavaScript</a>, <a href="http://www.iwanna.cn/tags/javascript/" title="JavaScript" rel="tag nofollow">JavaScript</a>, <a href="http://www.iwanna.cn/topics/ui/javascript/jquery/" title="JQuery" rel="tag nofollow">JQuery</a>, <a href="http://www.iwanna.cn/topics/ui/javascript/mootools-javascript-ui/" title="MooTools" rel="tag nofollow">MooTools</a>, <a href="http://www.iwanna.cn/tags/ria/" title="RIA" rel="tag nofollow">RIA</a>, <a href="http://www.iwanna.cn/tags/silverlight/" title="Silverlight" rel="tag nofollow">Silverlight</a>, <a href="http://www.iwanna.cn/topics/news/technology_news/" title="Technology" rel="tag nofollow">Technology</a>, <a href="http://www.iwanna.cn/topics/ui/javascript/yui/" title="YUI" rel="tag nofollow">YUI</a><br />

	<h2 class="related_post">您可能会感兴趣的其他文章</h2>
	<ul class="st-related-posts">
	<li><a href="http://www.iwanna.cn/archives/2009/04/29/894/" title="页面输出时一些常用的小技巧 (2009年04月29日)">页面输出时一些常用的小技巧</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2009/07/03/1913/" title="使用Adobe Flex 3开发(MMO)大型多人在线游戏 (2009年07月3日)">使用Adobe Flex 3开发(MMO)大型多人在线游戏</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2009/06/23/1862/" title="XmlHttpRequest的串行异步 (2009年06月23日)">XmlHttpRequest的串行异步</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2009/07/29/2073/" title="RIA特别专题和Flash开发平台工具下载资源发布 (2009年07月29日)">RIA特别专题和Flash开发平台工具下载资源发布</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2010/07/12/4478/" title="Ajax跨域访问解决方案 (2010年07月12日)">Ajax跨域访问解决方案</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2009/04/20/713/" title="24 个漂亮的个性化 HTML 表单技术 (2009年04月20日)">24 个漂亮的个性化 HTML 表单技术</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2010/06/16/4013/" title="10个绝妙的HTML5，CSS和Javascript示例 (2010年06月16日)">10个绝妙的HTML5，CSS和Javascript示例</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2010/02/04/2487/" title="10个基于 JavaScript 的 WYSIWYG 编辑器 (2010年02月4日)">10个基于 JavaScript 的 WYSIWYG 编辑器</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2009/06/21/1854/" title="10个关于Ajax的IT人需要知道的事情 (2009年06月21日)">10个关于Ajax的IT人需要知道的事情</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2010/05/21/3284/" title="10个Google 推动的 AJAX 库 API (2010年05月21日)">10个Google 推动的 AJAX 库 API</a> </li>
</ul>


<p><small>Feed enhanced by <a href='http://planetozh.com/blog/my-projects/wordpress-plugin-better-feed-rss/'>Better Feed</a> from  <a href='http://planetozh.com/blog/'>Ozh</a></small></p>
]]></content:encoded>
			<wfw:commentRss>http://www.iwanna.cn/archives/2010/07/27/4752/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Flex程序员的四重境界</title>
		<link>http://www.iwanna.cn/archives/2010/06/13/3958/</link>
		<comments>http://www.iwanna.cn/archives/2010/06/13/3958/#comments</comments>
		<pubDate>Sun, 13 Jun 2010 12:35:28 +0000</pubDate>
		<dc:creator>seasun</dc:creator>
				<category><![CDATA[Flex]]></category>

		<guid isPermaLink="false">http://www.iwanna.cn/?p=3958</guid>
		<description><![CDATA[以前见过一些文章描述程序员的层次、水准、特征等等内容，这类文章很好的从广义的角度来定位并区分出程序员的水平和能力。相对于Flex开发者来说，尽管 这个群体目前在国内还不是很大(仍然有很大发展空间哟)，但是这种高低差别依然存在，如果广大开发者能从这个四重境界中准确定位自己，那对于将来的技术发 展是很有帮助的。
第一重 初级程序员
Flex初级程序员是指经过一周到一个月的间歇性学习(自学)和模仿而形成的上手级开发者。这个定义主要从投入精力和学习路线来规定的，这个层次 的程序员往往是出于一时的爱好或者项目的需要而进入改领域的学习。其特点是能做一些简单的应用，能搞清楚flex应用的开发过程，使用 flexbuilder能拖拽出一个界面来，并能写简单的AS脚本，从而完成一个基本的Flex应用。这类程序员从此就再没有深入研究，而且没有完整的看 过官方的所有开发文档，也没有体会到Flex/RIA开发的思想，基本上就在该领域停滞不前了。

第二重 中级程序员
该阶段的程序员是指超过2个月的学习(在正规的培训中心参加过flex培训，比如国内的http://www.flexedu.com)并完成至少一个项目的进阶级开发 者。位于此阶段的Flex开发者通过扎实系统的文档学习并通过实战的演练，对  Flex整个框架有很全面的认识，能够熟练使用IDE进行MXML/AS开发RIA应用，对程序结构、程序运行流程、对于flex应用与传统web应用的 区别都有很好的理解，能独立的实现flex为前端技术的web应用。这类程序员注重基础、细节，尤其是flex应用与web应用与桌面应用的差别与联系， 而且善于钻研技术，非常具有软件开发的潜力，而且只需加以时日便可进一步上升成为高手。
第三重 高级程序员
Flex高级程序员是指连续从事一年以上企业级Flash/Flex应用开发并在项目中承担主要角色的高手级开发者。这个层次的修炼很不容易，首 先需要自己不断的努力，而且最难办到的是能在一个长期使用Flex技术的公司(team)中持续锻炼。处于这个层次的Flex程序员往往对企业级RIA架 构比如  cairngorm非常熟悉，而且能对各种RIA架构做出自己的评价。对新项目的功能和模块、组件的划分都有清晰的认识，对于Flex应用的方方面面例如 幕后的运行过程、显示结构的模式、事件流顺序、组件的制作手法、程序规模和性能的控制都有深刻的理解。对于这个层次的flex程序员来说，自定义一个通用 的组件是很容易的事情，因为他对于Flex的组件体系甚至组件的源码他都了如指掌。夸张的来说，他们写flex应用很少看语法参考，写代码甚至可以在记事 本里完成。这样的flex开发者在全球都很少，属于高手中的高手，是大公司争强的对象，也是广大flex开发者努力的目标。
第四重 资深程序员
资深Flex程序员是指有着多年的RIA开发经验(超过10年的软件行业从业时间)并有广泛的软件开发相关技术背景的大牛级人物。这样的人物，只 要是你接触Flex这一领域就能听到他的大名，他们的博客是众多Flex开发者的圣殿，他们的声音就是整个社区的福音和号角，他们的著作是我们的圣经，这 样的人物常常会在大型活动比如360Flex或者adobe  MAX大会上经常出现，他们代表着这个领域的前沿和潮流。这样的程序员往往是Flex技术进步和发展的原动力，是我们Flex开发者努力一生的目标，甚至 是我们的偶像，比如Ted Patric以及他的博客上的Disruptive  Evangelism(突破性的传道者)，总共才11个人(都是Adobe公司的)。
作为一个普通的Flex开发者，您是那一级呢，离最高境界还有多远呢?
作者: jian9min9

© 我想网 Akon 所有 , 2010. &#124;
永久链接 &#124;
没有评论 &#124;
提交到
Google Reader
鲜果
抓虾


	标签：Flex, Flex

	您可能会感兴趣的其他文章
	
	使用Adobe Flex 3开发(MMO)大型多人在线游戏 
	从程序员的角度切入Flex 
	RIA特别专题和Flash开发平台工具下载资源发布 
	12条有用的Flex代码 



Feed enhanced by Better Feed from  Ozh
]]></description>
			<content:encoded><![CDATA[<p>以前见过一些文章描述程序员的层次、水准、特征等等内容，这类文章很好的从广义的角度来定位并区分出程序员的水平和能力。相对于Flex开发者来说，尽管 这个群体目前在国内还不是很大(仍然有很大发展空间哟)，但是这种高低差别依然存在，如果广大开发者能从这个四重境界中准确定位自己，那对于将来的技术发 展是很有帮助的。</p>
<p>第一重 初级程序员<br />
Flex初级程序员是指经过一周到一个月的间歇性学习(自学)和模仿而形成的上手级开发者。这个定义主要从投入精力和学习路线来规定的，这个层次 的程序员往往是出于一时的爱好或者项目的需要而进入改领域的学习。其特点是能做一些简单的应用，能搞清楚flex应用的开发过程，使用 flexbuilder能拖拽出一个界面来，并能写简单的AS脚本，从而完成一个基本的Flex应用。这类程序员从此就再没有深入研究，而且没有完整的看 过官方的所有开发文档，也没有体会到Flex/<a href="http://www.iwanna.cn/tags/ria/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with RIA">RIA</a>开发的思想，基本上就在该领域停滞不前了。<br />
<span id="more-3958"></span><br />
第二重 中级程序员<br />
该阶段的程序员是指超过2个月的学习(在正规的培训中心参加过flex培训，比如国内的<a href="http://www.flexedu.com/" target="_blank">http://www.flexedu.com</a>)并完成至少一个项目的进阶级开发 者。位于此阶段的Flex开发者通过扎实系统的文档学习并通过实战的演练，对  Flex整个框架有很全面的认识，能够熟练使用IDE进行MXML/AS开发<a href="http://www.iwanna.cn/tags/ria/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with RIA">RIA</a>应用，对程序结构、程序运行流程、对于flex应用与传统web应用的 区别都有很好的理解，能独立的实现flex为前端技术的web应用。这类程序员注重基础、细节，尤其是flex应用与web应用与桌面应用的差别与联系， 而且善于钻研技术，非常具有软件开发的潜力，而且只需加以时日便可进一步上升成为高手。</p>
<p>第三重 高级程序员<br />
Flex高级程序员是指连续从事一年以上企业级<a href="http://www.iwanna.cn/tags/flash/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with Flash">Flash</a>/Flex应用开发并在项目中承担主要角色的高手级开发者。这个层次的修炼很不容易，首 先需要自己不断的努力，而且最难办到的是能在一个长期使用Flex技术的公司(team)中持续锻炼。处于这个层次的Flex程序员往往对企业级<a href="http://www.iwanna.cn/tags/ria/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with RIA">RIA</a>架 构比如  cairngorm非常熟悉，而且能对各种<a href="http://www.iwanna.cn/tags/ria/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with RIA">RIA</a>架构做出自己的评价。对新项目的功能和模块、组件的划分都有清晰的认识，对于Flex应用的方方面面例如 幕后的运行过程、显示结构的模式、事件流顺序、组件的制作手法、程序规模和性能的控制都有深刻的理解。对于这个层次的flex程序员来说，自定义一个通用 的组件是很容易的事情，因为他对于Flex的组件体系甚至组件的源码他都了如指掌。夸张的来说，他们写flex应用很少看语法参考，写代码甚至可以在记事 本里完成。这样的flex开发者在全球都很少，属于高手中的高手，是大公司争强的对象，也是广大flex开发者努力的目标。</p>
<p>第四重 资深程序员<br />
资深Flex程序员是指有着多年的<a href="http://www.iwanna.cn/tags/ria/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with RIA">RIA</a>开发经验(超过10年的软件行业从业时间)并有广泛的软件开发相关技术背景的大牛级人物。这样的人物，只 要是你接触Flex这一领域就能听到他的大名，他们的博客是众多Flex开发者的圣殿，他们的声音就是整个社区的福音和号角，他们的著作是我们的圣经，这 样的人物常常会在大型活动比如360Flex或者adobe  MAX大会上经常出现，他们代表着这个领域的前沿和潮流。这样的程序员往往是Flex技术进步和发展的原动力，是我们Flex开发者努力一生的目标，甚至 是我们的偶像，比如Ted Patric以及他的博客上的Disruptive  Evangelism(突破性的传道者)，总共才11个人(都是Adobe公司的)。</p>
<p>作为一个普通的Flex开发者，您是那一级呢，离最高境界还有多远呢?</p>
<p>作者: <a href="http://jian9min9.javaeye.com/" target="_blank">jian9min9</a></p>
<hr />
<p>© <a href="http://www.iwanna.cn">我想网</a> Akon 所有 , 2010. |
<a href="http://www.iwanna.cn/archives/2010/06/13/3958/">永久链接</a> |
<a href="http://www.iwanna.cn/archives/2010/06/13/3958/#comments">没有评论</a> |
提交到
<a rel="nofollow" target="_blank" href="http://www.google.com/reader/view/feed/http://www.iwanna.cn/archives/2010/06/13/3958/">Google Reader</a>
<a rel="nofollow" target="_blank" href="http://www.xianguo.com/subscribe.php?url=http://www.iwanna.cn/archives/2010/06/13/3958/">鲜果</a>
<a rel="nofollow" target="_blank" href="http://www.zhuaxia.com/add_channel.php?url=http://www.iwanna.cn/archives/2010/06/13/3958/">抓虾</a>
<hr />
</p>
	标签：<a href="http://www.iwanna.cn/tags/flex/" title="Flex" rel="tag nofollow">Flex</a>, <a href="http://www.iwanna.cn/topics/ui/adobe/flex-adobe-ui/" title="Flex" rel="tag nofollow">Flex</a><br />

	<h2 class="related_post">您可能会感兴趣的其他文章</h2>
	<ul class="st-related-posts">
	<li><a href="http://www.iwanna.cn/archives/2009/07/03/1913/" title="使用Adobe Flex 3开发(MMO)大型多人在线游戏 (2009年07月3日)">使用Adobe Flex 3开发(MMO)大型多人在线游戏</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2009/04/01/120/" title="从程序员的角度切入Flex (2009年04月1日)">从程序员的角度切入Flex</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2009/07/29/2073/" title="RIA特别专题和Flash开发平台工具下载资源发布 (2009年07月29日)">RIA特别专题和Flash开发平台工具下载资源发布</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2009/04/08/231/" title="12条有用的Flex代码 (2009年04月8日)">12条有用的Flex代码</a> </li>
</ul>


<p><small>Feed enhanced by <a href='http://planetozh.com/blog/my-projects/wordpress-plugin-better-feed-rss/'>Better Feed</a> from  <a href='http://planetozh.com/blog/'>Ozh</a></small></p>
]]></content:encoded>
			<wfw:commentRss>http://www.iwanna.cn/archives/2010/06/13/3958/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>RIA特别专题和Flash开发平台工具下载资源发布</title>
		<link>http://www.iwanna.cn/archives/2009/07/29/2073/</link>
		<comments>http://www.iwanna.cn/archives/2009/07/29/2073/#comments</comments>
		<pubDate>Wed, 29 Jul 2009 02:56:44 +0000</pubDate>
		<dc:creator>seasun</dc:creator>
				<category><![CDATA[Adobe]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[Flex]]></category>

		<guid isPermaLink="false">http://www.iwanna.cn/?p=2073</guid>
		<description><![CDATA[为了能和读者分享更多有关RIA的精彩内容，InfoQ中文站最近组织并发布了一期RIA技术专题，包括RIA相关的新闻、文章和视频等。除此之外，本专题还提供了Flash平台开发工具的独家高速下载，以飨读者。

本专题中包含的部分精彩内容有：

虚拟座谈会：RIA和Ajax技术的现状与展望
争论又起，RIA的未来在哪里？
Silverlight、JavaFX、Flex/Flash技术比较
Java程序员学习Flex和BlazeDS的十三个理由
RIA框架大调查
InfoQ案例研究：纳斯达克市场回放
选择你的Ajax框架
纽约时报放弃WPF/Silverlight，转向Adobe AIR
RichClient/RIA原则与实践（上）（下）
构建Flex应用的10大误区

本专题所提供的Flash开发平台部分工具下载资源包括：

Flash Catalyst：一个无需编码即可快速创建用户界面的新型专业交互设计工具。（高速下载）
Flash Builder：包含了三个主要主题：开发人员生产率，设计人员-开发人员工作流和以数据为中心的应用开发等。以及Flex 4框架等。（高速下载）
Flex 4 SDK：支持开发人员创建Flex应用，还支持设计人员使用Adobe Flash Catalyst创建交互式设计。（高速下载）
Adobe AIR：使您能够始终拥有您喜爱的 Web 应用程序（高速下载）


© 我想网 Akon 所有 , 2009. &#124;
永久链接 &#124;
没有评论 &#124;
提交到
Google Reader
鲜果
抓虾


	标签：Adobe, Adobe, Flash, Flash, Flex, Flex

	您可能会感兴趣的其他文章
	
	使用Adobe Flex 3开发(MMO)大型多人在线游戏 
	使用框架建立富联网应用 
	从程序员的角度切入Flex 
	页面插入Flash Object完全攻略 
	乔布斯:关于Flash的几点思考 
	为设计师和开发者准备的16款Adobe AIR程序 
	WordPress 的 Flash 时钟插件 
	Flex程序员的四重境界 
	Flash游戏引擎列表 
	4个轻量级的Adobe阅读器替代软件 



Feed enhanced by Better Feed from  Ozh
]]></description>
			<content:encoded><![CDATA[<p>为了能和读者分享更多有关<a href="http://www.iwanna.cn/tags/ria/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with RIA">RIA</a>的精彩内容，InfoQ中文站最近组织并发布了一期<a href="http://www.infoq.com/cn/ria" mce_href="http://www.infoq.com/cn/ria" target="_blank">RIA技术专题</a>，包括<a href="http://www.iwanna.cn/tags/ria/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with RIA">RIA</a>相关的新闻、文章和视频等。除此之外，本专题还提供了<a href="http://www.iwanna.cn/tags/flash/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with Flash">Flash</a>平台开发工具的独家高速下载，以飨读者。<br />
<img class="mceWPmore mceItemNoResize" title="更多..." src="http://www.iwanna.cn/wp-includes/js/tinymce/plugins/wordpress/img/trans.gif" mce_src="http://www.iwanna.cn/wp-includes/js/tinymce/plugins/wordpress/img/trans.gif" alt=""><br />
<a href="http://www.infoq.com/cn/ria" mce_href="http://www.infoq.com/cn/ria" target="_blank">本专题</a>中包含的部分精彩内容有：</p>
<ul>
<li><a href="http://www.infoq.com/cn/articles/ria-panel" mce_href="http://www.infoq.com/cn/articles/ria-panel" target="_blank">虚拟座谈会：RIA和Ajax技术的现状与展望</a><br mce_bogus="1"></li>
<li><a href="http://www.infoq.com/cn/news/2007/07/dhh-debates-ria-future" mce_href="http://www.infoq.com/cn/news/2007/07/dhh-debates-ria-future" target="_blank">争论又起，RIA的未来在哪里？</a><br mce_bogus="1"></li>
<li><a href="http://www.infoq.com/cn/news/2007/05/silverlisht-javafx-flex" mce_href="http://www.infoq.com/cn/news/2007/05/silverlisht-javafx-flex" target="_blank">Silverlight、JavaFX、Flex/Flash技术比较</a><br mce_bogus="1"></li>
<li><a href="http://www.infoq.com/cn/articles/java-flex-blazeds" mce_href="http://www.infoq.com/cn/articles/java-flex-blazeds" target="_blank">Java程序员学习Flex和BlazeDS的十三个理由</a><br mce_bogus="1"></li>
<li><a href="http://www.infoq.com/cn/news/2008/11/ria-frameworks-survey" mce_href="http://www.infoq.com/cn/news/2008/11/ria-frameworks-survey" target="_blank">RIA框架大调查</a><br mce_bogus="1"></li>
<li><a href="http://www.infoq.com/cn/articles/nasdaq-case-study-air-and-s3" mce_href="http://www.infoq.com/cn/articles/nasdaq-case-study-air-and-s3" target="_blank">InfoQ案例研究：纳斯达克市场回放</a><br mce_bogus="1"></li>
<li><a href="http://www.infoq.com/cn/news/2009/06/ajax-frameworks" mce_href="http://www.infoq.com/cn/news/2009/06/ajax-frameworks" target="_blank">选择你的Ajax框架</a><br mce_bogus="1"></li>
<li><a href="http://www.infoq.com/cn/news/2009/05/Times-AIR-Reader" mce_href="http://www.infoq.com/cn/news/2009/05/Times-AIR-Reader" target="_blank">纽约时报放弃WPF/Silverlight，转向Adobe AIR</a><br mce_bogus="1"></li>
<li>RichClient/<a href="http://www.iwanna.cn/tags/ria/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with RIA">RIA</a>原则与实践（<a href="http://www.infoq.com/cn/articles/thoughtworks-practice-partiii" mce_href="http://www.infoq.com/cn/articles/thoughtworks-practice-partiii" target="_blank">上</a>）（<a href="http://www.infoq.com/cn/articles/thoughtworks-practice-partiii-ii" mce_href="http://www.infoq.com/cn/articles/thoughtworks-practice-partiii-ii" target="_blank">下</a>）</li>
<li><a href="http://www.infoq.com/cn/news/2008/04/top-10-flex-mistakes" mce_href="http://www.infoq.com/cn/news/2008/04/top-10-flex-mistakes" target="_blank">构建Flex应用的10大误区</a><br mce_bogus="1"></li>
</ul>
<p><a href="http://www.infoq.com/cn/ria" mce_href="http://www.infoq.com/cn/ria" target="_blank">本专题</a>所提供的<a href="http://www.iwanna.cn/tags/flash/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with Flash">Flash</a>开发平台部分工具下载资源包括：</p>
<ul>
<li><b><a href="http://www.iwanna.cn/tags/flash/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with Flash">Flash</a> Catalyst：</b>一个无需编码即可快速创建用户界面的新型专业交互设计工具。（<a href="http://www.infoq.com/cn/vendorcontent/show.action?vcr=625" mce_href="http://www.infoq.com/cn/vendorcontent/show.action?vcr=625" target="_blank">高速下载</a>）</li>
<li><b><a href="http://www.iwanna.cn/tags/flash/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with Flash">Flash</a> Builder：</b>包含了三个主要主题：开发人员生产率，设计人员-开发人员工作流和以数据为中心的应用开发等。以及Flex 4框架等。（<a href="http://www.infoq.com/cn/vendorcontent/show.action?vcr=626" mce_href="http://www.infoq.com/cn/vendorcontent/show.action?vcr=626" target="_blank">高速下载</a>）</li>
<li><b>Flex 4 SDK：</b>支持开发人员创建Flex应用，还支持设计人员使用Adobe <a href="http://www.iwanna.cn/tags/flash/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with Flash">Flash</a> Catalyst创建交互式设计。（<a href="http://www.infoq.com/cn/vendorcontent/show.action?vcr=628" mce_href="http://www.infoq.com/cn/vendorcontent/show.action?vcr=628" target="_blank">高速下载</a>）</li>
<li><b>Adobe AIR：</b>使您能够始终拥有您喜爱的 Web 应用程序（<a href="http://www.infoq.com/cn/vendorcontent/show.action?vcr=629" mce_href="http://www.infoq.com/cn/vendorcontent/show.action?vcr=629" target="_blank">高速下载</a>）</li>
</ul>
<hr />
<p>© <a href="http://www.iwanna.cn">我想网</a> Akon 所有 , 2009. |
<a href="http://www.iwanna.cn/archives/2009/07/29/2073/">永久链接</a> |
<a href="http://www.iwanna.cn/archives/2009/07/29/2073/#comments">没有评论</a> |
提交到
<a rel="nofollow" target="_blank" href="http://www.google.com/reader/view/feed/http://www.iwanna.cn/archives/2009/07/29/2073/">Google Reader</a>
<a rel="nofollow" target="_blank" href="http://www.xianguo.com/subscribe.php?url=http://www.iwanna.cn/archives/2009/07/29/2073/">鲜果</a>
<a rel="nofollow" target="_blank" href="http://www.zhuaxia.com/add_channel.php?url=http://www.iwanna.cn/archives/2009/07/29/2073/">抓虾</a>
<hr />
</p>
	标签：<a href="http://www.iwanna.cn/topics/ui/adobe/" title="Adobe" rel="tag nofollow">Adobe</a>, <a href="http://www.iwanna.cn/tags/adobe/" title="Adobe" rel="tag nofollow">Adobe</a>, <a href="http://www.iwanna.cn/tags/flash/" title="Flash" rel="tag nofollow">Flash</a>, <a href="http://www.iwanna.cn/topics/ui/adobe/flash-adobe-ui/" title="Flash" rel="tag nofollow">Flash</a>, <a href="http://www.iwanna.cn/tags/flex/" title="Flex" rel="tag nofollow">Flex</a>, <a href="http://www.iwanna.cn/topics/ui/adobe/flex-adobe-ui/" title="Flex" rel="tag nofollow">Flex</a><br />

	<h2 class="related_post">您可能会感兴趣的其他文章</h2>
	<ul class="st-related-posts">
	<li><a href="http://www.iwanna.cn/archives/2009/07/03/1913/" title="使用Adobe Flex 3开发(MMO)大型多人在线游戏 (2009年07月3日)">使用Adobe Flex 3开发(MMO)大型多人在线游戏</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2010/07/27/4752/" title="使用框架建立富联网应用 (2010年07月27日)">使用框架建立富联网应用</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2009/04/01/120/" title="从程序员的角度切入Flex (2009年04月1日)">从程序员的角度切入Flex</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2009/05/27/1152/" title="页面插入Flash Object完全攻略 (2009年05月27日)">页面插入Flash Object完全攻略</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2010/04/30/2881/" title="乔布斯:关于Flash的几点思考 (2010年04月30日)">乔布斯:关于Flash的几点思考</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2009/03/30/5/" title="为设计师和开发者准备的16款Adobe AIR程序 (2009年03月30日)">为设计师和开发者准备的16款Adobe AIR程序</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2009/05/27/1184/" title="WordPress 的 Flash 时钟插件 (2009年05月27日)">WordPress 的 Flash 时钟插件</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2010/06/13/3958/" title="Flex程序员的四重境界 (2010年06月13日)">Flex程序员的四重境界</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2010/07/14/4531/" title="Flash游戏引擎列表 (2010年07月14日)">Flash游戏引擎列表</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2009/06/05/1725/" title="4个轻量级的Adobe阅读器替代软件 (2009年06月5日)">4个轻量级的Adobe阅读器替代软件</a> </li>
</ul>


<p><small>Feed enhanced by <a href='http://planetozh.com/blog/my-projects/wordpress-plugin-better-feed-rss/'>Better Feed</a> from  <a href='http://planetozh.com/blog/'>Ozh</a></small></p>
]]></content:encoded>
			<wfw:commentRss>http://www.iwanna.cn/archives/2009/07/29/2073/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>使用Adobe Flex 3开发(MMO)大型多人在线游戏</title>
		<link>http://www.iwanna.cn/archives/2009/07/03/1913/</link>
		<comments>http://www.iwanna.cn/archives/2009/07/03/1913/#comments</comments>
		<pubDate>Fri, 03 Jul 2009 01:15:52 +0000</pubDate>
		<dc:creator>seasun</dc:creator>
				<category><![CDATA[Adobe]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[Flex]]></category>

		<guid isPermaLink="false">http://www.iwanna.cn/?p=1913</guid>
		<description><![CDATA[使用FLEX3开发大型多人在线游戏
大型多人在线游戏(MMO)技术已经涉足到各种软件形式中了.当我们还在思考MMO时,多人游戏已经使很多玩家能够实时连接进行合作与竞争。(见图表1). 魔兽世界在通过DVD-ROM 订阅的MMO游戏行业中处在黄金标准的位置，但是，通过Abobe-flash平台，我们可以利用魔兽的一小部分时间和预算来发展一个自由来玩的通过浏览器的类似于WAKFU和 Small world 的MMO游戏。
 

Figure 1. Some leading MMO games.
在这篇文章中,我旨在比你想象的少的时间内告诉你制作一个完整的(并且简单的)大型在线游戏的经验。同样，我会给你一些示例代码以使你能掌握这种高水平的思想。这些例子仅限于FLEX3的浏览器版，但是其中好多的信息都是与其他技术的应用程序开发者相关的。包括Adobe Flash CS4以及Flex 3 AIR桌面应用程序。
我希望这些能给大型在线游戏的入门者做一个介绍，同时，也让高手们获得一些知识。
什么是MMO?
在超过十年的时间里，大型多人在线技术已经成为了桌面PC游戏发展中的主流。 在最近几年中，我们发现它在浏览器端也很流行。一个MMO应用程序是一种这样的软件，它能实时连接很多人，同时，一个人的操作动作会马上影响到其他的人。就像在聊天窒里，当你打出一则消息时，接受者会马上看到这则消息一样。当你攻击一个敌人的时候，这个敌人会被打，或者挡住攻击并且反攻。在MMO最普通的形式中，一个MMO应用程序是基于团队，同时看重个人体验与人机交互的应用程序。MMO有好多种：角色扮演游戏 (MMORPGs), 实时战略游戏(MMORTS), 第一人称射击游戏 (MMOFPS), 基于浏览器的大型在线游戏 (BBMMOGs)以及其他更多。
MMORPG是非常流行的，或者仿真游戏。一个仿真实世界的游戏是通过互联网接口联接很多人制作出仿真世界的游戏。仿真游戏通常具有六个特点:

共享空间:这是个可以允许多人同时参加的世界。
图形用户界面:这个世界描绘出真实的空间距离, 从二维的图片转变成三维的环境。
实时:相互操作都是实时发生的。
相互影响:这个世界允许用户更改、发展、建造、或者提交自定义的内容。
一直运行:无论单个用户是否登录，都不会影响到整个程序的运行。
社会化的/团体化的:这个世界允许并且鼓励各种社团形式，如团队、行会、俱乐部、集团、同居、邻居等等。

随着计算机硬件性能与技术的快速发展，MMO游戏已从桌面程序发展到网络程序。这篇文章的重点在后者。
MMO游戏是商业性的
MMO游戏非常流行。随着越来越多的游戏玩家通过宽带来上网，越来越来的因特网用户开始尝试MMO游戏，使用人数正快速的增加。吸引人的WEB2。0以及RIA特性使这些游戏在游戏玩家中快速的流行起来。用户在空闲时间中都沉浸在这些游戏中，哪里有用户，哪里就有商机。但是传统的商业游戏沉浸于在购买时加入一系列的费用。MMO游戏则是要交付不断增加的用于发展与维护的费用，并且由于在线玩的原因会带来其他的商业机会。游戏开发者与发行者将通过多种方式从成功的MMO游戏中获利。发行者通常会选择以下几条:

订阅:用户每月资付一定钱以能够继续玩，这是桌面发展中的获利方式，并且曾经一度成为最流行的获利方式。
广告:在基于浏览器的游戏中，我们可以发现，游戏发行商会在游戏场景上方放置一个banner广 告，这些广告链接到普通网页，有些广告会被融入到游戏场景中。举个例子，你在游戏中的角色会被一个高速公路广告牌指引，而这个广告牌上显示的将会是真实的 广告信息。除了这种方式，也可能是下面的两种方式：用户游戏是不需要预选支付费用的。这使观众面得到最大化。由于因特网与Mmo游戏固有的连通性，新广告可以在游戏体验中轮换（出现），而且韵律可以决定每一个广告可以吸引多少眼球。
虚拟物品的销售:虽然玩游戏可能不要钱，但是用户可以通过付现金购买虚拟装备来增加角色的属性或者提高游戏的优势。
虚拟货币的销售: While game play may be free, users pay real-world cash to credit their account with virtual currency. The currency is then used to perform game transactions for things like [...]]]></description>
			<content:encoded><![CDATA[<p><span style="font-size: 16pt; font-family: '微软雅黑';">使用<span>FLEX3</span>开发大型多人在线游戏</span></p>
<p><span style="font-family: '微软雅黑';">大型多人在线游戏<span>(MMO)</span>技术已经涉足到各种软件形式中了<span>.</span>当我们还在思考<span>MMO</span>时<span>,</span>多人游戏已经使很多玩家能够实时连接进行合作与竞争。<span>(</span>见图表<span>1). </span></span><span style="font-family: '微软雅黑'; color: #000000;">魔兽世界在通过<span>DVD-ROM </span>订阅的<span>MMO</span>游戏行业中处在黄金标准的位置，但是，通过<span>Abobe-<a href="http://www.iwanna.cn/tags/flash/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with Flash">flash</a></span>平台，我们可以利用魔兽的一小部分时间和预算来发展一个自由来玩的通过浏览器的类似于<span>WAKFU</span>和<span> Small world </span>的<span>MMO</span>游戏。</span></p>
<p><span style="font-size: 10pt; color: #000000;"> </span></p>
<p><span id="more-1913"></span></p>
<div class="rightContent"><img src="http://www.adobe.com/newsletters/edge/april2009/articles/article2/images/fig1.png" alt="Some leading MMO games" width="239" height="392" /><strong>Figure 1.</strong> Some leading MMO games.</div>
<p><span style="font-size: 12pt; font-family: '微软雅黑';">在这篇文章中<span>,</span>我旨在比你想象的少的时间内告诉你制作一个完整的<span>(</span>并且简单的<span>)</span>大型在线游戏的经验。同样，我会给你一些示例代码以使你能掌握这种高水平的思想。这些例子仅限于<span>FLEX3</span>的浏览器版，但是其中好多的信息都是与其他技术的应用程序开发者相关的。包括<span>Adobe <a href="http://www.iwanna.cn/tags/flash/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with Flash">Flash</a> CS4</span>以及<span>Flex 3 AIR</span>桌面应用程序。</span></p>
<p><span style="font-size: 12pt; font-family: '微软雅黑';">我希望这些能给大型在线游戏的入门者做一个介绍，同时，也让高手们获得一些知识。</span></p>
<p><strong><span style="font-size: 18pt; font-family: '微软雅黑';">什么是<span>MMO?</span></span></strong></p>
<p><span style="font-size: 12pt; font-family: '微软雅黑';">在超过十年的时间里，大型多人在线技术已经成为了桌面<span>PC</span>游戏发展中的主流。 在最近几年中，我们发现它在浏览器端也很流行。一个<span>MMO</span>应用程序是一种这样的软件，它能实时连接很多人，同时，一个人的操作动作会马上影响到其他的人。就像在聊天窒里，当你打出一则消息时，接受者会马上看到这则消息一样。当你攻击一个敌人的时候，这个敌人会被打，或者挡住攻击并且反攻。在<span>MMO</span>最普通的形式中，一个<span>MMO</span>应用程序是基于团队，同时看重个人体验与人机交互的应用程序。<span>MMO</span>有好多种：角色扮演游戏<span> (MMORPGs), </span>实时战略游戏<span>(MMORTS), </span>第一人称射击游戏<span> (MMOFPS), </span>基于浏览器的大型在线游戏<span> (BBMMOGs)</span>以及其他更多。</span></p>
<p><span style="font-size: 12pt; font-family: '微软雅黑';">MMORPG</span><span style="font-size: 12pt; font-family: '微软雅黑';">是非常流行的，或者仿真游戏。一个仿真实世界的游戏是通过互联网接口联接很多人制作出仿真世界的游戏。仿真游戏通常具有六个特点<span>:</span></span></p>
<ul type="disc">
<li><strong><span style="font-size: 12pt; font-family: '微软雅黑';">共享空间<span>:</span></span></strong><span style="font-size: 12pt; font-family: '微软雅黑';">这是个可以允许多人同时参加的世界。</span></li>
<li><strong><span style="font-size: 12pt; font-family: '微软雅黑';">图形用户界面<span>:</span></span></strong><span style="font-size: 12pt; font-family: '微软雅黑';">这个世界描绘出真实的空间距离<span>, </span>从二维的图片转变成三维的环境。</span></li>
<li><strong><span style="font-size: 12pt; font-family: '微软雅黑';">实时<span>:</span></span></strong><span style="font-size: 12pt; font-family: '微软雅黑';">相互操作都是实时发生的。</span></li>
<li><strong><span style="font-size: 12pt; font-family: '微软雅黑';">相互影响<span>:</span></span></strong><span style="font-size: 12pt; font-family: '微软雅黑';">这个世界允许用户更改、发展、建造、或者提交自定义的内容。</span></li>
<li><strong><span style="font-size: 12pt; font-family: '微软雅黑';">一直运行<span>:</span></span></strong><span style="font-size: 12pt; font-family: '微软雅黑';">无论单个用户是否登录，都不会影响到整个程序的运行。</span></li>
<li><strong><span style="font-size: 12pt; font-family: '微软雅黑';">社会化的<span>/</span>团体化的<span>:</span></span></strong><span style="font-size: 12pt; font-family: '微软雅黑';">这个世界允许并且鼓励各种社团形式，如团队、行会、俱乐部、集团、同居、邻居等等。</span></li>
</ul>
<p><span style="font-size: 12pt; font-family: '微软雅黑';">随着计算机硬件性能与技术的快速发展，<span>MMO</span>游戏已从桌面程序发展到网络程序。这篇文章的重点在后者。</span></p>
<p><strong><span style="font-size: 18pt; font-family: '微软雅黑';">MMO</span></strong><strong><span style="font-size: 18pt; font-family: '微软雅黑';">游戏是商业性的</span></strong></p>
<p><span style="font-size: 12pt; font-family: '微软雅黑';">MMO</span><span style="font-size: 12pt; font-family: '微软雅黑';">游戏非常流行。随着越来越多的游戏玩家通过宽带来上网，越来越来的因特网用户开始尝试<span>MMO</span>游戏，使用人数正快速的增加。吸引人的<span>WEB2</span>。<span>0</span>以及<span><a href="http://www.iwanna.cn/tags/ria/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with RIA">RIA</a></span>特性使这些游戏在游戏玩家中快速的流行起来。用户在空闲时间中都沉浸在这些游戏中，哪里有用户，哪里就有商机。但是传统的商业游戏沉浸于在购买时加入一系列的费用。<span>MMO</span>游戏则是要交付不断增加的用于发展与维护的费用，并且由于在线玩的原因会带来其他的商业机会。游戏开发者与发行者将通过多种方式从成功的<span>MMO</span>游戏中获利。发行者通常会选择以下几条<span>:</span></span></p>
<ul type="disc">
<li><strong><span style="font-size: 12pt; font-family: '微软雅黑';">订阅<span>:</span></span></strong><span style="font-size: 12pt; font-family: '微软雅黑';">用户每月资付一定钱以能够继续玩，这是桌面发展中的获利方式，并且曾经一度成为最流行的获利方式。</span></li>
<li><strong><span style="font-size: 12pt; font-family: '微软雅黑';">广告<span>:</span></span></strong><span style="font-size: 12pt; font-family: '微软雅黑';">在基于浏览器的游戏中，我们可以发现，游戏发行商会在游戏场景上方放置一个<span>banner</span>广 告，这些广告链接到普通网页，有些广告会被融入到游戏场景中。举个例子，你在游戏中的角色会被一个高速公路广告牌指引，而这个广告牌上显示的将会是真实的 广告信息。除了这种方式，也可能是下面的两种方式：用户游戏是不需要预选支付费用的。这使观众面得到最大化。由于因特网与<span>Mmo</span>游戏固有的连通性，新广告可以在游戏体验中轮换（出现），而且韵律可以决定每一个广告可以吸引多少眼球。</span></li>
<li><strong><span style="font-size: 12pt; font-family: '微软雅黑';">虚拟物品的销售<span>:</span></span></strong><span style="font-size: 12pt; font-family: '微软雅黑';">虽然玩游戏可能不要钱，但是用户可以通过付现金购买虚拟装备来增加角色的属性或者提高游戏的优势。</span></li>
<li><strong><span style="font-size: 12pt; font-family: '微软雅黑';">虚拟货币的销售<span>:</span></span></strong><span style="font-size: 12pt; font-family: '微软雅黑';"> While game play may be free, users pay real-world cash to credit their account with virtual currency. The currency is then used to perform game transactions for things like advancing their character growth or purchasing virtual items.</span></li>
<li><strong><span style="font-size: 12pt; font-family: '微软雅黑';">Sponsorships:</span></strong><span style="font-size: 12pt; font-family: '微软雅黑';"> Real-world companies who wish to have their brands integrated into the game pay the publishers. An example is a clothing company who wishes to include virtual clothes in the virtual world.</span></li>
</ul>
<p><span style="font-size: 12pt; font-family: '微软雅黑';">Surely, as the audience for MMO gaming expands, advertisers will become increasingly creative with how they monetize the games in this industry.</span></p>
<p><strong><span style="font-size: 18pt; font-family: '微软雅黑';">策划制作一个<span>MMO</span>游戏</span></strong></p>
<p><span style="font-size: 12pt; font-family: '微软雅黑';">在规划的互动项目时，重要的是要有令人信服的创造性以及使用匹配的适当技术实现您的想法以及满足您的目标受众。在下面的章节中<span>,</span>我将提供整体的<span>MMO</span>制作的意见以及可用技术的讨论。</span></p>
<p><img src="http://www.adobe.com/newsletters/edge/april2009/articles/article2/images/fig2.png" alt="RIP game logo" width="260" height="130" /></p>
<p><strong><span style="font-size: 12pt; font-family: '微软雅黑';">图<span> 2.</span></span></strong><span style="font-size: 12pt; font-family: '微软雅黑';"> RIP </span><span style="font-size: 12pt; font-family: '微软雅黑';">游戏<span>LOGO.</span></span></p>
<p><span style="font-size: 12pt; font-family: '微软雅黑';">举个例子<span>,</span>让我们假设我们的目标市场是<span>8-10</span>岁大的男孩与女孩，次目标市场是具有童心的成年人。我制作一个叫做<span>RIP</span>的简单的，完整的<span>FLEX</span>游戏以供我们来讨论一下。它根本不是一个完整的工程，但它的用处是为了让我们交流一下<span>MMO</span>游戏策划与开发的思想。</span></p>
<p><strong><span style="font-size: 13.5pt; font-family: '微软雅黑';">角色与故事</span></strong></p>
<p><span style="font-size: 12pt; font-family: '微软雅黑';">除了挑战与美丽的画面来吸引用户，增加角色的难度是保持<span>MMO</span>游戏长期有人玩的一个关键。人物和故事是留住你的用户群的两个关键因素。</span></p>
<p><span style="font-size: 12pt; font-family: '微软雅黑';">这里有一些提示关于设计<span>MMO</span>游戏时要考虑的<span>:</span></span></p>
<ul type="disc">
<li><strong><span style="font-size: 12pt; font-family: '微软雅黑';">独一无二<span>:</span></span></strong><span style="font-size: 12pt; font-family: '微软雅黑';">你认为伤害你的市场可能会节省您的品牌差异。如果您选择以超人的主题，因为流行的市场调研告诉您，您的用户群喜欢这样的主题，你同时要做好有半打竞争对手也想到了同样的方式的准备。</span></li>
<li><strong><span style="font-size: 12pt; font-family: '微软雅黑';">让你的角色成长<span>:</span></span></strong><span style="font-size: 12pt; font-family: '微软雅黑';">想想<span>RPG</span>游戏。里面的角色有许多特性（如强度，健康，速度和情报）      ，这些都随着经验的增加以及学习新的能力而增加。</span></li>
<li><strong><span style="font-size: 12pt; font-family: '微软雅黑';">让你的游戏情节成长<span>:</span></span></strong><span style="font-size: 12pt; font-family: '微软雅黑';">请记住，如果您希望您的<span>MMO</span>游戏产生持久的寿命。就要把您的内容设计的更像是正在进行的电视节目而不是一个孤独的卖座电影情节。您的开始部分一定要设置很多的铺垫，一定要打下好的基础。</span></li>
</ul>
<p><span style="font-size: 12pt; font-family: '微软雅黑';">对于<span>RIP</span>协议，我使用一个友好的鬼主题（见图<span>3 </span>） 。当我创建的，我无法找到一个友好的以鬼为主题的<span>MMO</span>游 戏。所以这是独一无二的。鬼魂可以有许多人的特性以及也可能产生一些超能力。这就使角色的特性可以增长。当我想到一个鬼的世界，我想几件事情：新的鬼会定 时出现，一个梦幻般的世界上任何事都是可能的，天堂与地狱的主题中角色可以死一遍又一遍。这些想法应该促进一个长期，丰富的故事情节。</span></p>
<p><img src="http://www.adobe.com/newsletters/edge/april2009/articles/article2/images/fig3.png" alt="Character art" width="103" height="193" /></p>
<p><strong><span style="font-size: 12pt; font-family: '微软雅黑';">Figure 3.</span></strong><span style="font-size: 12pt; font-family: '微软雅黑';">角色样子<span>.</span></span></p>
<p><span style="font-size: 12pt; font-family: '微软雅黑';">随着人物和故事情节的确定，您可以让作家和艺术家开始调查所需要的技术。</span></p>
<p><strong><span style="font-size: 13.5pt; font-family: '微软雅黑';">客户端与服务器端技术</span></strong></p>
<p><span style="font-size: 12pt; font-family: '微软雅黑';">MMO</span><span style="font-size: 12pt; font-family: '微软雅黑';">游戏技术，主要有两个方面要考虑：客户端和服务器端。您已完成的项目结合了这两种技术。客户端技术（即<span>Adobe <a href="http://www.iwanna.cn/tags/flash/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with Flash">Flash</a> Player</span>，<span>AIR</span>，等等）将做一切工作量大的事情<span>-</span>它负责前台表现以及鼠标和键盘的输入。服务器端的技术负责在每个客户端之间进行通信。</span></p>
<p><span style="font-size: 12pt; font-family: '微软雅黑';">从大处到细节，技术上有许多问题都要考虑。例如，什么类型的计算机不能使用您的产品？<span> Mac</span>或<span>PC</span>或两者都可以？它是桌面应用程序还是运行在<span>Web</span>浏览器？它将是一个三维的或二维的？它要运行在怎样的软件平台上<span>?</span></span></p>
<p><span style="font-size: 12pt; font-family: '微软雅黑';">If you are interested in creating casual online multi-player games without the headache of hosting your own servers, consider checking out the <a href="http://labs.adobe.com/technologies/afcs">Adobe Flash Collaboration Service</a>. </span><span style="font-size: 12pt; font-family: '微软雅黑';">对于这项工作，并与经济的考虑，我们使用的<span>Adobe <a href="http://www.iwanna.cn/tags/flash/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with Flash">Flash</a></span>平台开发并使用<span>2D</span>技术将此游戏部署在网络浏览器。我们使用了<span>Adobe FlexBuilder</span>作为我们的开发环境。我们结合客户端和服务器的技术，在客户端使用<span><a href="http://www.iwanna.cn/tags/flash/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with Flash">Flash</a> Player</span>和在服务器端使用<span><a href="http://www.electro-server.com/">ElectroServer 4</a></span>。与我们的客户端选择的<span><a href="http://www.iwanna.cn/tags/flash/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with Flash">Flash</a> Player </span>，我选择使用了一个现成的服务器技术，其中包括一个<span>ActionScript 3</span>特定的辅助性文件，因为这将有助于加快发展的速度。除了<span>ElectroServer 4 </span>，一些重要的服务器端的选择，支持<span>ActionScript 3</span>还包括<span><a href="http://www.adobe.com/products/flashmediaserver/" target="_blank">Adobe Flash Media Interactive Server 3.5</a></span>和<span><a href="http://www.smartfoxserver.com/" target="_blank">SmartFoxServer 1.6</a></span>。如果你有兴趣创造休闲多玩家游戏并不用为托管自己的服务器头痛时，可以考虑<span><a href="http://labs.adobe.com/technologies/afcs">Adobe Flash Collaboration Service</a></span>。</span></p>
<p><span style="font-size: 12pt; font-family: '微软雅黑';">我选择<span>ElectroServer 4 </span>，主要是因为它是稳定，易于开发，免费（最多<span>20</span>个用户） 。这意味着你可以开始一个新项目或测试而不用付费。此外，<span> ElectroServer 4</span>具有可扩展性，帮助文档丰富，并得到广泛支持。</span></p>
<p><span style="font-size: 12pt; font-family: '微软雅黑';">您可能还问我为什么选择二维而不是三维。虽然最新的<span><a href="http://www.iwanna.cn/tags/flash/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with Flash">Flash</a> Player 10</span>中有一些令人兴奋的<span>3D</span>能力，这是仅限于移动二维物体在三维空间或使用软件提供的解决方案（其中提供比硬件提供的解决方案还慢的动画） ，如<span>Papervision3D </span>。我很期待<span><a href="http://www.iwanna.cn/tags/flash/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with Flash">Flash</a> Player</span>中<span>3D</span>的未来 ，但是据我的经验，<span> <a href="http://www.iwanna.cn/tags/flash/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with Flash">Flash</a></span>平台目前不是强大的<span>3D</span>需求的最好的选择。</span></p>
<p><strong><span style="font-size: 18pt; font-family: '微软雅黑';">开发</span></strong></p>
<p><span style="font-size: 12pt; font-family: '微软雅黑';">现在，我已决定好了友好鬼主题故事和人物，<span><a href="http://www.iwanna.cn/tags/flash/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with Flash">Flash</a> Player</span>作为客户端，并且<span>ElectroServer 4</span>作为服务器端，我准备开始开<span>Flex Builder</span>中进行开发。对于用户界面，我们将界面分块，以满足特定用户的需求（见图<span>4 </span>） 。每个地区获取用户输入，并作出对应反应：</span></p>
<ul type="disc">
<li><strong><span style="font-size: 12pt; font-family: '微软雅黑';">连接<span>:</span></span></strong><span style="font-size: 12pt; font-family: '微软雅黑';">允许用户登录和登出程序<span>.</span></span></li>
<li><strong><span style="font-size: 12pt; font-family: '微软雅黑';">用户列表<span>:</span></span></strong><span style="font-size: 12pt; font-family: '微软雅黑';">显示目前在线的所有用户。</span></li>
<li><strong><span style="font-size: 12pt; font-family: '微软雅黑';">聊天记录<span>:</span></span></strong><span style="font-size: 12pt; font-family: '微软雅黑';">显示游戏的聊天记录<span>.</span></span></li>
<li><strong><span style="font-size: 12pt; font-family: '微软雅黑';">聊天输入口<span>:</span></span></strong><span style="font-size: 12pt; font-family: '微软雅黑';">允许用户向游戏中的当前用户发送一则消息<span>.</span></span></li>
<li><strong><span style="font-size: 12pt; font-family: '微软雅黑';">游戏界面<span>:</span></span></strong><span style="font-size: 12pt; font-family: '微软雅黑';">显示了游戏世界，由背景艺术和用户角色组成。用户通过控件角色的位置来控制角色进行移动。</span></li>
</ul>
<p><img src="http://www.adobe.com/newsletters/edge/april2009/articles/article2/images/fig4.png" alt="Rough layout of components" width="581" height="419" /></p>
<p><strong><span style="font-size: 12pt; font-family: '微软雅黑';">Figure 4.</span></strong><span style="font-size: 12pt; font-family: '微软雅黑';">粗略布局的组成部分。</span></p>
<p><strong><span style="font-size: 13.5pt; font-family: '微软雅黑';">创建组件</span></strong></p>
<p><span style="font-size: 12pt; font-family: '微软雅黑';">我们将按照图<span>4</span>来创造<span>Flex</span>组件。对于每一个组成部分，我们必须考虑到用户的需要，来决定<span>UI</span>元素，以满足这些需要，并充分利用<span>Flex</span>中的<span>MXML</span>来轻松地创建布局。在<span>Flex</span>开发过程中<span>,</span>这是最基本的，所以让我们来看看一个简单的例子。</span></p>
<p><span style="font-size: 12pt; font-family: '微软雅黑';">如同任何短信应用，聊天输入在应用程序的布局的底部（见图<span>5 </span>） ，用户可以输入文字信息，并将其提交到聊天记录中以供其他用户看到。在参与者之间这是主要的通信方式。</span></p>
<p><img src="http://www.adobe.com/newsletters/edge/april2009/articles/article2/images/fig5.png" alt="Chat Input component before final artwork" width="650" height="75" /></p>
<p><strong><span style="font-size: 12pt; font-family: '微软雅黑';">Figure 5.</span></strong><span style="font-size: 12pt; font-family: '微软雅黑';">聊天输入部分</span></p>
<p><span style="font-size: 12pt; font-family: '微软雅黑';">TextInput</span><span style="font-size: 12pt; font-family: '微软雅黑';">与<span>Button</span>组件放在一个<span>Panel</span>组件中<span>, ID</span>属性是用来给主程序中相关功能控件进行编号，当用户点击<span>chatSend_button</span>实例，在<span>chat_textinput</span>实例中的任何文字，将传递给其他玩家。在下一节中，我们将看到这个信息是如何传递给服务器。</span></p>
<p><img src="http://www.adobe.com/newsletters/edge/april2009/articles/article2/images/fig6.png" alt="Chat Input component’s MXML" width="650" height="75" /></p>
<p><strong><span style="font-size: 12pt; font-family: '微软雅黑';">Figure 6.</span></strong><span style="font-size: 12pt; font-family: '微软雅黑';">聊天输入口的<span>MXML.</span></span></p>
<p><strong><span style="font-size: 13.5pt; font-family: '微软雅黑';">客户端<span>-</span>服务器端 代码 </span></strong></p>
<p><span style="font-size: 12pt; font-family: '微软雅黑';">我们继续建立我们的组成部分放下一些客户端与服务器之间的通讯。开发多人游戏与开发单机游戏的根本差别在，当用户交互而产生的任何东西都不应该在屏幕上进行修改。所有的游戏客户端（游戏运行的某个特定的玩家） ，包括提供了输入口的玩家，应当等待回信当服务器说“玩家<span>1</span>已经发出了一个聊天信息” ，例如<span>,</span>当玩家<span>1</span>的客户端发送请求到服务器，服务器发送响应给每一位客户。只有到那时，屏幕才作出更新。当然，玩家<span>1</span>的客户端必须随时准备处理回应，并且当客户端发送请求时<span>,</span>其可以随时随刻的更新。玩家<span>1</span>使用<span>Client (A)</span>发出一个聊天信息请求和处理响应（见图<span>7 </span>） 。发出的信息包含足够的信息以供所有客户作出适当的反应。在这种情况作出的反应很简单地放入到聊天记录中以供所有用户可见。</span></p>
<p><img src="http://www.adobe.com/newsletters/edge/april2009/articles/article2/images/fig7.png" alt="Client-to-server-to-client(s) message flow" width="616" height="489" /></p>
<p><strong><span style="font-size: 12pt; font-family: '微软雅黑';">Figure 7.</span></strong><span style="font-size: 12pt; font-family: '微软雅黑';">客户端<span>-</span>服务器端<span>-</span>客户端信息流</span></p>
<p><span style="font-size: 12pt; font-family: '微软雅黑';">在这个游戏中，有<span>5</span>个类型的请求<span>/</span>响应配对（见图<span>8 </span>） 。所有与服务器端的交互是通过一个叫作称为<span>ElectroServer</span>的<span>ActionScript 3</span>对象来实现的。当程序加载连接服务器与加入到房间中时，该组合被显示。所有文字聊天和所有玩家的操作动作（如位置的变化，进攻，防守，等等）用这种方式进行发送。</span></p>
<p><span style="font-size: 12pt; font-family: '微软雅黑';">当<span>PublicMessageRequest</span>仅发送文字，它通常是作为一个聊天信息。但不仅仅是文字是可能的。一个消息也可以发送一个<span>EsObject</span>对象。这是一个通用的<span>ActionScript 3</span>对象。开发包装<span>EsObject</span>的有用特性<span>-</span>例如，玩家在游戏中移动的新的<span>X</span>和<span>Y</span>的位置。更复杂的游戏功能较重使用<span>EsObjects</span>并且封装更多的数据。创造复杂的游戏而不通过<span>EsObjects</span>传送太多的数据是一种艺术。发送较小的信息将有助于游戏反应速度。最后配对显示如何断开客户端从服务器室当用户结束他或她的游戏。</span></p>
<p><img src="http://www.adobe.com/newsletters/edge/april2009/articles/article2/images/fig8.png" alt="Request/Response pairs for RIP" width="340" height="361" /></p>
<p><strong><span style="font-size: 12pt; font-family: '微软雅黑';">Figure 8.</span></strong><span style="font-size: 12pt; font-family: '微软雅黑';"> RIP</span><span style="font-size: 12pt; font-family: '微软雅黑';">的请求<span>/</span>响应对<span>.</span></span></p>
<p><strong><span style="font-size: 13.5pt; font-family: '微软雅黑';">技能<span>, </span>皮肤以及样式</span></strong></p>
<p><span style="font-size: 12pt; font-family: '微软雅黑';">因为<span>Adobe</span>的<span>Creative Suite 4</span>产品之间的合作，整合写好的控件到<span>Flex</span>项目是很简单。这是使用<span>FLEX</span>一个主要好处。如果仔细规划高效率的工作流程，开发人员和设计人员，可以对项目以最少的冲突。</span></p>
<p><span style="font-size: 12pt; font-family: '微软雅黑';">对于<span>RIP</span>，我开始铺设应用程序的<span>MXML</span>而平面设计师编写<span><a href="http://www.iwanna.cn/tags/css/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with CSS">CSS</a></span>来定义颜色和字体。我继续编写角色的移动和交互而艺术设计师用<span><a href="http://www.iwanna.cn/tags/flash/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with Flash">Flash</a></span>制作背景和角色。我们三人几乎没有中断工作，因为<span>RIP</span>参考可见的元素进行开发。</span></p>
<p><span style="font-size: 12pt; font-family: '微软雅黑';">在<span>Flex Builder</span>中主要有两种类型的视觉效果：造型和外观。在程序中，造型决定基本色泽和文本显示属性。出色的（但还远远没有完成）的<span><a href="http://www.iwanna.cn/tags/css/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with CSS">CSS</a></span>兼容性的<span>Flex</span>允许一个<span><a href="http://www.iwanna.cn/tags/css/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with CSS">CSS</a></span>文本文件来定义样式属性。艺术团队编辑和保存每个样式的变化。一个例子是<span>panels</span>的背景颜色梯度和各种字体的处理（见图<span>9 </span>） 。</span></p>
<p><span style="font-size: 12pt; font-family: '微软雅黑';">应用程序中包括皮肤制定与动画的设计。在<span>RIP</span>中，应用程序中嵌入一个包含资源的<span>SWF</span>文件。界面小组利用<span>Adobe <a href="http://www.iwanna.cn/tags/flash/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with Flash">Flash</a> CS4</span>专业版重新发布此<span>SWF</span>以更新每个皮肤。每一次的<span>Flex</span>项目是重新编译，发布的游戏以程序上与创造性上作出修改。一个皮肤制作的例子就是<span>RIP LOGO</span>或鬼魂的动画角色设计（见图<span>9 </span>） 。</span></p>
<p><img src="http://www.adobe.com/newsletters/edge/april2009/articles/article2/images/fig9.png" alt="Finished game with complete styles and skins" width="650" height="485" /></p>
<p><strong><span style="font-size: 12pt; font-family: '微软雅黑';">Figure 9.</span></strong><span style="font-size: 12pt; font-family: '微软雅黑';">完成游戏的风格和完整的皮肤。</span></p>
<p><span style="font-size: 12pt; font-family: '微软雅黑';">现在我们有了一个坚实的，抛光建立的游戏， 我们都愿意尝试一下。虽然尚未针对许多用户优化，游戏应处理几十个屏幕。加入有趣的是容易的。单击连接并且一个独特的彩色鬼魂显示在屏幕上。输入文字信息 进行交流，然后点击游戏中的任何地方，来控件你的游戏角色。更大的游戏可以扩大到包括化身属性，如经验和速度，以完成任务，库存物品收集，和更多的世界来 探索。</span></p>
<p><strong><span style="font-size: 18pt; font-family: '微软雅黑';">下一步</span></strong></p>
<p><span style="font-size: 12pt; font-family: '微软雅黑';">除了发展自己的游戏，有两个重要的辅助因素：在线整合您的应用程序并规划项目的维护工作。</span></p>
<p><strong><span style="font-size: 13.5pt; font-family: '微软雅黑';">整合</span></strong></p>
<p><span style="font-size: 12pt; font-family: '微软雅黑';">你的开发周期即将走到尽头时，您需要在线整合您的应用程序。在开发过程中，你可以在您的桌面上运行的一个<span>ElectroServer</span>实例，并直接与出版的<span>SWF</span>文件交互。只需打开两个或两个以上的游戏<span>SWF</span>文件在您的桌面上，以测试多个用户。这个工作流程可以快速发展。</span></p>
<p><span style="font-size: 12pt; font-family: '微软雅黑';">一旦你已经准备好您的应用程序的在线测试，请执行下列步骤：</span></p>
<ol type="1">
<li><span style="font-size: 12pt; font-family: '微软雅黑';">在<span>Web</span>服务器上安装和运行的一个<span>ElectroServer</span>实例。</span></li>
<li><span style="font-size: 12pt; font-family: '微软雅黑';">您的游戏配置要求在线实例，而非您的桌面实例。</span></li>
<li><span style="font-size: 12pt; font-family: '微软雅黑';">浏览网页，其中包含您的<span>SWF</span>文件，并开始播放。打开两个或两个以上的窗口，以该网页来自同一台式电脑或台式机，以测试不同的多个用户。</span></li>
</ol>
<p><span style="font-size: 12pt; font-family: '微软雅黑';">请记住，对大多数商业应用，你还需要某种玩家匹配系统<span>-</span>通常称为<span>lobby</span>， 这样，用户就可以找到朋友，并开始游戏。您可以建立一个<span>lobby</span>到您的游戏或使用外部的。您可以使用一个精心设计的外部<span>lobby</span>作为入口成多个<span>MMO</span>游戏，所以当你部署多人游戏你不需要重新发明车轮。</span></p>
<p><strong><span style="font-size: 13.5pt; font-family: '微软雅黑';">维护</span></strong></p>
<p><span style="font-size: 12pt; font-family: '微软雅黑';">除了典型的应用系统维修，包括错误修正和功能要求，<span> MMO</span>游戏需要更多的行动，不断推出服务后。重要的是要考虑推出网络游戏项目作为一个完整的游戏所需要的。许多商业模式的网络游戏应用受益于前面提到的长期用户。</span></p>
<p><span style="font-size: 12pt; font-family: '微软雅黑';">用户全神贯注维持数月或数年，需要坚实的社会管理和定期的内容更新。大部分用户将享受来自与其他玩家互动。新玩家加入后引起的社会动态与戏剧性发展将捕获用户的注意力。这是网络游戏类型的游戏开发商一个最大的优势。然而，有很大的竞争来自其他的<span>MMO</span>游戏，以及用户与用户共享，可享受其他许多游戏。为了使您的游戏令人兴奋并保持新鲜，并确保您的用户继续参与，建立一个维持战略去产生更多的角色，游戏关卡，和情节随着时间的推移。由于开发商往往不充分认识维护要求，因此没有和预算范围内保持均衡，保养不善是导致<span>MMO</span>游戏死亡的最大原因。</span></p>
<p><strong><span style="font-size: 18pt; font-family: '微软雅黑';">结尾</span></strong></p>
<p><span style="font-size: 12pt; font-family: '微软雅黑';">MMO</span><span style="font-size: 12pt; font-family: '微软雅黑';">游戏结合最好的<span>Web 2.0</span>和<span><a href="http://www.iwanna.cn/tags/ria/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with RIA">RIA</a></span>方法为用户提供经验。它们可以成为令人兴奋的项目开发和有利可图的事业的游戏出版商。</span></p>
<p><span style="font-size: 12pt; font-family: '微软雅黑';">建立成功的<span>MMO</span>游戏需要认真规划，包括开发角色和故事应该是独一无二的，并允许发展，建设一个有吸引力的视觉设计，并选择适当的客户端和服务器的技术力量去实现构想。</span></p>
<p><span style="font-size: 12pt; font-family: '微软雅黑';">开发包括用户界面设计，客户端服务器通信，游戏逻辑，艺术和皮肤。我们相信的<span>Flex Builder</span>是一个理想的客户端的技术的选择，因为它灵活的开发环境。再加上<span>Adobe</span>公司的<span>Creative Suite 4 </span>，<span>Flex Builder</span>将使你从一开始就顺利地构建您的团队协作。</span></p>
<p><span style="font-size: 12pt; font-family: '微软雅黑';">如果您计划真正特别的东西，制定严密，并保持您的项目启动后运行很久，你就会使用<span>Flex 3</span>创造一个成功的<span>MMO</span>游戏。</span></p>
<p><strong><span style="font-size: 18pt; font-family: '微软雅黑';">致谢</span></strong></p>
<p><span style="font-size: 12pt; font-family: '微软雅黑';">我特别感谢作出贡献的艺术家。<span><a href="http://warrenkenlee.blogspot.com/" target="_blank">Warren Lee</a></span>创造了风格和游戏艺术和<span>Bill Coons</span>的<span><a href="http://www.billcoons.com/" target="_blank">BillCoons.com</a></span>制作了皮肤与界面图形设计。</span></p>
<hr />
<p>© <a href="http://www.iwanna.cn">我想网</a> Akon 所有 , 2009. |
<a href="http://www.iwanna.cn/archives/2009/07/03/1913/">永久链接</a> |
<a href="http://www.iwanna.cn/archives/2009/07/03/1913/#comments">没有评论</a> |
提交到
<a rel="nofollow" target="_blank" href="http://www.google.com/reader/view/feed/http://www.iwanna.cn/archives/2009/07/03/1913/">Google Reader</a>
<a rel="nofollow" target="_blank" href="http://www.xianguo.com/subscribe.php?url=http://www.iwanna.cn/archives/2009/07/03/1913/">鲜果</a>
<a rel="nofollow" target="_blank" href="http://www.zhuaxia.com/add_channel.php?url=http://www.iwanna.cn/archives/2009/07/03/1913/">抓虾</a>
<hr />
</p>
	标签：<a href="http://www.iwanna.cn/topics/ui/adobe/" title="Adobe" rel="tag nofollow">Adobe</a>, <a href="http://www.iwanna.cn/tags/adobe/" title="Adobe" rel="tag nofollow">Adobe</a>, <a href="http://www.iwanna.cn/tags/flash/" title="Flash" rel="tag nofollow">Flash</a>, <a href="http://www.iwanna.cn/topics/ui/adobe/flash-adobe-ui/" title="Flash" rel="tag nofollow">Flash</a>, <a href="http://www.iwanna.cn/tags/flex/" title="Flex" rel="tag nofollow">Flex</a>, <a href="http://www.iwanna.cn/topics/ui/adobe/flex-adobe-ui/" title="Flex" rel="tag nofollow">Flex</a><br />

	<h2 class="related_post">您可能会感兴趣的其他文章</h2>
	<ul class="st-related-posts">
	<li><a href="http://www.iwanna.cn/archives/2009/07/29/2073/" title="RIA特别专题和Flash开发平台工具下载资源发布 (2009年07月29日)">RIA特别专题和Flash开发平台工具下载资源发布</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2010/07/27/4752/" title="使用框架建立富联网应用 (2010年07月27日)">使用框架建立富联网应用</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2009/04/01/120/" title="从程序员的角度切入Flex (2009年04月1日)">从程序员的角度切入Flex</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2009/05/27/1152/" title="页面插入Flash Object完全攻略 (2009年05月27日)">页面插入Flash Object完全攻略</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2010/04/30/2881/" title="乔布斯:关于Flash的几点思考 (2010年04月30日)">乔布斯:关于Flash的几点思考</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2009/03/30/5/" title="为设计师和开发者准备的16款Adobe AIR程序 (2009年03月30日)">为设计师和开发者准备的16款Adobe AIR程序</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2009/05/27/1184/" title="WordPress 的 Flash 时钟插件 (2009年05月27日)">WordPress 的 Flash 时钟插件</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2010/06/13/3958/" title="Flex程序员的四重境界 (2010年06月13日)">Flex程序员的四重境界</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2010/07/14/4531/" title="Flash游戏引擎列表 (2010年07月14日)">Flash游戏引擎列表</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2009/06/05/1725/" title="4个轻量级的Adobe阅读器替代软件 (2009年06月5日)">4个轻量级的Adobe阅读器替代软件</a> </li>
</ul>


<p><small>Feed enhanced by <a href='http://planetozh.com/blog/my-projects/wordpress-plugin-better-feed-rss/'>Better Feed</a> from  <a href='http://planetozh.com/blog/'>Ozh</a></small></p>
]]></content:encoded>
			<wfw:commentRss>http://www.iwanna.cn/archives/2009/07/03/1913/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>页面输出时一些常用的小技巧</title>
		<link>http://www.iwanna.cn/archives/2009/04/29/894/</link>
		<comments>http://www.iwanna.cn/archives/2009/04/29/894/#comments</comments>
		<pubDate>Wed, 29 Apr 2009 04:42:58 +0000</pubDate>
		<dc:creator>seasun</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[SEO]]></category>
		<category><![CDATA[Website]]></category>
		<category><![CDATA[Wordpress]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[程序开发]]></category>
		<category><![CDATA[职业]]></category>
		<category><![CDATA[Skill]]></category>

		<guid isPermaLink="false">http://www.iwanna.cn/?p=894</guid>
		<description><![CDATA[1. 菜单一 &#124; 菜单二 &#124; 菜单三(demo1.zip )
代码结构：


Html代码 


&#60;ul&#62;&#60;li&#62;菜单一&#60;/li&#62;&#60;li&#62;菜单二&#60;/li&#62;&#60;li&#62;菜单三&#60;/li&#62;&#60;/ul&#62; 


&#60;ul&#62;&#60;li&#62;菜单一&#60;/li&#62;&#60;li&#62;菜单二&#60;/li&#62;&#60;li&#62;菜单三&#60;/li&#62;&#60;/ul&#62;
通常我们会li加css


Html代码 


border-right:1px solid #000 


border-right:1px solid #000
这样最后一个li也有右边框，是多余的，只能为最后一个li添加一个class来区分(左边框的情况类似)

而demo1中我们为li加css


Html代码 


ul{overflow:hidden;} 
ul li{float:left;list-style-type:none;border-left:1px solid #000;padding:0 20px;margin-left:-1px;} 


ul{overflow:hidden;}
ul li{float:left;list-style-type:none;border-left:1px solid #000;padding:0 20px;margin-left:-1px;}
ul的overflow:hidden和li的margin-left:-1px是为了让最左边li的左边框隐藏起来，这样每个li都可以用一样的样式，便于给li循环
2 .压缩图片
通常web页面中从后台传的图片和设计师设计的图片大小不一样，这个时候需要按照原图长宽的比例进行压缩，不能超过设计师设定的图片大小。
initial是原始图片大小;goal是压缩后的图片大小;max是最大值
当原始图片长宽有任意一个大于对应的最大值或者两个都小于最大值时对图片大小进行压缩
其它情况不压缩


Js代码 


function imgSize(element,maxWidth,maxHeight){ 
 $(element).each(function() { 
 var initialWidth = $(this).attr(&#8220;width&#8221;); 
 var initialHeight = $(this).attr(&#8220;height&#8221;); 
 var goalWidth = initialWidth; 
 var goalHeight = initialHeight; 
 if (initialWidth [...]]]></description>
			<content:encoded><![CDATA[<p><span style="color: #0000ff;">1.</span> <span style="color: #333333;"><span style="color: #808080;">菜单一 | 菜单二 | 菜单三(demo1.zip</span> )</span></p>
<p>代码结构：</p>
<div class="dp-highlighter">
<div class="bar">
<div class="tools"><a href="http://www.iwanna.cn/tags/html/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with HTML">Html</a>代码 <object width="14" height="15" data="http://www.javaeye.com/javascripts/syntaxhighlighter/clipboard_new.swf" type="application/x-shockwave-flash"><param name="flashvars" value="clipboard=%3Cul%3E%3Cli%3E%E8%8F%9C%E5%8D%95%E4%B8%80%3C%2Fli%3E%3Cli%3E%E8%8F%9C%E5%8D%95%E4%BA%8C%3C%2Fli%3E%3Cli%3E%E8%8F%9C%E5%8D%95%E4%B8%89%3C%2Fli%3E%3C%2Ful%3E" /><param name="src" value="http://www.javaeye.com/javascripts/syntaxhighlighter/clipboard_new.swf" /><param name="quality" value="high" /></object></div>
</div>
<ol class="dp-xml">
<li><span><span class="tag">&lt;</span><span class="tag-name">ul</span><span class="tag">&gt;</span><span class="tag">&lt;</span><span class="tag-name">li</span><span class="tag">&gt;</span><span>菜单一</span><span class="tag">&lt;/</span><span class="tag-name">li</span><span class="tag">&gt;</span><span class="tag">&lt;</span><span class="tag-name">li</span><span class="tag">&gt;</span><span>菜单二</span><span class="tag">&lt;/</span><span class="tag-name">li</span><span class="tag">&gt;</span><span class="tag">&lt;</span><span class="tag-name">li</span><span class="tag">&gt;</span><span>菜单三</span><span class="tag">&lt;/</span><span class="tag-name">li</span><span class="tag">&gt;</span><span class="tag">&lt;/</span><span class="tag-name">ul</span><span class="tag">&gt;</span><span> </span></span></li>
</ol>
</div>
<pre class="html" style="display: none;">&lt;ul&gt;&lt;li&gt;菜单一&lt;/li&gt;&lt;li&gt;菜单二&lt;/li&gt;&lt;li&gt;菜单三&lt;/li&gt;&lt;/ul&gt;</pre>
<p>通常我们会li加<a href="http://www.iwanna.cn/tags/css/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with CSS">css</a></p>
<div class="dp-highlighter">
<div class="bar">
<div class="tools"><a href="http://www.iwanna.cn/tags/html/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with HTML">Html</a>代码 <object width="14" height="15" data="http://www.javaeye.com/javascripts/syntaxhighlighter/clipboard_new.swf" type="application/x-shockwave-flash"><param name="flashvars" value="clipboard=border-right%3A1px%20solid%20%23000" /><param name="src" value="http://www.javaeye.com/javascripts/syntaxhighlighter/clipboard_new.swf" /><param name="quality" value="high" /></object></div>
</div>
<ol class="dp-xml">
<li><span><span>border-right:1px solid #000 </span></span></li>
</ol>
</div>
<pre class="html" style="display: none;">border-right:1px solid #000</pre>
<p>这样最后一个li也有右边框，是多余的，只能为最后一个li添加一个class来区分(左边框的情况类似)</p>
<p><span id="more-894"></span></p>
<p>而demo1中我们为li加<a href="http://www.iwanna.cn/tags/css/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with CSS">css</a></p>
<div class="dp-highlighter">
<div class="bar">
<div class="tools"><a href="http://www.iwanna.cn/tags/html/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with HTML">Html</a>代码 <object width="14" height="15" data="http://www.javaeye.com/javascripts/syntaxhighlighter/clipboard_new.swf" type="application/x-shockwave-flash"><param name="flashvars" value="clipboard=ul%7Boverflow%3Ahidden%3B%7D%0Aul%20li%7Bfloat%3Aleft%3Blist-style-type%3Anone%3Bborder-left%3A1px%20solid%20%23000%3Bpadding%3A0%2020px%3Bmargin-left%3A-1px%3B%7D" /><param name="src" value="http://www.javaeye.com/javascripts/syntaxhighlighter/clipboard_new.swf" /><param name="quality" value="high" /></object></div>
</div>
<ol class="dp-xml">
<li><span><span>ul{overflow:hidden;} </span></span></li>
<li><span>ul li{float:left;list-style-type:none;border-left:1px solid #000;padding:0 20px;margin-left:-1px;} </span></li>
</ol>
</div>
<pre class="html" style="display: none;">ul{overflow:hidden;}
ul li{float:left;list-style-type:none;border-left:1px solid #000;padding:0 20px;margin-left:-1px;}</pre>
<p>ul的overflow:hidden和li的margin-left:-1px是为了让最左边li的左边框隐藏起来，这样每个li都可以用一样的样式，便于给li循环</p>
<p><span style="color: #0000ff;">2</span> .压缩图片</p>
<p>通常web页面中从后台传的图片和设计师设计的图片大小不一样，这个时候需要按照原图长宽的比例进行压缩，不能超过设计师设定的图片大小。</p>
<p>initial是原始图片大小;goal是压缩后的图片大小;max是最大值</p>
<p>当原始图片长宽有任意一个大于对应的最大值或者两个都小于最大值时对图片大小进行压缩</p>
<p>其它情况不压缩</p>
<div class="dp-highlighter">
<div class="bar">
<div class="tools">Js代码 <object width="14" height="15" data="http://www.javaeye.com/javascripts/syntaxhighlighter/clipboard_new.swf" type="application/x-shockwave-flash"><param name="flashvars" value="clipboard=function%20imgSize(element%2CmaxWidth%2CmaxHeight)%7B%0A%20%20%20%20%24(element).each(function()%20%7B%0A%20%20%20%20%20%20%20%20var%20initialWidth%20%3D%20%24(this).attr(%22width%22)%3B%0A%20%20%20%20%20%20%20%20var%20initialHeight%20%3D%20%24(this).attr(%22height%22)%3B%0A%20%20%20%20%20%20%20%20var%20goalWidth%20%3D%20initialWidth%3B%0A%20%20%20%20%20%20%20%20var%20goalHeight%20%3D%20initialHeight%3B%0A%20%20%20%20%20%20%20%20if%20(initialWidth%20%3E%20maxWidth%20%7C%7C%20initialHeight%20%3E%20maxHeight)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(initialWidth%20%2F%20maxWidth%20%3E%3D%20initialHeight%20%2F%20maxHeight)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20var%20goalWidth%20%3D%20maxWidth%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20var%20goalHeight%20%3D%20(initialHeight%20*%20maxWidth)%20%2F%20initialWidth%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20else%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20var%20goalWidth%20%3D%20(initialWidth%20*%20maxHeight)%20%2F%20initialHeight%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20var%20goalHeight%20%3D%20maxHeight%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20else%20if%20(initialWidth%20%3C%20maxWidth%20%26%26%20initialHeight%20%3C%20maxHeight)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(initialWidth%20%2F%20maxWidth%20%3E%3D%20initialHeight%20%2F%20maxHeight)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20var%20goalWidth%20%3D%20maxWidth%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20var%20goalHeight%20%3D%20(initialHeight%20*%20maxWidth)%20%2F%20initialWidth%3B%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20else%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20var%20goalWidth%20%3D%20(initialWidth%20*%20maxHeight)%20%2F%20initialHeight%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20var%20goalHeight%20%3D%20maxHeight%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%24(this).attr(%22width%22%2C%20goalWidth)%3B%0A%20%20%20%20%20%20%20%20%24(this).attr(%22height%22%2C%20goalHeight)%3B%0A%20%20%20%20%7D)%3B%0A%7D" /><param name="src" value="http://www.javaeye.com/javascripts/syntaxhighlighter/clipboard_new.swf" /><param name="quality" value="high" /></object></div>
</div>
<ol class="dp-c">
<li><span><span class="keyword">function</span><span> imgSize(element,maxWidth,maxHeight){ </span></span></li>
<li><span> $(element).each(<span class="keyword">function</span><span>() { </span></span></li>
<li><span> <span class="keyword">var</span><span> initialWidth = $(</span><span class="keyword">this</span><span>).attr(</span><span class="string">&#8220;width&#8221;</span><span>); </span></span></li>
<li><span> <span class="keyword">var</span><span> initialHeight = $(</span><span class="keyword">this</span><span>).attr(</span><span class="string">&#8220;height&#8221;</span><span>); </span></span></li>
<li><span> <span class="keyword">var</span><span> goalWidth = initialWidth; </span></span></li>
<li><span> <span class="keyword">var</span><span> goalHeight = initialHeight; </span></span></li>
<li><span> <span class="keyword">if</span><span> (initialWidth &gt; maxWidth || initialHeight &gt; maxHeight) { </span></span></li>
<li><span> <span class="keyword">if</span><span> (initialWidth / maxWidth &gt;= initialHeight / maxHeight) { </span></span></li>
<li><span> <span class="keyword">var</span><span> goalWidth = maxWidth; </span></span></li>
<li><span> <span class="keyword">var</span><span> goalHeight = (initialHeight * maxWidth) / initialWidth; </span></span></li>
<li><span> } </span></li>
<li><span> <span class="keyword">else</span><span> { </span></span></li>
<li><span> <span class="keyword">var</span><span> goalWidth = (initialWidth * maxHeight) / initialHeight; </span></span></li>
<li><span> <span class="keyword">var</span><span> goalHeight = maxHeight; </span></span></li>
<li><span> } </span></li>
<li><span> } </span></li>
<li><span> <span class="keyword">else</span><span> </span><span class="keyword">if</span><span> (initialWidth &lt; maxWidth &amp;&amp; initialHeight &lt; maxHeight) { </span></span></li>
<li><span> <span class="keyword">if</span><span> (initialWidth / maxWidth &gt;= initialHeight / maxHeight) { </span></span></li>
<li><span> <span class="keyword">var</span><span> goalWidth = maxWidth; </span></span></li>
<li><span> <span class="keyword">var</span><span> goalHeight = (initialHeight * maxWidth) / initialWidth; </span></span></li>
<li><span> </span></li>
<li><span> } </span></li>
<li><span> <span class="keyword">else</span><span> { </span></span></li>
<li><span> <span class="keyword">var</span><span> goalWidth = (initialWidth * maxHeight) / initialHeight; </span></span></li>
<li><span> <span class="keyword">var</span><span> goalHeight = maxHeight; </span></span></li>
<li><span> } </span></li>
<li><span> } </span></li>
<li><span> $(<span class="keyword">this</span><span>).attr(</span><span class="string">&#8220;width&#8221;</span><span>, goalWidth); </span></span></li>
<li><span> $(<span class="keyword">this</span><span>).attr(</span><span class="string">&#8220;height&#8221;</span><span>, goalHeight); </span></span></li>
<li><span> }); </span></li>
<li><span>} </span></li>
</ol>
</div>
<pre class="js" style="display: none;">function imgSize(element,maxWidth,maxHeight){
    $(element).each(function() {
        var initialWidth = $(this).attr("width");
        var initialHeight = $(this).attr("height");
        var goalWidth = initialWidth;
        var goalHeight = initialHeight;
        if (initialWidth &gt; maxWidth || initialHeight &gt; maxHeight) {
            if (initialWidth / maxWidth &gt;= initialHeight / maxHeight) {
                var goalWidth = maxWidth;
                var goalHeight = (initialHeight * maxWidth) / initialWidth;
            }
            else {
                var goalWidth = (initialWidth * maxHeight) / initialHeight;
                var goalHeight = maxHeight;
            }
        }
        else if (initialWidth &lt; maxWidth &amp;&amp; initialHeight &lt; maxHeight) {
            if (initialWidth / maxWidth &gt;= initialHeight / maxHeight) {
                var goalWidth = maxWidth;
                var goalHeight = (initialHeight * maxWidth) / initialWidth;

            }
            else {
                var goalWidth = (initialWidth * maxHeight) / initialHeight;
                var goalHeight = maxHeight;
            }
        }
        $(this).attr("width", goalWidth);
        $(this).attr("height", goalHeight);
    });
}</pre>
<p><span style="color: #0000ff;">3</span> .布局</p>
<p><img src="http://www.javaeye.com/upload/attachment/89255/292c3b99-53c3-399d-9ae2-a324c52f83a1.jpg" alt="" width="95" height="96" /> （图一）<img src="http://www.javaeye.com/upload/attachment/89257/3132255c-86b2-37ec-9802-91a28b884dc8.jpg" alt="" width="118" height="97" /> （图二）<img src="http://www.javaeye.com/upload/attachment/89263/f970cb0b-ae8a-3ebe-87de-bbe44812ec74.jpg" alt="" width="97" height="97" /> （图三）</p>
<p>要实现如图的这种布局，可以用三个并列关系的div加上样式就可以实现</p>
<p>代码结构：</p>
<div class="dp-highlighter">
<div class="bar">
<div class="tools"><a href="http://www.iwanna.cn/tags/html/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with HTML">Html</a>代码 <object width="14" height="15" data="http://www.javaeye.com/javascripts/syntaxhighlighter/clipboard_new.swf" type="application/x-shockwave-flash"><param name="flashvars" value="clipboard=%3Cdiv%20id%3D%22first%22%3E%3C%2Fdiv%3E%20%20%0A%3Cdiv%20id%3D%22second%22%3E%3C%2Fdiv%3E%20%20%0A%3Cdiv%20id%3D%22third%22%3E%3C%2Fdiv%3E" /><param name="src" value="http://www.javaeye.com/javascripts/syntaxhighlighter/clipboard_new.swf" /><param name="quality" value="high" /></object></div>
</div>
<ol class="dp-xml">
<li><span><span class="tag">&lt;</span><span class="tag-name">div</span><span> </span><span class="attribute">id</span><span>=</span><span class="attribute-value">&#8220;first&#8221;</span><span class="tag">&gt;</span><span class="tag">&lt;/</span><span class="tag-name">div</span><span class="tag">&gt;</span><span> </span></span></li>
<li><span><span class="tag">&lt;</span><span class="tag-name">div</span><span> </span><span class="attribute">id</span><span>=</span><span class="attribute-value">&#8220;second&#8221;</span><span class="tag">&gt;</span><span class="tag">&lt;/</span><span class="tag-name">div</span><span class="tag">&gt;</span><span> </span></span></li>
<li><span><span class="tag">&lt;</span><span class="tag-name">div</span><span> </span><span class="attribute">id</span><span>=</span><span class="attribute-value">&#8220;third&#8221;</span><span class="tag">&gt;</span><span class="tag">&lt;/</span><span class="tag-name">div</span><span class="tag">&gt;</span><span> </span></span></li>
</ol>
</div>
<pre class="html" style="display: none;">&lt;div id="first"&gt;&lt;/div&gt;
&lt;div id="second"&gt;&lt;/div&gt;
&lt;div id="third"&gt;&lt;/div&gt;</pre>
<p>这种代码结构非常灵活，可以仅仅通过样式达到多种布局效果</p>
<p>图一(demo3.1.zip)的<a href="http://www.iwanna.cn/tags/css/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with CSS">css</a>：</p>
<div class="dp-highlighter">
<div class="bar">
<div class="tools"><a href="http://www.iwanna.cn/tags/html/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with HTML">Html</a>代码 <object width="14" height="15" data="http://www.javaeye.com/javascripts/syntaxhighlighter/clipboard_new.swf" type="application/x-shockwave-flash"><param name="flashvars" value="clipboard=%3Cstyle%20type%3D%22text%2Fcss%22%3E%0A%09body%7Bmargin%3A10px%3Bpadding%3A0%3B%7D%0A%09div%7Bbackground%3A%23ccc%3B%7D%20%20%20%0A%09%23first%7Bfloat%3Aleft%3Bwidth%3A100px%3B%20height%3A150px%7D%20%20%20%0A%09%23second%7Bclear%3Aleft%3Bfloat%3Aleft%3Bmargin-top%3A10px%3Bwidth%3A100px%3Bheight%3A150px%7D%20%20%0A%09%23third%7Bmargin-left%3A110px%3B_margin-left%3A107px%3B%20height%3A310px%7D%0A%3C%2Fstyle%3E%0A%2F*_margin-left%3A107px%3B%E4%B8%BA%E4%BA%86ie6%E5%A4%9A%E5%87%BA%E7%9A%843%E5%83%8F%E7%B4%A0%E8%80%8C%E5%86%99%E7%9A%84hack*%2F%20%0A" /><param name="src" value="http://www.javaeye.com/javascripts/syntaxhighlighter/clipboard_new.swf" /><param name="quality" value="high" /></object></div>
</div>
<ol class="dp-xml">
<li><span><span class="tag">&lt;</span><span class="tag-name">style</span><span> </span><span class="attribute">type</span><span>=</span><span class="attribute-value">&#8220;text/<a href="http://www.iwanna.cn/tags/css/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with CSS">css</a>&#8221;</span><span class="tag">&gt;</span><span> </span></span></li>
<li><span> body{margin:10px;padding:0;} </span></li>
<li><span> div{background:#ccc;} </span></li>
<li><span> #first{float:left;width:100px; height:150px} </span></li>
<li><span> #second{clear:left;float:left;margin-top:10px;width:100px;height:150px} </span></li>
<li><span> #third{margin-left:110px;_margin-left:107px; height:310px} </span></li>
<li><span><span class="tag">&lt;/</span><span class="tag-name">style</span><span class="tag">&gt;</span><span> </span></span></li>
<li><span>/*_margin-left:107px;为了ie6多出的3像素而写的hack*/ </span></li>
</ol>
</div>
<pre class="html" style="display: none;">&lt;style type="text/<a href="http://www.iwanna.cn/tags/css/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with CSS">css</a>"&gt;
	body{margin:10px;padding:0;}
	div{background:#ccc;}
	#first{float:left;width:100px; height:150px}
	#second{clear:left;float:left;margin-top:10px;width:100px;height:150px}
	#third{margin-left:110px;_margin-left:107px; height:310px}
&lt;/style&gt;
/*_margin-left:107px;为了ie6多出的3像素而写的hack*/</pre>
<p>图二(demo3.2.zip)的<a href="http://www.iwanna.cn/tags/css/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with CSS">css</a></p>
<div class="dp-highlighter">
<div class="bar">
<div class="tools"><a href="http://www.iwanna.cn/tags/html/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with HTML">Html</a>代码 <object width="14" height="15" data="http://www.javaeye.com/javascripts/syntaxhighlighter/clipboard_new.swf" type="application/x-shockwave-flash"><param name="flashvars" value="clipboard=%3Cstyle%20type%3D%22text%2Fcss%22%3E%0A%09body%7Bmargin%3A10px%3Bpadding%3A0%3B%7D%0A%09div%7Bbackground%3A%23ccc%3B%7D%20%20%20%0A%09%23first%7Bfloat%3Aleft%3Bwidth%3A100px%3B%20height%3A300px%7D%20%20%20%0A%09%23second%7Bfloat%3Aright%3Bwidth%3A100px%3Bheight%3A300px%7D%20%20%0A%09%23third%7Bmargin%3A0%20110px%3B_margin%3A0%20107px%3B%20height%3A300px%7D%0A%3C%2Fstyle%3E%0A%2F*_margin%3A0%20107px%3B%20%E4%B8%BA%E4%BA%86ie6%E5%A4%9A%E5%87%BA%E7%9A%843%E5%83%8F%E7%B4%A0%E8%80%8C%E5%86%99%E7%9A%84hack*%2F%20" /><param name="src" value="http://www.javaeye.com/javascripts/syntaxhighlighter/clipboard_new.swf" /><param name="quality" value="high" /></object></div>
</div>
<ol class="dp-xml">
<li><span><span class="tag">&lt;</span><span class="tag-name">style</span><span> </span><span class="attribute">type</span><span>=</span><span class="attribute-value">&#8220;text/<a href="http://www.iwanna.cn/tags/css/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with CSS">css</a>&#8221;</span><span class="tag">&gt;</span><span> </span></span></li>
<li><span> body{margin:10px;padding:0;} </span></li>
<li><span> div{background:#ccc;} </span></li>
<li><span> #first{float:left;width:100px; height:300px} </span></li>
<li><span> #second{float:right;width:100px;height:300px} </span></li>
<li><span> #third{margin:0 110px;_margin:0 107px; height:300px} </span></li>
<li><span><span class="tag">&lt;/</span><span class="tag-name">style</span><span class="tag">&gt;</span><span> </span></span></li>
<li><span>/*_margin:0 107px; 为了ie6多出的3像素而写的hack*/ </span></li>
</ol>
</div>
<pre class="html" style="display: none;">&lt;style type="text/<a href="http://www.iwanna.cn/tags/css/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with CSS">css</a>"&gt;
	body{margin:10px;padding:0;}
	div{background:#ccc;}
	#first{float:left;width:100px; height:300px}
	#second{float:right;width:100px;height:300px}
	#third{margin:0 110px;_margin:0 107px; height:300px}
&lt;/style&gt;
/*_margin:0 107px; 为了ie6多出的3像素而写的hack*/</pre>
<p>图三(demo3.3.zip)的<a href="http://www.iwanna.cn/tags/css/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with CSS">css</a>和js，鼠标hover时当前模块放大比例</p>
<div class="dp-highlighter">
<div class="bar">
<div class="tools"><a href="http://www.iwanna.cn/tags/html/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with HTML">Html</a>代码 <object width="14" height="15" data="http://www.javaeye.com/javascripts/syntaxhighlighter/clipboard_new.swf" type="application/x-shockwave-flash"><param name="flashvars" value="clipboard=%3Cstyle%20type%3D%22text%2Fcss%22%3E%0A%09body%7Bmargin%3A0%3Bpadding%3A0%3B%7D%0A%09div%7Bbackground%3A%23ccc%3Bposition%3Aabsolute%3B%7D%0A%09%23first%7Bwidth%3A100px%3B%20height%3A150px%3Btop%3A10px%3Bleft%3A10px%3B%7D%20%20%20%0A%09%23second%7Bwidth%3A100px%3Bheight%3A150px%3Btop%3A170px%3Bleft%3A10px%3B%7D%20%20%0A%09%23third%7Bheight%3A310px%3Btop%3A10px%3Bleft%3A120px%3Bwidth%3A200px%3B%7D%20%0A%3C%2Fstyle%3E%0A%3Cscript%20type%3D%22text%2Fjavascript%22%20language%3D%22text%2Fjavascript%22%3E%0A%09function%20zoom(id%2Cx%2Cy)%7B%20%2F%2F%20%E8%AE%BE%E7%BD%AE%E7%BC%A9%E6%94%BE%E5%87%BD%E6%95%B0%E5%8F%82%E6%95%B0%EF%BC%9A%E5%AE%B9%E5%99%A8id%E3%80%81%E6%A8%AA%E5%90%91%E7%BC%A9%E6%94%BE%E5%80%8D%E6%95%B0%E3%80%81%E7%BA%B5%E5%90%91%E7%BC%A9%E6%94%BE%E5%80%8D%E6%95%B0%EF%BC%88%E7%AD%89%E6%AF%94%E4%BE%8B%E7%BC%A9%E6%94%BE%E6%97%B6%E4%B9%9F%E5%8F%AF%E4%BB%A5%E8%AE%BE%E5%AE%9A%E4%B8%80%E4%B8%AA%E5%8F%82%E6%95%B0%EF%BC%89%20%20%20%0A%09%09var%20obj%3Ddocument.getElementById(id)%3B%20%2F%2F%20%E8%8E%B7%E5%8F%96%E5%85%83%E7%B4%A0%E5%AF%B9%E8%B1%A1%E5%80%BC%20%0A%09%09var%20dW%3Dobj.clientWidth%3B%20%2F%2F%20%E8%8E%B7%E5%8F%96%E5%85%83%E7%B4%A0%E5%AE%BD%E5%BA%A6%20%20%20%0A%09%09var%20dH%3Dobj.clientHeight%3B%20%2F%2F%20%E8%8E%B7%E5%8F%96%E5%85%83%E7%B4%A0%E9%AB%98%E5%BA%A6%20%20%20%09%20%0A%09%09obj.onmouseover%3Dfunction()%7B%20%2F%2F%20%E9%BC%A0%E6%A0%87%E7%A7%BB%E5%85%A5%20%20%20%0A%09%09%09this.style.width%3DdW*x%2B%22px%22%3B%20%2F%2F%20%E6%A8%AA%E5%90%91%E7%BC%A9%E6%94%BE%20%20%20%0A%09%09%09this.style.height%3DdH*y%2B%22px%22%3B%20%2F%2F%20%E7%BA%B5%E5%90%91%E7%BC%A9%E6%94%BE%20%20%20%0A%09%09%09this.style.backgroundColor%3D%22%23f00%22%3B%20%2F%2F%20%E8%AE%BE%E7%BD%AE%E8%B0%83%E8%AF%95%E8%83%8C%E6%99%AF%20%20%20%0A%09%09%09this.style.zIndex%3D1%3B%20%2F%2F%20%E8%AE%BE%E7%BD%AEz%E8%BD%B4%E4%BC%98%E5%85%88%20%20%20%0A%09%09%7D%20%20%20%0A%09%09obj.onmouseout%3Dfunction()%7B%20%2F%2F%20%E9%BC%A0%E6%A0%87%E7%A7%BB%E5%87%BA%EF%BC%8C%E8%AE%BE%E5%9B%9E%E9%BB%98%E8%AE%A4%E5%80%BC%20%20%20%0A%09%09%09this.style.width%3D%22%22%3B%20%20%20%0A%09%09%09this.style.height%3D%22%22%3B%20%20%20%0A%09%09%09this.style.padding%3D%22%22%3B%20%20%20%0A%09%09%09this.style.backgroundColor%3D%22%22%3B%20%20%20%0A%09%09%09this.style.zIndex%3D%22%22%3B%20%20%20%0A%09%09%7D%20%20%20%0A%09%7D%0Azoom(%22first%22%2C1.25%2C1.25)%3B%0Azoom(%22second%22%2C1.25%2C1.25)%3B%0Azoom(%22third%22%2C1.25%2C1.25)%3B%0A%3C%2Fscript%3E" /><param name="src" value="http://www.javaeye.com/javascripts/syntaxhighlighter/clipboard_new.swf" /><param name="quality" value="high" /></object></div>
</div>
<ol class="dp-xml">
<li><span><span class="tag">&lt;</span><span class="tag-name">style</span><span> </span><span class="attribute">type</span><span>=</span><span class="attribute-value">&#8220;text/<a href="http://www.iwanna.cn/tags/css/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with CSS">css</a>&#8221;</span><span class="tag">&gt;</span><span> </span></span></li>
<li><span> body{margin:0;padding:0;} </span></li>
<li><span> div{background:#ccc;position:absolute;} </span></li>
<li><span> #first{width:100px; height:150px;top:10px;left:10px;} </span></li>
<li><span> #second{width:100px;height:150px;top:170px;left:10px;} </span></li>
<li><span> #third{height:310px;top:10px;left:120px;width:200px;} </span></li>
<li><span><span class="tag">&lt;/</span><span class="tag-name">style</span><span class="tag">&gt;</span><span> </span></span></li>
<li><span><span class="tag">&lt;</span><span class="tag-name">script</span><span> </span><span class="attribute">type</span><span>=</span><span class="attribute-value">&#8220;text/<a href="http://www.iwanna.cn/tags/javascript/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with JavaScript">javascript</a>&#8221;</span><span> </span><span class="attribute">language</span><span>=</span><span class="attribute-value">&#8220;text/<a href="http://www.iwanna.cn/tags/javascript/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with JavaScript">javascript</a>&#8221;</span><span class="tag">&gt;</span><span> </span></span></li>
<li><span> function zoom(id,x,y){ // 设置缩放函数参数：容器id、横向缩放倍数、纵向缩放倍数（等比例缩放时也可以设定一个参数） </span></li>
<li><span> var <span class="attribute">obj</span><span>=</span><span class="attribute-value">document</span><span>.getElementById(id); // 获取元素对象值 </span></span></li>
<li><span> var <span class="attribute">dW</span><span>=</span><span class="attribute-value">obj</span><span>.clientWidth; // 获取元素宽度 </span></span></li>
<li><span> var <span class="attribute">dH</span><span>=</span><span class="attribute-value">obj</span><span>.clientHeight; // 获取元素高度 </span></span></li>
<li><span> <span class="attribute">obj.onmouseover</span><span>=</span><span class="attribute-value">function</span><span>(){ // 鼠标移入 </span></span></li>
<li><span> <span class="attribute">this.style.width</span><span>=</span><span class="attribute-value">dW</span><span>*x+&#8221;px&#8221;; // 横向缩放 </span></span></li>
<li><span> <span class="attribute">this.style.height</span><span>=</span><span class="attribute-value">dH</span><span>*y+&#8221;px&#8221;; // 纵向缩放 </span></span></li>
<li><span> <span class="attribute">this.style.backgroundColor</span><span>=</span><span class="attribute-value">&#8220;#f00&#8243;</span><span>; // 设置调试背景 </span></span></li>
<li><span> <span class="attribute">this.style.zIndex</span><span>=</span><span class="attribute-value">1</span><span>; // 设置z轴优先 </span></span></li>
<li><span> } </span></li>
<li><span> <span class="attribute">obj.onmouseout</span><span>=</span><span class="attribute-value">function</span><span>(){ // 鼠标移出，设回默认值 </span></span></li>
<li><span> <span class="attribute">this.style.width</span><span>=</span><span class="attribute-value">&#8220;&#8221;</span><span>; </span></span></li>
<li><span> <span class="attribute">this.style.height</span><span>=</span><span class="attribute-value">&#8220;&#8221;</span><span>; </span></span></li>
<li><span> <span class="attribute">this.style.padding</span><span>=</span><span class="attribute-value">&#8220;&#8221;</span><span>; </span></span></li>
<li><span> <span class="attribute">this.style.backgroundColor</span><span>=</span><span class="attribute-value">&#8220;&#8221;</span><span>; </span></span></li>
<li><span> <span class="attribute">this.style.zIndex</span><span>=</span><span class="attribute-value">&#8220;&#8221;</span><span>; </span></span></li>
<li><span> } </span></li>
<li><span> } </span></li>
<li><span>zoom(&#8220;first&#8221;,1.25,1.25); </span></li>
<li><span>zoom(&#8220;second&#8221;,1.25,1.25); </span></li>
<li><span>zoom(&#8220;third&#8221;,1.25,1.25); </span></li>
<li><span><span class="tag">&lt;/</span><span class="tag-name">script</span><span class="tag">&gt;</span><span> </span></span></li>
</ol>
</div>
<pre class="html" style="display: none;">&lt;style type="text/<a href="http://www.iwanna.cn/tags/css/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with CSS">css</a>"&gt;
	body{margin:0;padding:0;}
	div{background:#ccc;position:absolute;}
	#first{width:100px; height:150px;top:10px;left:10px;}
	#second{width:100px;height:150px;top:170px;left:10px;}
	#third{height:310px;top:10px;left:120px;width:200px;}
&lt;/style&gt;
&lt;script type="text/<a href="http://www.iwanna.cn/tags/javascript/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with JavaScript">javascript</a>" language="text/<a href="http://www.iwanna.cn/tags/javascript/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with JavaScript">javascript</a>"&gt;
	function zoom(id,x,y){ // 设置缩放函数参数：容器id、横向缩放倍数、纵向缩放倍数（等比例缩放时也可以设定一个参数）
		var obj=document.getElementById(id); // 获取元素对象值
		var dW=obj.clientWidth; // 获取元素宽度
		var dH=obj.clientHeight; // 获取元素高度
		obj.onmouseover=function(){ // 鼠标移入
			this.style.width=dW*x+"px"; // 横向缩放
			this.style.height=dH*y+"px"; // 纵向缩放
			this.style.backgroundColor="#f00"; // 设置调试背景
			this.style.zIndex=1; // 设置z轴优先
		}
		obj.onmouseout=function(){ // 鼠标移出，设回默认值
			this.style.width="";
			this.style.height="";
			this.style.padding="";
			this.style.backgroundColor="";
			this.style.zIndex="";
		}
	}
zoom("first",1.25,1.25);
zoom("second",1.25,1.25);
zoom("third",1.25,1.25);
&lt;/script&gt;</pre>
<p><span style="color: #0000ff;">4<strong> </strong> </span> .获取浏览器可见区域的宽高，通用方法：</p>
<div class="dp-highlighter">
<div class="bar">
<div class="tools">Js代码 <object width="14" height="15" data="http://www.javaeye.com/javascripts/syntaxhighlighter/clipboard_new.swf" type="application/x-shockwave-flash"><param name="flashvars" value="clipboard=%2F%2F%E4%BB%A5%E4%B8%8B%E7%9A%84%E6%96%B9%E6%B3%95%E5%AF%B9%E4%BA%8E%E5%BE%88%E5%A4%9A%E6%B5%8F%E8%A7%88%E5%99%A8%E9%83%BD%E9%80%82%E7%94%A8%0Afunction%20windowHeight()%20%7B%0A%20%20%20%20var%20windowHeight%3B%2F%2F%E6%9C%80%E5%90%8E%E4%BC%A0%E5%87%BA%E7%9A%84%E5%80%BC%0A%20%20%20%20if%20(self.innerHeight)%20%7B%20%2F%2F%20%E9%99%A4%E4%BA%86IE%E4%BB%A5%E5%A4%96%E7%9A%84%E6%B5%8F%E8%A7%88%E5%99%A8%0A%20%20%20%20%20%20%20%20windowHeight%20%3D%20self.innerHeight%3B%0A%20%20%20%20%7D%20%0A%09else%20if%20(document.documentElement%20%26%26%20document.documentElement.clientHeight)%20%7B%20%2F*%20IE6%20%E6%B5%8F%E8%A7%88%E5%99%A8%20*%2F%0A%20%20%20%20%20%20%20%20windowHeight%20%3D%20document.documentElement.clientHeight%3B%0A%20%20%20%20%7D%20%0A%09else%20if%20(document.body)%20%7B%20%2F%2F%E5%85%B6%E4%BB%96%E7%89%88%E6%9C%AC%E7%9A%84IE%E6%B5%8F%E8%A7%88%E5%99%A8%0A%20%20%20%20%20%20%20%20windowHeight%20%3D%20document.body.clientHeight%3B%0A%20%20%20%20%7D%0A%20%20%20%20return%20windowHeight%3B%0A%7D%0A%0Afunction%20windowWidth()%20%7B%0A%20%20%20%20var%20windowWidth%3B%2F%2F%E6%9C%80%E5%90%8E%E4%BC%A0%E5%87%BA%E7%9A%84%E5%80%BC%0A%20%20%20%20if%20(self.innerWidth)%20%7B%20%2F%2F%20%E9%99%A4%E4%BA%86IE%E4%BB%A5%E5%A4%96%E7%9A%84%E6%B5%8F%E8%A7%88%E5%99%A8%0A%20%20%20%20%20%20%20%20windowWidth%20%3D%20self.innerWidth%3B%0A%20%20%20%20%7D%20%0A%09else%20if%20(document.documentElement%20%26%26%20document.documentElement.clientWidth)%20%7B%20%2F*%20IE6%20%E6%B5%8F%E8%A7%88%E5%99%A8%20*%2F%0A%20%20%20%20%20%20%20%20windowWidth%20%3D%20document.documentElement.clientWidth%3B%0A%20%20%20%20%7D%20%0A%09else%20if%20(document.body)%20%7B%20%2F%2F%20%E5%85%B6%E4%BB%96%E7%89%88%E6%9C%AC%E7%9A%84IE%E6%B5%8F%E8%A7%88%E5%99%A8%0A%20%20%20%20%20%20%20%20windowWidth%20%3D%20document.body.clientWidth%3B%0A%20%20%20%20%7D%0A%20%20%20%20return%20windowWidth%3B%0A%7D" /><param name="src" value="http://www.javaeye.com/javascripts/syntaxhighlighter/clipboard_new.swf" /><param name="quality" value="high" /></object></div>
</div>
<ol class="dp-c">
<li><span><span class="comment">//以下的方法对于很多浏览器都适用</span><span> </span></span></li>
<li><span><span class="keyword">function</span><span> windowHeight() { </span></span></li>
<li><span> <span class="keyword">var</span><span> windowHeight;</span><span class="comment">//最后传出的值</span><span> </span></span></li>
<li><span> <span class="keyword">if</span><span> (self.innerHeight) { </span><span class="comment">// 除了IE以外的浏览器</span><span> </span></span></li>
<li><span> windowHeight = self.innerHeight; </span></li>
<li><span> } </span></li>
<li><span> <span class="keyword">else</span><span> </span><span class="keyword">if</span><span> (document.documentElement &amp;&amp; document.documentElement.clientHeight) { </span><span class="comment">/* IE6 浏览器 */</span><span> </span></span></li>
<li><span> windowHeight = document.documentElement.clientHeight; </span></li>
<li><span> } </span></li>
<li><span> <span class="keyword">else</span><span> </span><span class="keyword">if</span><span> (document.body) { </span><span class="comment">//其他版本的IE浏览器</span><span> </span></span></li>
<li><span> windowHeight = document.body.clientHeight; </span></li>
<li><span> } </span></li>
<li><span> <span class="keyword">return</span><span> windowHeight; </span></span></li>
<li><span>} </span></li>
<li><span> </span></li>
<li><span><span class="keyword">function</span><span> windowWidth() { </span></span></li>
<li><span> <span class="keyword">var</span><span> windowWidth;</span><span class="comment">//最后传出的值</span><span> </span></span></li>
<li><span> <span class="keyword">if</span><span> (self.innerWidth) { </span><span class="comment">// 除了IE以外的浏览器</span><span> </span></span></li>
<li><span> windowWidth = self.innerWidth; </span></li>
<li><span> } </span></li>
<li><span> <span class="keyword">else</span><span> </span><span class="keyword">if</span><span> (document.documentElement &amp;&amp; document.documentElement.clientWidth) { </span><span class="comment">/* IE6 浏览器 */</span><span> </span></span></li>
<li><span> windowWidth = document.documentElement.clientWidth; </span></li>
<li><span> } </span></li>
<li><span> <span class="keyword">else</span><span> </span><span class="keyword">if</span><span> (document.body) { </span><span class="comment">// 其他版本的IE浏览器</span><span> </span></span></li>
<li><span> windowWidth = document.body.clientWidth; </span></li>
<li><span> } </span></li>
<li><span> <span class="keyword">return</span><span> windowWidth; </span></span></li>
<li><span>} </span></li>
</ol>
</div>
<pre class="js" style="display: none;">//以下的方法对于很多浏览器都适用
function windowHeight() {
    var windowHeight;//最后传出的值
    if (self.innerHeight) { // 除了IE以外的浏览器
        windowHeight = self.innerHeight;
    }
	else if (document.documentElement &amp;&amp; document.documentElement.clientHeight) { /* IE6 浏览器 */
        windowHeight = document.documentElement.clientHeight;
    }
	else if (document.body) { //其他版本的IE浏览器
        windowHeight = document.body.clientHeight;
    }
    return windowHeight;
}

function windowWidth() {
    var windowWidth;//最后传出的值
    if (self.innerWidth) { // 除了IE以外的浏览器
        windowWidth = self.innerWidth;
    }
	else if (document.documentElement &amp;&amp; document.documentElement.clientWidth) { /* IE6 浏览器 */
        windowWidth = document.documentElement.clientWidth;
    }
	else if (document.body) { // 其他版本的IE浏览器
        windowWidth = document.body.clientWidth;
    }
    return windowWidth;
}</pre>
<p><span style="color: #0000ff;">5</span> .淘宝的简易框架(demo5.zip)</p>
<p><a href="http://www.javaeye.com/upload/attachment/91939/ded4d21f-6999-39af-89b2-eb34d0a50ea6.jpg"><img src="http://www.javaeye.com/upload/attachment/91939/ded4d21f-6999-39af-89b2-eb34d0a50ea6.jpg" alt="" width="255" height="208" /></a></p>
<p>偶然的机会看到了淘宝的这个框架，写得很不错，玉伯的<a href="http://www.iwanna.cn/tags/css/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with CSS">css</a>也非常工整</p>
<p>圆角的切图也挺有意思的，值得我去学习效仿。</p>
<p><span style="color: #0000ff;">6</span> .滚动消息(demo6.zip)</p>
<p><img src="http://www.javaeye.com/upload/attachment/93058/d08b97ca-b025-30f3-b690-05551da0513d.jpg" alt="" /></p>
<p>上下往返滚动的消息一般常出现在公告栏或者新闻栏，以前比较喜欢用Marquee标签来实现，不过Marquee实现的滚动会有头尾不能连接起来而导致消息栏出现短暂的空白的缺陷，而且w3c也不支持Marquee标签。所以用js来实现更完美一些。</p>
<div class="dp-highlighter">
<div class="bar">
<div class="tools">Js代码 <object width="14" height="15" data="http://www.javaeye.com/javascripts/syntaxhighlighter/clipboard_new.swf" type="application/x-shockwave-flash"><param name="flashvars" value="clipboard=function%20scroll(element%2C%20delay%2C%20speed%2C%20lineHeight)%20%7B%0A%09var%20numpergroup%20%3D%205%3B%0A%09var%20slideBox%20%3D%20(typeof%20element%20%3D%3D%20'string')%3Fdocument.getElementById(element)%3Aelement%3B%0A%09var%20delay%20%3D%20delay%7C%7C1000%3B%0A%09var%20speed%3Dspeed%7C%7C20%3B%0A%09var%20lineHeight%20%3D%20lineHeight%7C%7C20%3B%0A%09var%20tid%20%3D%20null%2C%20pause%20%3D%20false%3B%0A%09var%20liLength%20%3D%20slideBox.getElementsByTagName('li').length%3B%0A%09var%20lack%20%3D%20numpergroup-liLength%25numpergroup%3B%0A%09for(i%3D0%3Bi%3Clack%3Bi%2B%2B)%7B%0A%09slideBox.appendChild(document.createElement(%22li%22))%3B%0A%09%7D%0A%09var%20start%20%3D%20function()%20%7B%0A%09%09%20tid%3DsetInterval(slide%2C%20speed)%3B%0A%09%7D%0A%09var%20slide%20%3D%20function()%20%7B%0A%09%09%20if%20(pause)%20return%3B%0A%09%09%20slideBox.scrollTop%20%2B%3D%202%3B%0A%09%09%20if%20(%20slideBox.scrollTop%20%25%20lineHeight%20%3D%3D%200%20)%20%7B%0A%09%09%09%09clearInterval(tid)%3B%0A%09%09%09%09for(i%3D0%3Bi%3Cnumpergroup%3Bi%2B%2B)%7B%0A%09%09%09%09%09slideBox.appendChild(slideBox.getElementsByTagName('li')%5B0%5D)%3B%0A%09%09%09%09%7D%0A%09%09%09%09slideBox.scrollTop%20%3D%200%3B%0A%09%09%09%09setTimeout(start%2C%20delay)%3B%0A%09%09%20%7D%0A%09%7D%0A%09slideBox.onmouseover%3Dfunction()%7Bpause%3Dtrue%3B%7D%0A%09slideBox.onmouseout%3Dfunction()%7Bpause%3Dfalse%3B%7D%0A%09setTimeout(start%2C%20delay)%3B%0A%7D%0A%E5%9B%9B%E4%B8%AA%E5%8F%82%E6%95%B0%E5%88%86%E5%88%AB%E6%98%AF%3A%E6%93%8D%E4%BD%9C%E5%AF%B9%E8%B1%A1%EF%BC%8C%20%E5%81%9C%E7%95%99%E6%97%B6%E9%97%B4%EF%BC%8C%E7%9B%B8%E5%AF%B9%E9%80%9F%E5%BA%A6%EF%BC%88%E8%B6%8A%E5%B0%8F%E8%B6%8A%E5%BF%AB%EF%BC%89%2C%E6%AF%8F%E6%AC%A1%E6%BB%9A%E5%8A%A8%E5%A4%9A%E5%B0%91(%E6%9C%80%E5%A5%BD%E5%92%8CLi%E7%9A%84Line-height%E4%B8%80%E8%87%B4)%E3%80%82" /><param name="src" value="http://www.javaeye.com/javascripts/syntaxhighlighter/clipboard_new.swf" /><param name="quality" value="high" /></object></div>
</div>
<ol class="dp-c">
<li><span><span class="keyword">function</span><span> scroll(element, delay, speed, lineHeight) { </span></span></li>
<li><span> <span class="keyword">var</span><span> numpergroup = 5; </span></span></li>
<li><span> <span class="keyword">var</span><span> slideBox = (</span><span class="keyword">typeof</span><span> element == </span><span class="string">&#8217;string&#8217;</span><span>)?document.getElementById(element):element; </span></span></li>
<li><span> <span class="keyword">var</span><span> delay = delay||1000; </span></span></li>
<li><span> <span class="keyword">var</span><span> speed=speed||20; </span></span></li>
<li><span> <span class="keyword">var</span><span> lineHeight = lineHeight||20; </span></span></li>
<li><span> <span class="keyword">var</span><span> tid = </span><span class="keyword">null</span><span>, pause = </span><span class="keyword">false</span><span>; </span></span></li>
<li><span> <span class="keyword">var</span><span> liLength = slideBox.getElementsByTagName(</span><span class="string">&#8216;li&#8217;</span><span>).length; </span></span></li>
<li><span> <span class="keyword">var</span><span> lack = numpergroup-liLength%numpergroup; </span></span></li>
<li><span> <span class="keyword">for</span><span>(i=0;i&lt;lack;i++){ </span></span></li>
<li><span> slideBox.appendChild(document.createElement(<span class="string">&#8220;li&#8221;</span><span>)); </span></span></li>
<li><span> } </span></li>
<li><span> <span class="keyword">var</span><span> start = </span><span class="keyword">function</span><span>() { </span></span></li>
<li><span> tid=setInterval(slide, speed); </span></li>
<li><span> } </span></li>
<li><span> <span class="keyword">var</span><span> slide = </span><span class="keyword">function</span><span>() { </span></span></li>
<li><span> <span class="keyword">if</span><span> (pause) </span><span class="keyword">return</span><span>; </span></span></li>
<li><span> slideBox.scrollTop += 2; </span></li>
<li><span> <span class="keyword">if</span><span> ( slideBox.scrollTop % lineHeight == 0 ) { </span></span></li>
<li><span> clearInterval(tid); </span></li>
<li><span> <span class="keyword">for</span><span>(i=0;i&lt;numpergroup;i++){ </span></span></li>
<li><span> slideBox.appendChild(slideBox.getElementsByTagName(<span class="string">&#8216;li&#8217;</span><span>)[0]); </span></span></li>
<li><span> } </span></li>
<li><span> slideBox.scrollTop = 0; </span></li>
<li><span> setTimeout(start, delay); </span></li>
<li><span> } </span></li>
<li><span> } </span></li>
<li><span> slideBox.onmouseover=<span class="keyword">function</span><span>(){pause=</span><span class="keyword">true</span><span>;} </span></span></li>
<li><span> slideBox.onmouseout=<span class="keyword">function</span><span>(){pause=</span><span class="keyword">false</span><span>;} </span></span></li>
<li><span> setTimeout(start, delay); </span></li>
<li><span>} </span></li>
<li><span>四个参数分别是:操作对象， 停留时间，相对速度（越小越快）,每次滚动多少(最好和Li的Line-height一致)。 </span></li>
</ol>
</div>
<pre class="js" style="display: none;">function scroll(element, delay, speed, lineHeight) {
	var numpergroup = 5;
	var slideBox = (typeof element == 'string')?document.getElementById(element):element;
	var delay = delay||1000;
	var speed=speed||20;
	var lineHeight = lineHeight||20;
	var tid = null, pause = false;
	var liLength = slideBox.getElementsByTagName('li').length;
	var lack = numpergroup-liLength%numpergroup;
	for(i=0;i&lt;lack;i++){
	slideBox.appendChild(document.createElement("li"));
	}
	var start = function() {
		 tid=setInterval(slide, speed);
	}
	var slide = function() {
		 if (pause) return;
		 slideBox.scrollTop += 2;
		 if ( slideBox.scrollTop % lineHeight == 0 ) {
				clearInterval(tid);
				for(i=0;i&lt;numpergroup;i++){
					slideBox.appendChild(slideBox.getElementsByTagName('li')[0]);
				}
				slideBox.scrollTop = 0;
				setTimeout(start, delay);
		 }
	}
	slideBox.onmouseover=function(){pause=true;}
	slideBox.onmouseout=function(){pause=false;}
	setTimeout(start, delay);
}
四个参数分别是:操作对象， 停留时间，相对速度（越小越快）,每次滚动多少(最好和Li的Line-height一致)。</pre>
<div class="attachments">
<ul>
<li><a href="http://www.javaeye.com/topics/download/b2417f24-305f-32b9-ab79-5fea547d3ee7">demo1.zip</a> (541 Bytes)</li>
</ul>
<ul style="display: none;">
<li><a href="http://www.javaeye.com/upload/attachment/89255/292c3b99-53c3-399d-9ae2-a324c52f83a1.jpg" target="_blank"><img class="magplus" title="点击查看原始大小图片" src="http://www.javaeye.com/upload/attachment/89255/292c3b99-53c3-399d-9ae2-a324c52f83a1-thumb.jpg?1238425389" alt="292c3b99-53c3-399d-9ae2-a324c52f83a1-thumb" /></a></li>
<li>大小: 7.4 KB</li>
</ul>
<ul style="display: none;">
<li><a href="http://www.javaeye.com/upload/attachment/89257/3132255c-86b2-37ec-9802-91a28b884dc8.jpg" target="_blank"><img class="magplus" title="点击查看原始大小图片" src="http://www.javaeye.com/upload/attachment/89257/3132255c-86b2-37ec-9802-91a28b884dc8-thumb.jpg?1238425391" alt="3132255c-86b2-37ec-9802-91a28b884dc8-thumb" /></a></li>
<li>大小: 8.7 KB</li>
</ul>
<ul>
<li><a href="http://www.javaeye.com/topics/download/1aca0718-bb42-3ef9-beb4-6a661b2090b8">demo3.1.zip</a> (523 Bytes)</li>
</ul>
<ul>
<li><a href="http://www.javaeye.com/topics/download/54788a3d-9112-34e3-a966-c2a06a4f488c">demo3.2.zip</a> (498 Bytes)</li>
</ul>
<ul style="display: none;">
<li><a href="http://www.javaeye.com/upload/attachment/89263/f970cb0b-ae8a-3ebe-87de-bbe44812ec74.jpg" target="_blank"><img class="magplus" title="点击查看原始大小图片" src="http://www.javaeye.com/upload/attachment/89263/f970cb0b-ae8a-3ebe-87de-bbe44812ec74-thumb.jpg?1238427257" alt="F970cb0b-ae8a-3ebe-87de-bbe44812ec74-thumb" /></a></li>
<li>大小: 8.6 KB</li>
</ul>
<ul>
<li><a href="http://www.javaeye.com/topics/download/2ff45d65-5c16-3e88-9cfd-1d533ed967e5">demo3.3.zip</a> (985 Bytes)</li>
</ul>
<ul>
<li><a href="http://www.javaeye.com/topics/download/d00da8a2-e132-3e38-b3e2-3167072417e5">demo5.zip</a> (71 KB)</li>
</ul>
<ul style="display: none;">
<li><a href="http://www.javaeye.com/upload/attachment/91939/ded4d21f-6999-39af-89b2-eb34d0a50ea6.jpg" target="_blank"><img class="magplus" title="点击查看原始大小图片" src="http://www.javaeye.com/upload/attachment/91939/ded4d21f-6999-39af-89b2-eb34d0a50ea6-thumb.jpg?1239118475" alt="Ded4d21f-6999-39af-89b2-eb34d0a50ea6-thumb" /></a></li>
<li>大小: 167.5 KB</li>
</ul>
<ul style="display: none;">
<li><a href="http://www.javaeye.com/upload/attachment/93058/d08b97ca-b025-30f3-b690-05551da0513d.jpg" target="_blank"><img class="magplus" title="点击查看原始大小图片" src="http://www.javaeye.com/upload/attachment/93058/d08b97ca-b025-30f3-b690-05551da0513d-thumb.jpg?1239379246" alt="D08b97ca-b025-30f3-b690-05551da0513d-thumb" /></a></li>
<li>大小: 18.9 KB</li>
</ul>
<ul>
<li><a href="http://www.javaeye.com/topics/download/3fe24fb0-6489-3be5-83ff-cf9d95b04b98">demo6.zip</a> (1 KB)</li>
</ul>
<ul>
<li><a onclick="$$('div.attachments ul').invoke('show');$(this).up(1).hide();return false;" href="http://www.javaeye.com/topic/363095#">查看图片附件</a></li>
</ul>
</div>
<hr />
<p>© <a href="http://www.iwanna.cn">我想网</a> Akon 所有 , 2009. |
<a href="http://www.iwanna.cn/archives/2009/04/29/894/">永久链接</a> |
<a href="http://www.iwanna.cn/archives/2009/04/29/894/#comments">没有评论</a> |
提交到
<a rel="nofollow" target="_blank" href="http://www.google.com/reader/view/feed/http://www.iwanna.cn/archives/2009/04/29/894/">Google Reader</a>
<a rel="nofollow" target="_blank" href="http://www.xianguo.com/subscribe.php?url=http://www.iwanna.cn/archives/2009/04/29/894/">鲜果</a>
<a rel="nofollow" target="_blank" href="http://www.zhuaxia.com/add_channel.php?url=http://www.iwanna.cn/archives/2009/04/29/894/">抓虾</a>
<hr />
</p>
	标签：<a href="http://www.iwanna.cn/topics/ui/css/" title="CSS" rel="tag nofollow">CSS</a>, <a href="http://www.iwanna.cn/tags/css/" title="CSS" rel="tag nofollow">CSS</a>, <a href="http://www.iwanna.cn/topics/ui/adobe/flex-adobe-ui/" title="Flex" rel="tag nofollow">Flex</a>, <a href="http://www.iwanna.cn/topics/ui/html/" title="HTML" rel="tag nofollow">HTML</a>, <a href="http://www.iwanna.cn/tags/html/" title="HTML" rel="tag nofollow">HTML</a>, <a href="http://www.iwanna.cn/topics/develope/api-develope/iphone-api-develope-develope/" title="iPhone" rel="tag nofollow">iPhone</a>, <a href="http://www.iwanna.cn/topics/ui/javascript/" title="JavaScript" rel="tag nofollow">JavaScript</a>, <a href="http://www.iwanna.cn/tags/javascript/" title="JavaScript" rel="tag nofollow">JavaScript</a>, <a href="http://www.iwanna.cn/topics/develope/php/" title="PHP" rel="tag nofollow">PHP</a>, <a href="http://www.iwanna.cn/topics/develope/seo-develope/" title="SEO" rel="tag nofollow">SEO</a>, <a href="http://www.iwanna.cn/tags/skill/" title="Skill" rel="tag nofollow">Skill</a>, <a href="http://www.iwanna.cn/topics/surf/website/" title="Website" rel="tag nofollow">Website</a>, <a href="http://www.iwanna.cn/topics/develope/php/wordpress-php-develope/" title="Wordpress" rel="tag nofollow">Wordpress</a>, <a href="http://www.iwanna.cn/topics/develope/" title="程序开发" rel="tag nofollow">程序开发</a>, <a href="http://www.iwanna.cn/topics/surf/job/" title="职业" rel="tag nofollow">职业</a><br />

	<h2 class="related_post">您可能会感兴趣的其他文章</h2>
	<ul class="st-related-posts">
	<li><a href="http://www.iwanna.cn/archives/2009/04/20/713/" title="24 个漂亮的个性化 HTML 表单技术 (2009年04月20日)">24 个漂亮的个性化 HTML 表单技术</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2010/06/16/4013/" title="10个绝妙的HTML5，CSS和Javascript示例 (2010年06月16日)">10个绝妙的HTML5，CSS和Javascript示例</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2009/04/30/915/" title="解密CSS Sprites：技巧、工具和教程 (2009年04月30日)">解密CSS Sprites：技巧、工具和教程</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2009/03/31/79/" title="表单元素：40个CSS/JS风格和功能技术处理 (2009年03月31日)">表单元素：40个CSS/JS风格和功能技术处理</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2010/04/29/2874/" title="相见恨晚的一些 JavaScript 技巧 (2010年04月29日)">相见恨晚的一些 JavaScript 技巧</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2009/03/31/77/" title="用css+js控制图片大小的方法 (2009年03月31日)">用css+js控制图片大小的方法</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2010/06/21/4111/" title="前端开发常见图片格式详解 (2010年06月21日)">前端开发常见图片格式详解</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2009/05/24/1129/" title="八种布局方案改善你的设计 (2009年05月24日)">八种布局方案改善你的设计</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2010/07/27/4752/" title="使用框架建立富联网应用 (2010年07月27日)">使用框架建立富联网应用</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2009/04/13/360/" title="TBCompressor 2.4.2 (2009年04月13日)">TBCompressor 2.4.2</a> </li>
</ul>


<p><small>Feed enhanced by <a href='http://planetozh.com/blog/my-projects/wordpress-plugin-better-feed-rss/'>Better Feed</a> from  <a href='http://planetozh.com/blog/'>Ozh</a></small></p>
]]></content:encoded>
			<wfw:commentRss>http://www.iwanna.cn/archives/2009/04/29/894/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>12条有用的Flex代码</title>
		<link>http://www.iwanna.cn/archives/2009/04/08/231/</link>
		<comments>http://www.iwanna.cn/archives/2009/04/08/231/#comments</comments>
		<pubDate>Wed, 08 Apr 2009 01:42:34 +0000</pubDate>
		<dc:creator>seasun</dc:creator>
				<category><![CDATA[Flex]]></category>

		<guid isPermaLink="false">http://www.iwanna.cn/?p=231</guid>
		<description><![CDATA[1.复制内容到系统剪贴板
System.setClipboard(strContent);
2.复制一个ArrayCollection
//dummy solution( well, it works )
var bar:ArrayCollection = new ArrayCollection();
for each ( var i:Object in ac ){
bar.addItem( i );
}
// fantastic ! //
var bar:ListCollectionView = new ListCollectionView( ListCollectionView( ac ).list );

3.打开一个新浏览器窗口
navigateToURL(new URLRequest(&#8216;http://ntt.cc&#8217;), &#8216;_blank&#8217;);
4.刷新浏览器
navigateToURL(new URLRequest(&#8220;javascript:location.reload();&#8221;),&#8221;_self&#8221;)
5.关闭浏览器
navigateToURL(new URLRequest(&#8220;javascript:window.close()&#8221;),&#8221;_self&#8221;);
6.设置Alert 窗口的背景为透明
Alert
{
modalTransparency:0.0;
modalTransparencyBlur:0;
}
7.取随机颜色
lbl.setStyle(&#8216;color&#8217;, 0xffffff*Math.random());
8.清除子串左侧空格
public function LTrim(s : String):String
{
var i : Number = 0;
while(s.charCodeAt(i) == 32 &#124;&#124; s.charCodeAt(i) == 13 &#124;&#124; s.charCodeAt(i) == 10 [...]]]></description>
			<content:encoded><![CDATA[<p>1.复制内容到系统剪贴板</p>
<p>System.setClipboard(strContent);</p>
<p>2.复制一个ArrayCollection</p>
<p>//dummy solution( well, it works )</p>
<p>var bar:ArrayCollection = new ArrayCollection();</p>
<p>for each ( var i:Object in ac ){</p>
<p>bar.addItem( i );</p>
<p>}</p>
<p>// fantastic ! //</p>
<p>var bar:ListCollectionView = new ListCollectionView( ListCollectionView( ac ).list );<br />
<span id="more-231"></span><br />
3.打开一个新浏览器窗口</p>
<p>navigateToURL(new URLRequest(&#8216;http://ntt.cc&#8217;), &#8216;_blank&#8217;);</p>
<p>4.刷新浏览器</p>
<p>navigateToURL(new URLRequest(&#8220;<a href="http://www.iwanna.cn/tags/javascript/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with JavaScript">javascript</a>:location.reload();&#8221;),&#8221;_self&#8221;)</p>
<p>5.关闭浏览器</p>
<p>navigateToURL(new URLRequest(&#8220;<a href="http://www.iwanna.cn/tags/javascript/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with JavaScript">javascript</a>:window.close()&#8221;),&#8221;_self&#8221;);</p>
<p>6.设置Alert 窗口的背景为透明</p>
<p>Alert</p>
<p>{</p>
<p>modalTransparency:0.0;</p>
<p>modalTransparencyBlur:0;</p>
<p>}</p>
<p>7.取随机颜色</p>
<p>lbl.setStyle(&#8216;color&#8217;, 0xffffff*Math.random());</p>
<p>8.清除子串左侧空格</p>
<p>public function LTrim(s : String):String</p>
<p>{</p>
<p>var i : Number = 0;</p>
<p>while(s.charCodeAt(i) == 32 || s.charCodeAt(i) == 13 || s.charCodeAt(i) == 10 || s.charCodeAt(i) == 9)</p>
<p>{</p>
<p>i++;</p>
<p>}</p>
<p>return s.substring(i,s.length);</p>
<p>}</p>
<p>9.清除字串右侧空格</p>
<p>public function RTrim(s : String):String</p>
<p>{</p>
<p>var i : Number = s.length &#8211; 1;</p>
<p>while(s.charCodeAt(i) == 32 || s.charCodeAt(i) == 13 || s.charCodeAt(i) == 10 ||s.charCodeAt(i) == 9)</p>
<p>{</p>
<p>i&#8211;;</p>
<p>}</p>
<p>return s.substring(0,i+1);</p>
<p>}</p>
<p>10.清除字串左右的空格</p>
<p>public function Trim(s : String):String</p>
<p>{</p>
<p>return LTrim(RTrim(s));</p>
<p>}</p>
<p>11.获取数据类型</p>
<p>getQualifiedClassName(data)</p>
<p>12.生成随机字符串.</p>
<p>private function GenerateCheckCode():String</p>
<p>{</p>
<p>//init</p>
<p>var ran:Number;</p>
<p>var number:Number;</p>
<p>var code:String;</p>
<p>var checkCode:String =&#8221;";</p>
<p>//get 4 radom</p>
<p>for(var i:int=0; i&lt;4; i++)</p>
<p>{</p>
<p>ran=Math.random();</p>
<p>number =Math.round(ran*10000);            //get result like 0.1234</p>
<p>if(number % 2 == 0)</p>
<p>code = String.fromCharCode(48+(number % 10));        //0&#8217;s ASCII code is 48</p>
<p>else</p>
<p>code = String.fromCharCode(65+(number % 26)) ;        // A&#8217;s ASCII code is 65</p>
<p>checkCode += code;</p>
<p>}</p>
<p>return checkCode;</p>
<p>}</p>
<hr />
<p>© <a href="http://www.iwanna.cn">我想网</a> Akon 所有 , 2009. |
<a href="http://www.iwanna.cn/archives/2009/04/08/231/">永久链接</a> |
<a href="http://www.iwanna.cn/archives/2009/04/08/231/#comments">没有评论</a> |
提交到
<a rel="nofollow" target="_blank" href="http://www.google.com/reader/view/feed/http://www.iwanna.cn/archives/2009/04/08/231/">Google Reader</a>
<a rel="nofollow" target="_blank" href="http://www.xianguo.com/subscribe.php?url=http://www.iwanna.cn/archives/2009/04/08/231/">鲜果</a>
<a rel="nofollow" target="_blank" href="http://www.zhuaxia.com/add_channel.php?url=http://www.iwanna.cn/archives/2009/04/08/231/">抓虾</a>
<hr />
</p>
	标签：<a href="http://www.iwanna.cn/tags/flex/" title="Flex" rel="tag nofollow">Flex</a>, <a href="http://www.iwanna.cn/topics/ui/adobe/flex-adobe-ui/" title="Flex" rel="tag nofollow">Flex</a><br />

	<h2 class="related_post">您可能会感兴趣的其他文章</h2>
	<ul class="st-related-posts">
	<li><a href="http://www.iwanna.cn/archives/2009/07/03/1913/" title="使用Adobe Flex 3开发(MMO)大型多人在线游戏 (2009年07月3日)">使用Adobe Flex 3开发(MMO)大型多人在线游戏</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2009/04/01/120/" title="从程序员的角度切入Flex (2009年04月1日)">从程序员的角度切入Flex</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2009/07/29/2073/" title="RIA特别专题和Flash开发平台工具下载资源发布 (2009年07月29日)">RIA特别专题和Flash开发平台工具下载资源发布</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2010/06/13/3958/" title="Flex程序员的四重境界 (2010年06月13日)">Flex程序员的四重境界</a> </li>
</ul>


<p><small>Feed enhanced by <a href='http://planetozh.com/blog/my-projects/wordpress-plugin-better-feed-rss/'>Better Feed</a> from  <a href='http://planetozh.com/blog/'>Ozh</a></small></p>
]]></content:encoded>
			<wfw:commentRss>http://www.iwanna.cn/archives/2009/04/08/231/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>从程序员的角度切入Flex</title>
		<link>http://www.iwanna.cn/archives/2009/04/01/120/</link>
		<comments>http://www.iwanna.cn/archives/2009/04/01/120/#comments</comments>
		<pubDate>Wed, 01 Apr 2009 04:42:51 +0000</pubDate>
		<dc:creator>seasun</dc:creator>
				<category><![CDATA[Flex]]></category>
		<category><![CDATA[Flash]]></category>

		<guid isPermaLink="false">http://www.iwanna.cn/?p=120</guid>
		<description><![CDATA[随着富客户端的风行日渐，Flash的开发的逐渐从internet应用的补充慢慢推向全客户端应用，更有甚之，整个ERP的客户端全部采用Flash.于是本来为设计为Designer用的Flash也就逐渐进入了程序员的视线。
程序员关注Flash，不在动画设计方面，而在于应用交互。技术上来说Flex的发明功不可没，什么是Flex呢？
说这个问题之前必须谈谈Flash的，大家通常听说的Flash文件扩展名都是.swf，道理和java的.class是一样的。这个.swf的源文件则是.as(ActionScript)。
而通常设计者所说的Flash制作却是制作.fla文件，这是为什么呢？因为这完全依赖于Macromedia Flash软件，该软件通过可视化地制作动画的帧存储成.fla,然后底层本质上还是转换成ActionScript最后再联编成.swf. 如果愿意，所有Macromeida Flash制作的.fla都可以用actionscript来手写。因此高级flash动画设计师都以会写ActionScript为荣。所以我们说 fla制作工具是actionscript的开发框架，是面向设计者的。
回说Flex，Flex其实是ActionScript的另一个框架，只不过它是面向开发者的，它的出现让Flash与后台数据交互更加简单、开发网络应用更加容易。
Flex之于ActionScript犹如Jsp之于Java
就像学习Java一样，大多数程序员都接受从命令行入门的学习方法，此法让程序员对一门语言知表知里，心如明镜。学习Flex/Flash同样可以采用此思路
I. 安装Flex/Flash编译运行环境：Flex3 SDK
去http://www.adobe.com/products/flex/flexdownloads/下载所有平台下的Flex3 SDK。是一个zip包，下载后简单解压缩到你的硬盘目录，如d:flex，目录结构如下：

%flex_homebin有基本的编译工具amxmlc.bat(类似jdk中的javac)
%flex_homeruntimesplayer 有flash文件的运行工具,本人用的win32平台，理所当然使用上图所述子目录win下的FlashPlayer.exe(类似jdk中的java)
小提示：建议大家把 %flex_homebin和%flex_homeruntimesplayerwin加入到系统path中去！
II. ActionScript文件编译运行
1.编写一个最简单的ActionScript程序，存盘为d:HelloWorld.as，内容如下：


Actionscript代码 


package { 
 import flash.display.*; 
 import flash.text.*; 
 
 public class HelloWorld extends Sprite{ 
 public function HelloWorld(){ 
 var t:TextField = new TextField(); 
 t.text = &#8220;Hello World&#8221;; 
 t.x = 50; 
 t.y = 20; 
 addChild(t); 
 } 
 } 
} 


package {
  import flash.display.*;
  import flash.text.*;

  public class HelloWorld extends Sprite{
    public function [...]]]></description>
			<content:encoded><![CDATA[<p>随着富客户端的风行日渐，<a href="http://www.iwanna.cn/tags/flash/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with Flash">Flash</a>的开发的逐渐从internet应用的补充慢慢推向全客户端应用，更有甚之，整个ERP的客户端全部采用<a href="http://www.iwanna.cn/tags/flash/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with Flash">Flash</a>.于是本来为设计为Designer用的<a href="http://www.iwanna.cn/tags/flash/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with Flash">Flash</a>也就逐渐进入了程序员的视线。</p>
<p>程序员关注<a href="http://www.iwanna.cn/tags/flash/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with Flash">Flash</a>，不在动画设计方面，而在于应用交互。技术上来说Flex的发明功不可没，什么是Flex呢？</p>
<p>说这个问题之前必须谈谈<a href="http://www.iwanna.cn/tags/flash/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with Flash">Flash</a>的，大家通常听说的<a href="http://www.iwanna.cn/tags/flash/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with Flash">Flash</a>文件扩展名都是.swf，道理和java的.class是一样的。这个.swf的源文件则是.as(ActionScript)。<br />
<span id="more-120"></span>而通常设计者所说的<a href="http://www.iwanna.cn/tags/flash/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with Flash">Flash</a>制作却是制作.fla文件，这是为什么呢？因为这完全依赖于Macromedia <a href="http://www.iwanna.cn/tags/flash/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with Flash">Flash</a>软件，该软件通过可视化地制作动画的帧存储成.fla,然后底层本质上还是转换成ActionScript最后再联编成.swf. 如果愿意，所有Macromeida <a href="http://www.iwanna.cn/tags/flash/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with Flash">Flash</a>制作的.fla都可以用actionscript来手写。因此高级<a href="http://www.iwanna.cn/tags/flash/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with Flash">flash</a>动画设计师都以会写ActionScript为荣。所以我们说 fla制作工具是actionscript的开发框架，是面向设计者的。</p>
<p>回说Flex，Flex其实是ActionScript的另一个框架，只不过它是面向开发者的，它的出现让<a href="http://www.iwanna.cn/tags/flash/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with Flash">Flash</a>与后台数据交互更加简单、开发网络应用更加容易。</p>
<p><span style="color: red;">Flex之于ActionScript犹如Jsp之于Java</span></p>
<p>就像学习Java一样，大多数程序员都接受从命令行入门的学习方法，此法让程序员对一门语言知表知里，心如明镜。学习Flex/<a href="http://www.iwanna.cn/tags/flash/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with Flash">Flash</a>同样可以采用此思路</p>
<p><strong>I. 安装Flex/<a href="http://www.iwanna.cn/tags/flash/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with Flash">Flash</a>编译运行环境：Flex3 SDK</strong><br />
去http://www.adobe.com/products/flex/flexdownloads/下载所有平台下的Flex3 SDK。是一个zip包，下载后简单解压缩到你的硬盘目录，如d:flex，目录结构如下：<br />
<img src="http://koda.javaeye.com/upload/picture/pic/18590/118f8e96-b36e-3c82-b75b-690f9dd9706e.png" alt="" /></p>
<p>%flex_homebin有基本的编译工具amxmlc.bat(类似jdk中的javac)<br />
%flex_homeruntimesplayer 有<a href="http://www.iwanna.cn/tags/flash/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with Flash">flash</a>文件的运行工具,本人用的win32平台，理所当然使用上图所述子目录win下的FlashPlayer.exe(类似jdk中的java)<br />
小提示：建议大家把 %flex_homebin和%flex_homeruntimesplayerwin加入到系统path中去！</p>
<p><strong>II. ActionScript文件编译运行</strong></p>
<p>1.编写一个最简单的ActionScript程序，存盘为d:HelloWorld.as，内容如下：</p>
<div class="dp-highlighter">
<div class="bar">
<div class="tools">Actionscript代码 <object width="14" height="15" data="http://koda.javaeye.com/javascripts/syntaxhighlighter/clipboard_new.swf" type="application/x-shockwave-flash"><param name="flashvars" value="clipboard=package%20%7B%0A%20%20import%20flash.display.*%3B%0A%20%20import%20flash.text.*%3B%0A%0A%20%20public%20class%20HelloWorld%20extends%20Sprite%7B%0A%20%20%20%20public%20function%20HelloWorld()%7B%0A%20%20%20%20%20%20var%20t%3ATextField%20%3D%20new%20TextField()%3B%0A%20%20%20%20%20%20t.text%20%3D%20%22Hello%20World%22%3B%0A%20%20%20%20%20%20t.x%20%3D%2050%3B%0A%20%20%20%20%20%20t.y%20%3D%2020%3B%0A%20%20%20%20%20%20addChild(t)%3B%0A%20%20%20%20%7D%0A%20%20%7D%0A%7D" /><param name="src" value="http://koda.javaeye.com/javascripts/syntaxhighlighter/clipboard_new.swf" /><param name="quality" value="high" /></object></div>
</div>
<ol class="dp-default">
<li><span><span>package { </span></span></li>
<li><span> import <a href="http://www.iwanna.cn/tags/flash/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with Flash">flash</a>.display.*; </span></li>
<li><span> import <a href="http://www.iwanna.cn/tags/flash/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with Flash">flash</a>.text.*; </span></li>
<li><span> </span></li>
<li><span> public class HelloWorld extends Sprite{ </span></li>
<li><span> public function HelloWorld(){ </span></li>
<li><span> var t:TextField = new TextField(); </span></li>
<li><span> t.text = <span class="string">&#8220;Hello World&#8221;</span><span>; </span></span></li>
<li><span> t.x = <span class="number">50</span><span>; </span></span></li>
<li><span> t.y = <span class="number">20</span><span>; </span></span></li>
<li><span> addChild(t); </span></li>
<li><span> } </span></li>
<li><span> } </span></li>
<li><span>} </span></li>
</ol>
</div>
<pre class="actionscript" style="display: none;">package {
  import <a href="http://www.iwanna.cn/tags/flash/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with Flash">flash</a>.display.*;
  import <a href="http://www.iwanna.cn/tags/flash/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with Flash">flash</a>.text.*;

  public class HelloWorld extends Sprite{
    public function HelloWorld(){
      var t:TextField = new TextField();
      t.text = "Hello World";
      t.x = 50;
      t.y = 20;
      addChild(t);
    }
  }
}</pre>
<p>2. 编译<br />
cmd进入命令行D盘，运行<br />
amxmlc d:HelloWorld.as<br />
在当前目录下生成目标文件HelloWorld.swf</p>
<p>3. 运行<br />
cmd进入命令行D盘，运行<br />
FlashPlayer HelloWorld.swf</p>
<p>运行结果如下：<br />
<img src="http://koda.javaeye.com/upload/picture/pic/18600/7bd2a20a-c39e-3ae9-96dc-7d700514ea2b.png" alt="" /></p>
<p><strong>III. ActionScript文件编译运行</strong><br />
1. 写一个最简单的flex程序，flex程序扩展名.mxml，内容如下</p>
<div class="dp-highlighter">
<div class="bar">
<div class="tools">Xml代码 <object width="14" height="15" data="http://koda.javaeye.com/javascripts/syntaxhighlighter/clipboard_new.swf" type="application/x-shockwave-flash"><param name="flashvars" value="clipboard=%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22utf-8%22%3F%3E%0A%3Cmx%3AApplication%20xmlns%3Amx%3D%22http%3A%2F%2Fwww.adobe.com%2F2006%2Fmxml%22%20layout%3D%22absolute%22%3E%0A%09%3Cmx%3AButton%20x%3D%2230%22%20y%3D%22100%22%20label%3D%22%E6%88%91%E4%BB%AC%E8%A6%81%E7%9B%B8%E4%BF%A1%E5%85%9A%E8%AF%B4%E7%9A%84%3A%E7%93%AE%E5%AE%89%E4%BA%8B%E4%BB%B6%E6%98%AF%E9%BB%91%E5%8A%BF%E5%8A%9B%E8%83%81%E8%BF%AB%E7%BE%A4%E4%BC%97%E4%B8%8A%E8%AE%BF%22%20fontSize%3D%2212%22%20height%3D%2262%22%20width%3D%22345%22%2F%3E%0A%3C%2Fmx%3AApplication%3E%0A" /><param name="src" value="http://koda.javaeye.com/javascripts/syntaxhighlighter/clipboard_new.swf" /><param name="quality" value="high" /></object></div>
</div>
<ol class="dp-xml">
<li><span><span class="tag">&lt;?</span><span class="tag-name">xml</span><span> </span><span class="attribute">version</span><span>=</span><span class="attribute-value">&#8220;1.0&#8243;</span><span> </span><span class="attribute">encoding</span><span>=</span><span class="attribute-value">&#8220;utf-8&#8243;</span><span class="tag">?&gt;</span><span> </span></span></li>
<li><span><span class="tag">&lt;</span><span class="tag-name">mx:Application</span><span> </span><span class="attribute">xmlns:mx</span><span>=</span><span class="attribute-value">&#8220;http://www.adobe.com/2006/mxml&#8221;</span><span> </span><span class="attribute">layout</span><span>=</span><span class="attribute-value">&#8220;absolute&#8221;</span><span class="tag">&gt;</span><span> </span></span></li>
<li><span> <span class="tag">&lt;</span><span class="tag-name">mx:Button</span><span> </span><span class="attribute">x</span><span>=</span><span class="attribute-value">&#8220;30&#8243;</span><span> </span><span class="attribute">y</span><span>=</span><span class="attribute-value">&#8220;100&#8243;</span><span> </span><span class="attribute">label</span><span>=</span><span class="attribute-value">&#8220;我们要相信党说的:瓮安事件是黑势力胁迫群众上访&#8221;</span><span> </span><span class="attribute">fontSize</span><span>=</span><span class="attribute-value">&#8220;12&#8243;</span><span> </span><span class="attribute">height</span><span>=</span><span class="attribute-value">&#8220;62&#8243;</span><span> </span><span class="attribute">width</span><span>=</span><span class="attribute-value">&#8220;345&#8243;</span><span class="tag">/&gt;</span><span> </span></span></li>
<li><span><span class="tag">&lt;/</span><span class="tag-name">mx:Application</span><span class="tag">&gt;</span><span> </span></span></li>
</ol>
</div>
<pre class="xml" style="display: none;">&lt;?xml version="1.0" encoding="utf-8"?&gt;
&lt;mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute"&gt;
	&lt;mx:Button x="30" y="100" label="我们要相信党说的:瓮安事件是黑势力胁迫群众上访" fontSize="12" height="62" width="345"/&gt;
&lt;/mx:Application&gt;</pre>
<p>存盘为d:hello.mxml<br />
2. 编译<br />
cmd进入命令行D盘，运行<br />
amxmlc d:hello.mxml<br />
在当前目录下生成目标文件hello.swf</p>
<p>3. 运行<br />
cmd进入命令行D盘，运行<br />
FlashPlayer hello.swf</p>
<p>结果如下：</p>
<p><img src="http://koda.javaeye.com/upload/picture/pic/18592/1a0f598a-4ac1-3ff1-a253-5194ef23df13.png" alt="" /></p>
<p>简单乎？另外我告诉大家，HelloWorld.as和hello.mxml我完全是在EditPlus中开发和完成编译运行的。最后如果大家都入了门，开始大的<a href="http://www.iwanna.cn/tags/flash/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with Flash">Flash</a>工程项目合作开发，请使用Flex Builder吧</p>
<hr />
<p>© <a href="http://www.iwanna.cn">我想网</a> Akon 所有 , 2009. |
<a href="http://www.iwanna.cn/archives/2009/04/01/120/">永久链接</a> |
<a href="http://www.iwanna.cn/archives/2009/04/01/120/#comments">没有评论</a> |
提交到
<a rel="nofollow" target="_blank" href="http://www.google.com/reader/view/feed/http://www.iwanna.cn/archives/2009/04/01/120/">Google Reader</a>
<a rel="nofollow" target="_blank" href="http://www.xianguo.com/subscribe.php?url=http://www.iwanna.cn/archives/2009/04/01/120/">鲜果</a>
<a rel="nofollow" target="_blank" href="http://www.zhuaxia.com/add_channel.php?url=http://www.iwanna.cn/archives/2009/04/01/120/">抓虾</a>
<hr />
</p>
	标签：<a href="http://www.iwanna.cn/tags/flash/" title="Flash" rel="tag nofollow">Flash</a>, <a href="http://www.iwanna.cn/tags/flex/" title="Flex" rel="tag nofollow">Flex</a>, <a href="http://www.iwanna.cn/topics/ui/adobe/flex-adobe-ui/" title="Flex" rel="tag nofollow">Flex</a><br />

	<h2 class="related_post">您可能会感兴趣的其他文章</h2>
	<ul class="st-related-posts">
	<li><a href="http://www.iwanna.cn/archives/2009/07/03/1913/" title="使用Adobe Flex 3开发(MMO)大型多人在线游戏 (2009年07月3日)">使用Adobe Flex 3开发(MMO)大型多人在线游戏</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2009/07/29/2073/" title="RIA特别专题和Flash开发平台工具下载资源发布 (2009年07月29日)">RIA特别专题和Flash开发平台工具下载资源发布</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2009/05/27/1152/" title="页面插入Flash Object完全攻略 (2009年05月27日)">页面插入Flash Object完全攻略</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2010/07/27/4752/" title="使用框架建立富联网应用 (2010年07月27日)">使用框架建立富联网应用</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2010/04/30/2881/" title="乔布斯:关于Flash的几点思考 (2010年04月30日)">乔布斯:关于Flash的几点思考</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2009/05/27/1184/" title="WordPress 的 Flash 时钟插件 (2009年05月27日)">WordPress 的 Flash 时钟插件</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2010/06/13/3958/" title="Flex程序员的四重境界 (2010年06月13日)">Flex程序员的四重境界</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2010/07/14/4531/" title="Flash游戏引擎列表 (2010年07月14日)">Flash游戏引擎列表</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2010/05/27/3408/" title="33个flash载入页面设计分享 (2010年05月27日)">33个flash载入页面设计分享</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2009/10/14/2311/" title="28个Flash页面进度效果载入(Loading)欣赏 (2009年10月14日)">28个Flash页面进度效果载入(Loading)欣赏</a> </li>
</ul>


<p><small>Feed enhanced by <a href='http://planetozh.com/blog/my-projects/wordpress-plugin-better-feed-rss/'>Better Feed</a> from  <a href='http://planetozh.com/blog/'>Ozh</a></small></p>
]]></content:encoded>
			<wfw:commentRss>http://www.iwanna.cn/archives/2009/04/01/120/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
