<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
<channel>
<title><![CDATA[圣叹]]></title> 
<link>http://www.moorwind.com/index.php</link> 
<description><![CDATA[我们面对现实.我们忠于理想]]></description> 
<language>zh-cn</language> 
<copyright><![CDATA[圣叹]]></copyright>
<item>
<link>http://www.moorwind.com/read.php?277</link>
<title><![CDATA[Flash Builder文件系统不同步解决]]></title> 
<author>kono &lt;admin@yourname.com&gt;</author>
<category><![CDATA[Programming]]></category>
<pubDate>Thu, 02 Jul 2009 04:54:50 +0000</pubDate> 
<guid>http://www.moorwind.com/read.php?277</guid> 
<description>
<![CDATA[ 
	在Flash Builder中有时候修改了某个静态文件后，debug目录下并没有同步更新这个文件，手动复制时报错"Resource is out of sync with the file system"，是因为文件系统不同步造成的，解决方法有两个：<br/>(1)选中工程，右键，选择F5(手动刷新)；<br/>(2)Window->Preferences->General->Workspace，选中Refresh automatically(设置Flash Builder自动刷新)。<br/>Tags - <a href="http://www.moorwind.com/tag.php?tag=flex" rel="tag">flex</a> , <a href="http://www.moorwind.com/tag.php?tag=flash" rel="tag">flash</a> , <a href="http://www.moorwind.com/tag.php?tag=builder" rel="tag">builder</a>
]]>
</description>
</item><item>
<link>http://www.moorwind.com/read.php?276</link>
<title><![CDATA[explorer应用程序错误，内存不能为read]]></title> 
<author>kono &lt;admin@yourname.com&gt;</author>
<category><![CDATA[Programming]]></category>
<pubDate>Wed, 01 Jul 2009 02:48:18 +0000</pubDate> 
<guid>http://www.moorwind.com/read.php?276</guid> 
<description>
<![CDATA[ 
	打开cmd，输入：<br/><div class="code">for %1 in (%windir%&#92;system32&#92;*.dll) do regsvr32.exe /s %1</div><br/>或：<br/><div class="code">for %1 in (%windir%&#92;system32&#92;*.ocx) do regsvr32 /s %1</div><br/>打开时如果出现“此时不应有doregsvr32.exe”警告，或者重新输入一次，或者用regsvr32 actxprxy.dll 命令,接着依次运行以下命令：<br/><div class="code">regsvr32 shdocvw.dll regsvr32 oleaut32.dll regsvr32 actxprxy.dll regsvr32 mshtml.dll regsvr32 msjava.dll regsvr32 browseui.dll regsvr32 urlmon.dll</div><br/>如出现"不是内部或外部命令，也不是可运行或批处理文件", 检查系统变量是否是“%SystemRoot%&#92;system32;%SystemRoot%;%SystemRoot%&#92;System32&#92;Wbem”<br/><br/>关于CMD脚本语法：<a href="http://bbs.greendown.cn/read.php?tid=36889&uid=68799" target="_blank">http://bbs.greendown.cn/read.php?tid=36889&uid=68799</a><br/><br/>保证疗效，百试不爽。<br/>Tags - <a href="http://www.moorwind.com/tag.php?tag=xp" rel="tag">xp</a> , <a href="http://www.moorwind.com/tag.php?tag=explorer" rel="tag">explorer</a>
]]>
</description>
</item><item>
<link>http://www.moorwind.com/read.php?275</link>
<title><![CDATA[配置Alchemy ]]></title> 
<author>kono &lt;admin@yourname.com&gt;</author>
<category><![CDATA[Programming]]></category>
<pubDate>Thu, 11 Jun 2009 07:32:57 +0000</pubDate> 
<guid>http://www.moorwind.com/read.php?275</guid> 
<description>
<![CDATA[ 
	详细的配置过程见：<a href="http://labs.adobe.com/technologies/alchemy/" target="_blank">http://labs.adobe.com/technologies/alchemy/</a><br/><br/>使用Cygwin配置的时候碰到了几处麻烦。首先是路径设置问题，我直接把flex目录下的bin目录copy到了c盘。<br/>其次是编译时报错：<br/><div class="code"><br/>&#91;Compiler&#93; Error #1063: Unable to open file: /cygdrive/c/Users/sascha/Applications/Alchemy/flashlibs/global.abc. <br/>&#91;Compiler&#93; Error #1063: Unable to open file: /cygdrive/c/Users/sascha/Applications/Alchemy/flashlibs/playerglobal.abc. <br/></div><br/><br/>需要修改alchemy目录里 hacks.pl 文件：<br/>把if ( `uname` = ~ / CYGWIN /) 改为if ( `/ bin / uname` = ~ / CYGWIN /<br/><br/>要注意的是，不要把alchemy安装到cygwin的目录下。<br/>Tags - <a href="http://www.moorwind.com/tag.php?tag=flash" rel="tag">flash</a> , <a href="http://www.moorwind.com/tag.php?tag=alchemy" rel="tag">alchemy</a>
]]>
</description>
</item><item>
<link>http://www.moorwind.com/read.php?274</link>
<title><![CDATA[“开心水族箱”试玩并招人]]></title> 
<author>kono &lt;admin@yourname.com&gt;</author>
<category><![CDATA[News&amp;Projects]]></category>
<pubDate>Wed, 27 May 2009 06:11:45 +0000</pubDate> 
<guid>http://www.moorwind.com/read.php?274</guid> 
<description>
<![CDATA[ 
	<a href="http://i3.6.cn/cvbnm/1d/79/2d/92f013aa2ea84404b89dab5e626d5ba9.jpg" target="_blank"><img src="http://i3.6.cn/cvbnm/1d/79/2d/92f013aa2ea84404b89dab5e626d5ba9.jpg" class="insertimage" alt="点击在新窗口中浏览此图片" title="点击在新窗口中浏览此图片" border="0"/></a> <br/>历时2个月，我们的游戏《<a href="http://apps.xiaonei.com/fishbowl" target="_blank">开心水族箱</a>》终于完成内测并在校内网上线公测。<br/>游戏地址：<a href="http://apps.xiaonei.com/fishbowl" target="_blank">http://apps.xiaonei.com/fishbowl</a><br/>简介：<em>这是一个神奇的水族箱，能喂养出会产宝物的鱼儿，还有各种有趣的魔法道具和个性十足的宠物助手帮你养鱼。在这样一个未知而神奇的世界里，你能成为养鱼高手吗？</em><br/><br/>接下来还有很多开发任务，我们也开始扩张招人，下面的薪资待遇看起来也许不高，但请放心，如果您实力强悍，我们会给您绝对有吸引力的薪酬！<br/><br/><div class="quote"><div class="quote-title">引用</div><div class="quote-content"><br/>北京双鱼互动招聘美术设计/flash工程师/java_web工程师<br/>双鱼互动是一个专业从事scoial game开发的创业公司.如果你对这个行业有兴趣，欢迎你加入我们和公司一起成长。<br/><br/>我们现在需要如下:<br/><br/>美术设计师(2个)<br/>职位要求：<br/>1.扎实的美术基础，较强的手绘能力，能独立完成人物设定、场景设定和用户界面设计<br/>2.精通Illustrator/Photoshop等常用绘图软件,精通矢量美术设计<br/>3.善于沟通和表达自己，富有激情、创造力和责任心<br/>4.对网页设计、交互设计有一定了解<br/>5.爱玩游戏，喜欢宽松自由的工作气氛<br/>6.有Flash动画设计经验或游戏设计经验者优先<br/><br/>学历要求：不限<br/>薪资待遇：4K-6K<br/><br/>Flash工程师(2个)<br/>职位要求:<br/>1.有过多人合作项目的开发,负责过模块的编写,有较强系统分析能力；<br/>2.精通ActionScript3、0，能用AS3自主开发Flash组件或游戏，熟悉java开发环境更佳；<br/>3.必须拥有良好的编码风格和面向对象的编程思想；<br/>4.熟悉ActionScript3、0和后台Server之间的通讯与交互；<br/>5.熟练使用设计模式开发；<br/>学历要求：不限<br/>薪资待遇：4K-6K <br/><br/>Java web开发工程师 (2个)<br/>职位要求:<br/>1.熟悉Java，有web应用开发经验<br/>2.掌握sql语言,熟悉mysql数据库操作，熟悉linux开发环境<br/>3.熟悉http协议，熟悉相关web server软件<br/>4.有拼搏精神，沟通好，有责任心<br/>5.会python更佳。<br/>学历要求：不限<br/>薪资待遇：4K-6K<br/><br/>上述薪资待遇只是一个大概，能力超强者完全是可以谈更高的薪水的。我们也欢迎有经验的应届毕业生。<br/>如果有兴趣的话,请把你的简历发给我们(美术设计需要相关作品)，我们会在1-3个工作日内给你答复。邮箱地址：fishrecruiter@gmail.com<br/></div></div><br/><br/>Tags - <a href="http://www.moorwind.com/tag.php?tag=flash" rel="tag">flash</a>
]]>
</description>
</item><item>
<link>http://www.moorwind.com/read.php?273</link>
<title><![CDATA[IE中的注释：saved from url]]></title> 
<author>kono &lt;admin@yourname.com&gt;</author>
<category><![CDATA[Programming]]></category>
<pubDate>Fri, 08 May 2009 08:53:57 +0000</pubDate> 
<guid>http://www.moorwind.com/read.php?273</guid> 
<description>
<![CDATA[ 
	今天把Flex工程的swf标签换成了swfobject， 调试的时候IE总是弹出阻挡提示。于是，加入了一段简单的HTML注释，IE从此静悄悄了：<br/><div class="code">&lt;!-- saved from url=(0014)about:internet --&gt;</div><br/><br/>关于这段注释详细的解释请参考<a href="http://msdn.microsoft.com/en-us/library/ms537628(VS.85).aspx" target="_blank">MSDN</a>。<br/><br/>大意是向本地 HTML 文件中添加一条“saved from URL”注释，以指示 Internet Explorer 对本地计算机上的 HTML 内容应用其他区域的设置。例如，您可以向一个本地 HTML 文件中添加一条“saved from URL”注释，以便可以将该 HTML 文件分配到 Internet 区域而不是本地计算机区域。如果您在 Internet 区域中允许脚本、签名的 ActiveX 控件和 Java 小程序，那么该本地 HTML 文件将使用这些缩减的安全权限运行。<br/>要指示 Internet Explorer 对名为 Test.htm 的本地 HTML 文件使用 Internet 区域，请向 Test.htm 中添加以下注释。请在 <HTML> 标记前面单独使用一行来添加该注释。<br/>Tags - <a href="http://www.moorwind.com/tag.php?tag=flex" rel="tag">flex</a> , <a href="http://www.moorwind.com/tag.php?tag=swfobject" rel="tag">swfobject</a>
]]>
</description>
</item><item>
<link>http://www.moorwind.com/read.php?272</link>
<title><![CDATA[帮朋友招聘高级Flex程序员]]></title> 
<author>kono &lt;admin@yourname.com&gt;</author>
<category><![CDATA[Programming]]></category>
<pubDate>Tue, 05 May 2009 07:31:17 +0000</pubDate> 
<guid>http://www.moorwind.com/read.php?272</guid> 
<description>
<![CDATA[ 
	帮朋友招聘高级Flex程序员，有JAVA/C++背景者优先，月薪约在1.5万左右，牛人另议。<br/>简历请直接发送给 wb6 [at] hotmail dot com, 就不用发送给我了。<br/><br/>Responsibilities:<br/>&nbsp;&nbsp;Responsible for the development of the key Flex portions of the Idapted Technology Platform.<br/>&nbsp;&nbsp;Work with engineers to integrate Flex applications into a Java backend.<br/><br/>Requirements:<br/> Ability to learn quickly and build products rapidly.<br/> Real experience developing web applications.<br/> Thorough knowledge with web standards, such as XML, JavaScript, HTTP.<br/>&nbsp;&nbsp;Strong data structure and OO-design skills.<br/>&nbsp;&nbsp;Ability to be self-directed and contribute meaningfully to a team with minimal management oversight.<br/>&nbsp;&nbsp;Bonus: experience with user experience and usability methodologies<br/>&nbsp;&nbsp;Bonus: Experience building JAVA/PHP applications<br/>Tags - <a href="http://www.moorwind.com/tag.php?tag=%25E6%258B%259B%25E8%2581%2598" rel="tag">招聘</a> , <a href="http://www.moorwind.com/tag.php?tag=flex" rel="tag">flex</a>
]]>
</description>
</item><item>
<link>http://www.moorwind.com/read.php?271</link>
<title><![CDATA[51条优化flash/flex的建议]]></title> 
<author>kono &lt;admin@yourname.com&gt;</author>
<category><![CDATA[Programming]]></category>
<pubDate>Thu, 23 Apr 2009 15:27:43 +0000</pubDate> 
<guid>http://www.moorwind.com/read.php?271</guid> 
<description>
<![CDATA[ 
	原文：<br/><a href="http://www.insideria.com/2009/04/51-actionscript-30-and-flex-op.html" target="_blank">http://www.insideria.com/2009/04/51-actionscript-30-and-flex-op.html</a><br/>但是其中有多条例子举反了，比如原文第25条：<br/><div class="quote"><div class="quote-title">引用</div><div class="quote-content"><br/>25. Avoid calculations and method calls in loops<br/><br/> <br/>for (var i=0;i< myArray.lengh;i++)&#123; &#125; <br/><br/>NOT:<br/><br/>&nbsp;&nbsp;<br/>var len : int = myArray.lengh;&nbsp;&nbsp;<br/>for (var i=0;i<len;i++)&#123;&#125; <br/><br/></div></div><br/>正确的说法是使用<br/><br/>var len : int = myArray.lengh;&nbsp;&nbsp;<br/>for (var i=0;i<len;i++)&#123;&#125;<br/><br/>而不是<br/><br/>for (var i=0;i< myArray.lengh;i++)&#123; &#125; <br/><br/>这里还有一个在线测试：<a href="http://businessintelligence.me/projects/performance_tester/performanceTester.html" target="_blank">http://businessintelligence.me/projects/performance_tester/performanceTester.html</a><br/>Tags - <a href="http://www.moorwind.com/tag.php?tag=actionscript3" rel="tag">actionscript3</a>
]]>
</description>
</item><item>
<link>http://www.moorwind.com/read.php?270</link>
<title><![CDATA[可用于Flex的Flash组件]]></title> 
<author>kono &lt;admin@yourname.com&gt;</author>
<category><![CDATA[Programming]]></category>
<pubDate>Sat, 11 Apr 2009 09:39:20 +0000</pubDate> 
<guid>http://www.moorwind.com/read.php?270</guid> 
<description>
<![CDATA[ 
	如果想在Flex Actionscript工程里使用fl.*包下的组件，不妨使用这个SWC：<br/><a href="http://asform.googlecode.com/files/FlSWC.swc" target="_blank">http://asform.googlecode.com/files/FlSWC.swc</a><br/>我已经在其中包含了Yahoo Astra的系列Flash组件。<br/>如果想仅仅使用部分其中的组件，可以在flash中先导入对应的组件，然后在Lib中右键，选择导出SWC即可。<br/><br/>当然，如果仅仅想使用Fl的UiComponent组件，可以到flash的安装目录下找到对应的源文件。但是在Flex Actionscript工程里直接使用其中的组件时，报错是必然的，因为皮肤文件没被导入：<br/><div class="code"><br/>TypeError: Error #2007: Parameter child must be non-null.<br/>at flash.display::DisplayObjectContainer/addChildAt()<br/>at fl.controls::BaseButton/fl.controls:BaseButton::drawBackground()&#91;C:&#92;Program Files&#92;Adobe&#92;Adobe Flash CS3&#92;en&#92;Configuration&#92;Component Source&#92;ActionScript 3.0&#92;User Interface;fl&#92;controls;BaseButton.as:538&#93;<br/>at fl.controls::LabelButton/fl.controls:LabelButton::draw()&#91;C:&#92;Program Files&#92;Adobe&#92;Adobe Flash CS3&#92;en&#92;Configuration&#92;Component Source&#92;ActionScript 3.0&#92;User Interface;fl&#92;controls;LabelButton.as:600&#93;<br/>at fl.controls::Button/fl.controls:Button::draw()&#91;C:&#92;Program Files&#92;Adobe&#92;Adobe Flash CS3&#92;en&#92;Configuration&#92;Component Source&#92;ActionScript 3.0&#92;User Interface;fl&#92;controls;Button.as:167&#93;<br/>at fl.core::UIComponent/fl.core:UIComponent::callLaterDispatcher()&#91;C:&#92;Program Files&#92;Adobe&#92;Adobe Flash CS3&#92;en&#92;Configuration&#92;Component Source&#92;ActionScript 3.0&#92;User Interface;fl&#92;core;UIComponent.as:1379&#93;<br/>at &#91;renderEvent&#93;<br/></div><br/><br/>Tags - <a href="http://www.moorwind.com/tag.php?tag=flash" rel="tag">flash</a> , <a href="http://www.moorwind.com/tag.php?tag=fl" rel="tag">fl</a> , <a href="http://www.moorwind.com/tag.php?tag=package" rel="tag">package</a> , <a href="http://www.moorwind.com/tag.php?tag=swc" rel="tag">swc</a>
]]>
</description>
</item><item>
<link>http://www.moorwind.com/read.php?269</link>
<title><![CDATA[一款与时间游戏的游戏：让“我”来帮“我”过关]]></title> 
<author>kono &lt;admin@yourname.com&gt;</author>
<category><![CDATA[Programming]]></category>
<pubDate>Sat, 07 Mar 2009 15:45:47 +0000</pubDate> 
<guid>http://www.moorwind.com/read.php?269</guid> 
<description>
<![CDATA[ 
	游戏名叫“Cursor * 10”, 游戏需要消除每层楼面上的图形，点击楼梯在各楼层间移动，最终到达16层。有一些隐秘的楼梯在你清除了特定楼层的图形后才会出现。游戏的每次尝试都只有20秒，而且有一些机关需要有人帮你按住开关才能通过，所以一次到达16层是不可能的事情。但是每次尝试都会被记录下来，并作为你的一个帮手出现在下次的尝试中。也就是说在第10次尝试中，游戏里会有9个鼠标在帮你。你要合理地安排一下每一次的路线，才让你不会帮你自己的倒忙。。。头晕了么？试试看吧:<br/><br/>此处包含一个多媒体文件，请用网页方式查看。<br/><br/>Tags - <a href="http://www.moorwind.com/tag.php?tag=flash" rel="tag">flash</a> , <a href="http://www.moorwind.com/tag.php?tag=game" rel="tag">game</a> , <a href="http://www.moorwind.com/tag.php?tag=time" rel="tag">time</a>
]]>
</description>
</item><item>
<link>http://www.moorwind.com/read.php?268</link>
<title><![CDATA[用于纯Actionscript工程的轻量级Form组件集(二)]]></title> 
<author>kono &lt;admin@yourname.com&gt;</author>
<category><![CDATA[Programming]]></category>
<pubDate>Thu, 26 Feb 2009 09:56:50 +0000</pubDate> 
<guid>http://www.moorwind.com/read.php?268</guid> 
<description>
<![CDATA[ 
	如前一篇Blog所述，正式发布Form的beta版。这一版基本完成了框架的搭建，将部分常用的样式配置独立出来，并且支持通过在外部设置XML配置，动态的生成组件甚至是程序的个模块。这一版本包含的组件有：<br/>1、控制类：多选/单选; 下拉框; 文本输入框;&nbsp;&nbsp;列表; 标签; 按钮/状态按钮/链接按钮;<br/>2、布局类：HBox/VBox;<br/>3、其他：Alert; Popout;<br/><strong>示例：</strong><br/><br/>此处包含一个多媒体文件，请用网页方式查看。<br/><br/>使用了这套组件开发的程序示例（一款音乐播放器）：<br/><a href="http://lads.myspace.cn/widget/form/light/lightplayer.html" target="_blank">http://lads.myspace.cn/widget/form/light/lightplayer.html</a><br/><strong>项目地址：</strong><br/><a href="http://code.google.com/p/asform/" target="_blank">http://code.google.com/p/asform/</a><br/>目前没有直接提供下载，可以通过svn访问源代码。SWC位于http://asform.googlecode.com/svn/trunk/Form/src/swc/Form.swc；一个完整的Test示例位于http://asform.googlecode.com/svn/trunk/FormTest/src/FormTest.as。<br/><br/>此外，我会在一个月后从Myspace China离职，目前下家尚未确定，只是在和一些朋友、猎头沟通，因此这套组件库的更新也许会停下来一段时间。当然如果朋友们有不错的公司，是很欢迎给我引荐下的，再此谢过。<br/><br/><strong>下面是简单的使用示例：</strong><br/><span style="color: #32CD32;">1、</span>基础控件的使用，直接使用封装好的类即可。如果要改变样式，可以改变FormAsset.swf中的对应的样式即可。更高级的组件定制请见后文。：<br/><div class="code"><br/>var radio1:Radio = new Radio();<br/>radio1.label = &quot;radio 1&quot;;<br/>radio1.formName = &quot;Radio&quot;;<br/>radio1.width = 65;<br/>var radio2:Radio = new Radio();<br/>radio2.label = &quot;radio 2&quot;;<br/>radio2.formName = &quot;Radio&quot;;<br/>radio2.width = 65;<br/>var radio3:Radio = new Radio();<br/>radio3.label = &quot;radio 3&quot;;<br/>radio3.formName = &quot;Radio&quot;;<br/>radio3.width = 65;<br/><br/>addChild(radio1);<br/>addChild(radio2);<br/>addChild(radio3);&nbsp;&nbsp;&nbsp;&nbsp;<br/></div><br/><span style="color: #32CD32;">2、</span>如果要使用布局类，如HBox/VBox等实现随场景自动伸缩，其root需要指向ApplicationContainer这个类。ApplicationContainer封装了所有布局类、Alert、Popout的接口。<br/>如：<br/><div class="code"><br/>package &#123;<br/>&nbsp;&nbsp;import flash.events.Event;<br/>&nbsp;&nbsp;import flash.events.MouseEvent;<br/>&nbsp;&nbsp;<br/>&nbsp;&nbsp;import form.ui.*<br/>&nbsp;&nbsp;import form.ui.component.Layout.HBox;<br/><br/>&nbsp;&nbsp;&#91;SWF(backgroundColor=&quot;0xFFFFFF&quot;, frameRate=&quot;30&quot;, width=&quot;450&quot;, height=&quot;400&quot;)&#93;<br/>&nbsp;&nbsp;public class FormTest extends ApplicationContainer<br/>&nbsp;&nbsp;&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;private var listData:Array;<br/>&nbsp;&nbsp;&nbsp;&nbsp;public function FormTest()<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;super();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;this.layout.paddingLeft = 10;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;this.layout.paddingTop = 10;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;runDefault();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;private function delayTest(li:ListBase):void<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for(var i:int = 300; i &lt; 350; i++)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;li.addItem(&#123;&quot;label&quot;: i, &quot;b&quot;: &quot;act&quot;&#125;);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;public function runDefault():void<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#123;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var checkBoxLabel:Label = new Label();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;checkBoxLabel.formValue = &quot;CheckBox Group&quot;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;checkBoxLabel.width = 200;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;addChild(checkBoxLabel);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var checkBox1:CheckBox = new CheckBox();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;checkBox1.label = &quot;checkBox 1&quot;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;checkBox1.width = 70;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;checkBox1.checkedOnAddedToStage = true;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var checkBox2:CheckBox = new CheckBox();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;checkBox2.label = &quot;checkBox 2&quot;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;checkBox2.width = 70;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var checkBoxBox:HBox = new HBox();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;checkBoxBox.percentWidth = 100;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;checkBoxBox.addChild(checkBox1);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;checkBoxBox.addChild(checkBox2);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;addChild(checkBoxBox);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var select:Select = new Select();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;select.addHeader(&quot;Default Header&quot;);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;select.addOption(&quot;Select Opinion1&quot;, &quot;Select Opinion1&quot;);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;select.addOption(&quot;Select Opinion2&quot;, &quot;Select Opinion2&quot;);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;select.prompt = &quot;Select&quot;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var input:Input = new Input();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;input.prompt = &quot;Input&quot;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var button:FormButton = new FormButton();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;button.label = &quot;Button&quot;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;button.width = 80;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;button.addEventListener(MouseEvent.CLICK, showAlert, false, 0, true);&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var ioBox:HBox = new HBox();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ioBox.percentWidth = 100;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ioBox.horizontalGap = 10;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ioBox.addChild(select);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ioBox.addChild(input);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ioBox.addChild(button);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;addChild(ioBox);&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;private function showAlert(e:Event):void<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Alert.show(&quot;Alert Title&quot;, &quot;Alert Message&quot;);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;&#125;<br/>&#125;<br/></div><br/><span style="color: #32CD32;">3、</span>最强大的部分：这套组件<span style="color: #FF0000;">建立的核心是快速应对变化的需求，以不变（组件核心库）应万变（只改变配置文件）</span>。下面先看一段XML：<br/><div class="code"><br/>&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot; ?&gt;<br/>&lt;layout&gt;<br/>&nbsp;&nbsp;&lt;layoutType&gt;boxLayout&lt;/layoutType&gt;<br/>&nbsp;&nbsp;&lt;url&gt;assets/blackAsset.swf&lt;/url&gt;<br/>&nbsp;&nbsp;&lt;global&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&lt;item name=&quot;cn.myspace.player.ui.DefaultTrackListRender&quot; style=&quot;index-text-color: #FFFFFF; track-title-color:#FFFFFF; &quot;/&gt;<br/>&nbsp;&nbsp;&lt;/global&gt;<br/>&nbsp;&nbsp;&lt;data&gt;&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&lt;app style=&quot;padding: 5px; vertical-gap:5px; background:bgClip_linkage; background-size:100%;&quot;&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;hbox style=&quot;width:100%; height:35px; padding-top:2px; padding-bottom:5px;&quot;&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;logo style=&quot;background:logo; width:100%;&quot;/&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/hbox&gt;&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&lt;/app&gt;<br/>&nbsp;&nbsp;&lt;/data&gt;<br/>&lt;/layout&gt;<br/></div><br/>传统的Flex中，样式（Skin）是可以编译成SWF从而实现在RunTime换肤。而这套组件就没必要重复造轮子了。<br/>以播放器为例，播放器出去一些控制按钮、均衡器、波形表等基础组件外，再也没有其他的可变的部分了。这是“不变”的根本。变化的是这些部件的外观和各种组合方式。如果他们能写到配置文件里...是的，以后要做的就不再是开发，而是维护工作了。这边是上面这段XML做的事情。完整的皮肤配置文件位于<a href="http://lads.myspace.cn/widget/form/light/assets/userBlank.xml" target="_blank">http://lads.myspace.cn/widget/form/light/assets/userBlank.xml</a>.<br/>实际上 每个项目有一个组件工厂（必须是每个项目都各不相同，且很难定义一个统一的接口，所以不包含在Form库中。），工厂负责装配这些配置文件里的各个模块，它形如：<br/><div class="code"><br/>public class UIFactory<br/>&#123;<br/>&nbsp;&nbsp;public static function createUI(xml:XML):FMSprite<br/>&nbsp;&nbsp;&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;var name:String = xml.name().localName;<br/>&nbsp;&nbsp;&nbsp;&nbsp;var box:FMSprite;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;name = StringUtils.trim(name).toLowerCase();<br/>&nbsp;&nbsp;&nbsp;&nbsp;switch (name)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case &quot;app&quot;: box = ApplicationContainer.application; break;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case &quot;logo&quot;: box = new Logo; break;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case &quot;hbox&quot;: box = new HBox(); break;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case &quot;vbox&quot;: box = new VBox(); break;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case &quot;box&quot;: box = new Box(); break;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case &quot;art&quot;: box = new Art(); break;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;...<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;var css:CSS = CssFactory.createCSS(box);<br/>&nbsp;&nbsp;&nbsp;&nbsp;css.fromXML(xml);<br/>&nbsp;&nbsp;&nbsp;&nbsp;return box;<br/>&nbsp;&nbsp;&#125;<br/>&#125;<br/></div><br/>组件库有一个CSS分析器将所有XML组件元素标签的style属性转化为Flash的Class，然后由StyleManager类来管理这个组件的皮肤设置。<br/>当然，这版还没有完成的一部分是List的ItemRender的动态配置。CSS的模块不一定每个项目都会用到，所以他和各个模块不存在依赖关系，实际项目中用到的时候才会import他们，尽管这个模块没多大。<br/>更好的方式是，主程序只做容器，读取到配置文件都再决定加载它们，最后设定他们的外观——很多大型项目不都是基于这一思想实现的么？<br/>播放器的代码由于是公司里的项目所以不便公开，这里只能给出一个大致的实现思想，很多人都可以顺着这个思想实现他。当然，这中想法在Flex里也是可以实现的。<br/>Tags - <a href="http://www.moorwind.com/tag.php?tag=flash" rel="tag">flash</a> , <a href="http://www.moorwind.com/tag.php?tag=actionscript3" rel="tag">actionscript3</a> , <a href="http://www.moorwind.com/tag.php?tag=form" rel="tag">form</a> , <a href="http://www.moorwind.com/tag.php?tag=framework" rel="tag">framework</a> , <a href="http://www.moorwind.com/tag.php?tag=light" rel="tag">light</a> , <a href="http://www.moorwind.com/tag.php?tag=weight" rel="tag">weight</a> , <a href="http://www.moorwind.com/tag.php?tag=player" rel="tag">player</a>
]]>
</description>
</item>
</channel>
</rss>