﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-JiangZone-随笔分类-Flash/Flex</title><link>http://www.blogjava.net/cph8066/category/33392.html</link><description>天将降大任于是人也！</description><language>zh-cn</language><lastBuildDate>Tue, 29 Jul 2008 06:56:24 GMT</lastBuildDate><pubDate>Tue, 29 Jul 2008 06:56:24 GMT</pubDate><ttl>60</ttl><item><title>[转载]如何学习Flex Framework</title><link>http://www.blogjava.net/cph8066/archive/2008/07/29/218426.html</link><dc:creator>姜大叔</dc:creator><author>姜大叔</author><pubDate>Tue, 29 Jul 2008 06:46:00 GMT</pubDate><guid>http://www.blogjava.net/cph8066/archive/2008/07/29/218426.html</guid><wfw:comment>http://www.blogjava.net/cph8066/comments/218426.html</wfw:comment><comments>http://www.blogjava.net/cph8066/archive/2008/07/29/218426.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/cph8066/comments/commentRss/218426.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/cph8066/services/trackbacks/218426.html</trackback:ping><description><![CDATA[最近由於種種緣故又要開始做點教育訓練的事，先趁現在有空把手邊的資料整理一下。<br />
<br />
＊Flex 的基礎架構<br />
<br />
關於 flex 基本上常被問到的不外乎就是「如何可以學好它？」，要瞭解這個問題的答案基本上只要看懂下面這圖就ok了。<br />
<br />
<img alt="" src="http://www.blogjava.net/images/blogjava_net/cph8066/n2008629115814.gif" width="550" height="400" /><br />
<br />
＊Actionscript 該學的重點<br />
<br />
從最底層看起，最下面的 actionscript 3是一切的基礎，它是 flash/flex 編程使用的唯一程式語言，因此任何人想學好 flex 第一件事絕對是先摸熟 actionscript 這個語言，包含：<br />
<br />
1. 它的基本語法與結構(array, hash, loop, if else&#8230;)<br />
<br />
2. DisplayList (DisplayObject, DisplayObjectContainer)與 Event system(bubbling, propagating&#8230;)<br />
<br />
3. Sound, Video, NetConnection 與 Graphics class<br />
<br />
掌握 as3 的精華後，接下來就可以進入 flex framework。<br />
<br />
＊Flex framework 的重點<br />
<br />
基本上 flex framework 就是用 actionscript 寫成的框架，因此也可以把它看成是 as3的最好示範，看著 framework source 學 actionscript 也是挺不錯的，只是路會變很長。<br />
<br />
Flex Framework 整個體系非常博大精深，通常一般人不太可能完整把它學完，只需要針對最常用到的部份熟悉就好，圖中列出的那三塊(component, managers, style/skin)就是我個人認為所有初學者最優先該學會的。<br />
<br />
＊Component 該學些什麼<br />
<br />
Component 是整個 flex framework 的基礎，幾乎80% 的元素都是由 UIComponent 繼承而來，例如最根本的的 它本身就是一個 UIComponent，因此，熟悉 component 就成為學好 flex framework 最根本也最重要的基本功<br />
<br />
Flex 內建了 二十幾個 UI controls, 例如 Button, DataGrid, HBox等，以種類來分，這些 components 可以概分為三大類：<br />
<br />
-Controls: Button, DateChooser, Slider&#8230;<br />
-Containers: Box, DividedBox, Panel&#8230;<br />
-List: DataGrid, Tree, TileList&#8230;<br />
<br />
初學者第一步至少該學會怎麼用這些元件，瞭解每個元件的 properties, events, styles, effects&#8230;，知道怎麼在手冊裏查它的 API 文件，以及何時該用何種元件。<br />
<br />
進階一點，則是學會怎麼修改這些元件，例如繼承一個 Button 下來加上不同的功能，或是寫不同的 skin border 來改變它的外觀。<br />
<br />
再更進階，則是開始研究元件的生命週期，瞭解每個元件是何時初始化，元件內部有那些關鍵指令與它們個別的功用，然後可以試著建立自已的 custom component。<br />
<br />
這一關看起來容易但實際上最困難，因為 flex 的 component framework 寫的非常龐大，雖然亂中有序但要在混沌中看出隱藏的架構然後抓住重點整串提起，就非得有人帶著指引正確的途徑才比較可能達成。<br />
<br />
＊manager 是什麼<br />
<br />
圖中最上方的第二塊就是 manager。<br />
<br />
flex 裏有很多的 managers，負責做各種不同的工作(廢話&#8230;)，幾個比較重要的包含：<br />
<br />
-SystemManager:<br />
它是每支 flex app 的根源，最先被下載，也最早啟動，由它進行一連串的 app boot流程<br />
<br />
-StyleManager:<br />
它負責整支app 的 css style 套用與 skin 生成，如果想玩動態 css 載換也靠它<br />
<br />
-DragManager:<br />
Flex最大的賣點就是 drag and drop，這個 manager 就是背後的英雄，初學者至少要學會怎麼處理 drag 行為的五個事件，以及如何在不同元件間做拖放；進階的玩家則應該深入研究這支 manager 是怎麼寫成的，詳細閱讀它的 source 會得到意想不到的無窮樂趣(如果你讀完卻沒有這種感覺，呃，那代表你該再多讀幾次，如果還是沒有，那請私下聯絡我 :D)<br />
<br />
-ModuleManager:<br />
使用 Flex 開發大型應用程式時，往往會將程式切割成許多小的 module, 這個 manager 就是負責載入並管理所有的 module (包含它的 class partition)，初心者或許用不到，但有志深入的玩家一定要很熟。<br />
<br />
-CursorManager:<br />
這個用到的時機不是很多，但偶爾要換一下 cursor 時還是會用到，初學者至少要知道怎麼用指定的圖案去換掉系統cursor。<br />
<br />
＊Style/Skin 的重點<br />
<br />
CSS style 與 skinning 是 Flex 最大的賣點之一，也是開發過程中較為麻煩也最耗時的部份。<br />
<br />
初學者應該要徹底瞭解如何使用 CSS style 來打點一支 flex app 的外觀，換顏色、素材，使用外部 assets 修飾介面。<br />
<br />
中階玩家則應該瞭解 skinning 的系統，包含 programmatic skinning 與 graphical skin，它們兩的差別？使用時機？如何客製化？<br />
<br />
更高階的玩家則應該熟悉整個 Styling system 的運作模式，外加如何動態載入 css 在 runtime 換掉整個介面。<br />
<br />
簡而言之，flex app 寫的好不好，外行人其實看不太出來，但一支 app UI 美不美則是一翻兩瞪眼，比較漂亮的那就先加十分<br />
<br />
(當然，有一種情況是刻意用心去美化了介面結果弄巧成拙搞的怨聲載道人人喊打，但那種比較不多見，也不是每家公司都會搞到這步田地，就先不討論)<br />
<br />
＊學完基本功後下一步<br />
<br />
在我的標準裏，當一個 developer 對上圖內每一塊都有中等程度的瞭解後，就算是完成 flex 養成教育，可以邁向下一個階段。<br />
<br />
也就是開始熟悉 application 的製作手法，這包含<br />
<br />
-瞭解至少一種以上的開發框架，例如 Cairngorm，老實說我對這個框架沒什麼好感(因為手法太複雜，只適合超複雜登月計畫或火星探勘時使用)，但它結構設計良好，又是業界公認的聖盃，等於是專家們共通的語言，因此至少要先瞭解它在做什麼，將來在專業場合才好溝通(俗話說 know the rules so you know what you are breaking, 就是指這情況)<br />
<br />
-接著可以看看比較簡單的手法，像 Riawave, Model-Glue:Flex, PureMVC&#8230;等，基本上這些框架設計方式都大同小異，每個都有不同的應用場合，可以挑一個喜歡的再自行修改。<br />
<br />
-瞭解基本的概念，例如 Value Object, DAO, MVC 等，它們在大部份的程式框架裏都會出現，早點學會日子比較輕鬆。<br />
<br />
接著就是開始實際 coding，寫一個中小型規模的app，不論是單純的 CRUD app，或是留言版、電話簿、進銷存管理都可以，籍由多寫來強化編程的概念，然後透過大量的 peer code review 來找出可改進的地方。<br />
<br />
＊結論<br />
<br />
結論還是老話一句：要入門 flex 超級簡單，只要不是白癡應該一小時就行，但要成為可獨當一面的專業開發者，路就很長，如果沒有走對方向很容易就迷失甚至最後放棄。<br />
<br />
換句話說，要能成為職場上真正需要的 professional developer，並不如表面上想像的容易(其實我想每種技術領域跟產業都一樣吧)，這也是我過去半年來協助很多公司做 recruiting 後的感想。<br />
<br />
<img src ="http://www.blogjava.net/cph8066/aggbug/218426.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/cph8066/" target="_blank">姜大叔</a> 2008-07-29 14:46 <a href="http://www.blogjava.net/cph8066/archive/2008/07/29/218426.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>基于PureMVC的一个Flex MP3播放器分析</title><link>http://www.blogjava.net/cph8066/archive/2008/07/29/218424.html</link><dc:creator>姜大叔</dc:creator><author>姜大叔</author><pubDate>Tue, 29 Jul 2008 06:44:00 GMT</pubDate><guid>http://www.blogjava.net/cph8066/archive/2008/07/29/218424.html</guid><wfw:comment>http://www.blogjava.net/cph8066/comments/218424.html</wfw:comment><comments>http://www.blogjava.net/cph8066/archive/2008/07/29/218424.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/cph8066/comments/commentRss/218424.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/cph8066/services/trackbacks/218424.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 做Flex做久了做大了，就会觉得之前写的的Flex代码开始有点乱，哪怕你写的规范了，但总觉得结构松散，维护不方便，相信很多人刚开始做Flex的时候，都是想到什么功能，就写什么功能，或者有些好点的，就先画了个大体的流程图之类的，因为现在Flex普及得还不够，很多人做Flex也是试探阶段，不敢用作商业项目或其它大项目，只会用来试水技术层面的...&nbsp;&nbsp;<a href='http://www.blogjava.net/cph8066/archive/2008/07/29/218424.html'>阅读全文</a><img src ="http://www.blogjava.net/cph8066/aggbug/218424.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/cph8066/" target="_blank">姜大叔</a> 2008-07-29 14:44 <a href="http://www.blogjava.net/cph8066/archive/2008/07/29/218424.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Flex中的皮肤（二）完</title><link>http://www.blogjava.net/cph8066/archive/2008/07/29/218421.html</link><dc:creator>姜大叔</dc:creator><author>姜大叔</author><pubDate>Tue, 29 Jul 2008 06:40:00 GMT</pubDate><guid>http://www.blogjava.net/cph8066/archive/2008/07/29/218421.html</guid><wfw:comment>http://www.blogjava.net/cph8066/comments/218421.html</wfw:comment><comments>http://www.blogjava.net/cph8066/archive/2008/07/29/218421.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/cph8066/comments/commentRss/218421.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/cph8066/services/trackbacks/218421.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 在上一篇文章中，为大家介绍了Flex中皮肤的简单且基本也是最常用的用法，就是先在外部程序中做好皮肤样式，之后再在Flex中加载这些皮肤资源，比如是PNG图片，或者是SWF文件等，这些方法都是比较直接且方便简单的。不过灵活性还是不太好，而现在这篇文章中要讲的，就是从程序里AS编写的皮肤，你可以更灵活自由地控制皮肤的样式与表达方式等，而不用依赖于外部的图片或SWF资源，不过这样还是有些缺点的，就是扩展或是改变时就比较不灵活，像图片资源的皮肤的话，可以很轻易的改变不同的图片的路径资源等就可以修改了不同的皮肤模式，而用AS Graphics写的皮肤的话，要修改一下那些代码，当然，你也可以在AS代码里写上动态加载其它图片资源又或者作一些更高级的效果等等。<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 先在这里解析一下，要以代码方式自定义一个皮肤的话，需要自已编写一个皮肤子类，继承ProgrammaticSkin这个类，这个是所有编写自定义皮肤的基类，该类也派生了另外两个类：RectangularBorder 与 Border 类，都是差不多的，如果你是写Icon之类的小皮肤的话，比如CheckBox或者RadioButton这类皮肤不需要太复杂的画图逻辑，而且大小固定，就像是一个小Icon吧，只是有几个状态而已，这类小皮肤的话，继承ProgrammaticSkin就可以了，而写一些复合的控件，背景大小可以调节之类的皮肤（其实就是大部分皮肤）就用Border或者RectangularBorder类。但都有一个相同点，就是继承了那些类之后，都必需覆盖 updateDisplayList 这个方法，这个方法是由程序自动调用，当需要用到控件时，需要控件的皮肤进行表现时，就会调用那个方法，所以你必需覆盖它，并将你的画图逻辑代码写在那个方法里面。还有要注意的是，这个皮肤类会与你应用这皮肤的控件的Style设置共享，也就是说你可以在编写这个皮肤类代码里面，使用getStyle（）等等方法获得设置在目标控件中的风格属性，比如说是&lt;mx:Panel backgroundColor="0xffffff" borderSkin="MySkin"&gt; 那么你可以在MySkin代码里获取这个颜色值来进行画出该颜色的图片或其它操作，而直接将颜色值写死在代码里是不规范的，就如我下面贴出来的的代码，不过出于自已懒，快速代个示例代码，所以犯这个错了。说多了，下面看看代码先。<br />
<br />
好了，我们先看看看代码，这份代码是写了一个Panel的皮肤：<br />
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #008080;">&nbsp;1</span>&nbsp;<span style="color: #0000ff;">package</span><span style="color: #000000;">&nbsp;com.jiangzone<br />
</span><span style="color: #008080;">&nbsp;2</span>&nbsp;<span style="color: #000000;">{<br />
</span><span style="color: #008080;">&nbsp;3</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">import</span><span style="color: #000000;">&nbsp;mx.skins.Border<br />
</span><span style="color: #008080;">&nbsp;4</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">import</span><span style="color: #000000;">&nbsp;mx.core.EdgeMetrics;<br />
</span><span style="color: #008080;">&nbsp;5</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">import</span><span style="color: #000000;">&nbsp;mx.core.Container;<br />
</span><span style="color: #008080;">&nbsp;6</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">import</span><span style="color: #000000;">&nbsp;mx.graphics.RectangularDropShadow;<br />
</span><span style="color: #008080;">&nbsp;7</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080;">&nbsp;8</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">public</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">class</span><span style="color: #000000;">&nbsp;MyPanelBorderSkin&nbsp;</span><span style="color: #0000ff;">extends</span><span style="color: #000000;">&nbsp;Border&nbsp;{<br />
</span><span style="color: #008080;">&nbsp;9</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080;">10</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">public</span><span style="color: #000000;">&nbsp;function&nbsp;MyPanelBorderSkin():</span><span style="color: #0000ff;">void</span><span style="color: #000000;">&nbsp;{<br />
</span><span style="color: #008080;">11</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
</span><span style="color: #008080;">12</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080;">13</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">/**</span><span style="color: #008000;"><br />
</span><span style="color: #008080;">14</span>&nbsp;<span style="color: #008000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;该方法必需要覆盖，如果你要自定义自已的皮肤的话，<br />
</span><span style="color: #008080;">15</span>&nbsp;<span style="color: #008000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;该方法当在控件更新外观时将会被自动调用<br />
</span><span style="color: #008080;">16</span>&nbsp;<span style="color: #008000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;会传入两个参数数，第一个是Width，第二个是Height，即是该控件的宽与高<br />
</span><span style="color: #008080;">17</span>&nbsp;<span style="color: #008000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;</span><span style="color: #008000;">*/</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">18</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;override&nbsp;</span><span style="color: #0000ff;">protected</span><span style="color: #000000;">&nbsp;function&nbsp;updateDisplayList(w:Number,h:Number):</span><span style="color: #0000ff;">void</span><span style="color: #000000;">&nbsp;{<br />
</span><span style="color: #008080;">19</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">super</span><span style="color: #000000;">.updateDisplayList(w,h);<br />
</span><span style="color: #008080;">20</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080;">21</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;ba:uint&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">1</span><span style="color: #000000;">;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">backgroundAlpha&nbsp;&nbsp;&nbsp;&nbsp;背景透明度</span><span style="color: #008000;"><br />
</span><span style="color: #008080;">22</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;bg:uint&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0xffffff</span><span style="color: #000000;">;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">backgroundColor&nbsp;&nbsp;&nbsp;&nbsp;背景颜色</span><span style="color: #008000;"><br />
</span><span style="color: #008080;">23</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;graphics.clear();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">graphics这个属性是父类里已经提供了的</span><span style="color: #008000;"><br />
</span><span style="color: #008080;">24</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;p:Container&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;parent&nbsp;as&nbsp;Container;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">获取该皮肤所应用在的父容器，这里为Panel<br />
</span><span style="color: #008080;">25</span>&nbsp;<span style="color: #008000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080;">26</span>&nbsp;<span style="color: #008000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">这里需要注意，一定要判断父容器是否已被设置，在文章里作解释</span><span style="color: #008000;"><br />
</span><span style="color: #008080;">27</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(p){<br />
</span><span style="color: #008080;">28</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">获取容器定义的区域边界信息对象&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;"><br />
</span><span style="color: #008080;">29</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;vm:EdgeMetrics&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;p.viewMetrics;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080;">30</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">设置四个角的圆度</span><span style="color: #008000;"><br />
</span><span style="color: #008080;">31</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;radiusContent:Object&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;{tl:vm.top,tr:</span><span style="color: #000000;">0</span><span style="color: #000000;">,bl:</span><span style="color: #000000;">0</span><span style="color: #000000;">,br:vm.top};&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080;">32</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">标题栏圆度&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;"><br />
</span><span style="color: #008080;">33</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;radiusTitle:Object&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;{tl:vm.top,tr:</span><span style="color: #000000;">0</span><span style="color: #000000;">,bl:</span><span style="color: #000000;">0</span><span style="color: #000000;">,br:</span><span style="color: #000000;">0</span><span style="color: #000000;">};&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080;">34</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">画一个圆角矩形，整个背景</span><span style="color: #008000;"><br />
</span><span style="color: #008080;">35</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">this</span><span style="color: #000000;">.drawRoundRect(</span><span style="color: #000000;">0</span><span style="color: #000000;">,</span><span style="color: #000000;">0</span><span style="color: #000000;">,w,h,radiusContent,bg,ba);<br />
</span><span style="color: #008080;">36</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">画一个圆角矩形，标题栏&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;"><br />
</span><span style="color: #008080;">37</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">this</span><span style="color: #000000;">.drawRoundRect(</span><span style="color: #000000;">0</span><span style="color: #000000;">,</span><span style="color: #000000;">0</span><span style="color: #000000;">,w,vm.top,radiusTitle,</span><span style="color: #000000;">0xff0000</span><span style="color: #000000;">,.</span><span style="color: #000000;">7</span><span style="color: #000000;">);<br />
</span><span style="color: #008080;">38</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">画一个圆角矩形，标题栏的那个高光水晶条</span><span style="color: #008000;"><br />
</span><span style="color: #008080;">39</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">this</span><span style="color: #000000;">.drawRoundRect(</span><span style="color: #000000;">0</span><span style="color: #000000;">,</span><span style="color: #000000;">0</span><span style="color: #000000;">,w,vm.top&nbsp;</span><span style="color: #000000;">/</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">2</span><span style="color: #000000;">,radiusTitle,</span><span style="color: #000000;">0xffffff</span><span style="color: #000000;">,.</span><span style="color: #000000;">3</span><span style="color: #000000;">);<br />
</span><span style="color: #008080;">40</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080;">41</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">下面是画阴影的。</span><span style="color: #008000;"><br />
</span><span style="color: #008080;">42</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;dropShadow:RectangularDropShadow&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;RectangularDropShadow();<br />
</span><span style="color: #008080;">43</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dropShadow.distance&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">8</span><span style="color: #000000;">;<br />
</span><span style="color: #008080;">44</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dropShadow.angle&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">60</span><span style="color: #000000;">;<br />
</span><span style="color: #008080;">45</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dropShadow.color&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0x000000</span><span style="color: #000000;">;<br />
</span><span style="color: #008080;">46</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dropShadow.alpha&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0.4</span><span style="color: #000000;">;<br />
</span><span style="color: #008080;">47</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080;">48</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dropShadow.tlRadius&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;radiusContent.tl;<br />
</span><span style="color: #008080;">49</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dropShadow.trRadius&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;radiusContent.tr;<br />
</span><span style="color: #008080;">50</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dropShadow.blRadius&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;radiusContent.bl;<br />
</span><span style="color: #008080;">51</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dropShadow.brRadius&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;radiusContent.br;<br />
</span><span style="color: #008080;">52</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080;">53</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dropShadow.drawShadow(graphics,&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">,&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">,&nbsp;w,&nbsp;h);<br />
</span><span style="color: #008080;">54</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
</span><span style="color: #008080;">55</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
</span><span style="color: #008080;">56</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;}<br />
</span><span style="color: #008080;">57</span>&nbsp;<span style="color: #000000;">}</span></div>
<br />
<br />
上面的代码就是皮肤的代码，之后你还要做的，就是将该皮肤应用到Panel这个容器里：<br />
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #008080;">&nbsp;1</span>&nbsp;<span style="color: #0000ff;">&lt;</span><span style="color: #800000;">mx:Application<br />
</span><span style="color: #008080;">&nbsp;2</span>&nbsp;<span style="color: #800000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #ff0000;">xmlns:mx</span><span style="color: #0000ff;">="http://www.adobe.com/2006/mxml"</span><span style="color: #ff0000;">&nbsp;creationComplete</span><span style="color: #0000ff;">="init()"</span><span style="color: #ff0000;"><br />
</span><span style="color: #008080;">&nbsp;3</span>&nbsp;<span style="color: #ff0000;">&nbsp;&nbsp;&nbsp;&nbsp;layout</span><span style="color: #0000ff;">="absolute"</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">&nbsp;4</span>&nbsp;<span style="color: #000000;"><br />
</span><span style="color: #008080;">&nbsp;5</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">mx:Style</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">&nbsp;6</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.myPanelSkin&nbsp;{<br />
</span><span style="color: #008080;">&nbsp;7</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;borderSkin:&nbsp;ClassReference(&nbsp;"com.jiangzone.MyPanelBorderSkin"&nbsp;);<br />
</span><span style="color: #008080;">&nbsp;8</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
</span><span style="color: #008080;">&nbsp;9</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">mx:Style</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">10</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080;">11</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">mx:Panel&nbsp;</span><span style="color: #ff0000;">borderSkin</span><span style="color: #0000ff;">="com.jiangzone.MyPanelBorderSkin"</span><span style="color: #ff0000;"><br />
</span><span style="color: #008080;">12</span>&nbsp;<span style="color: #ff0000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;width</span><span style="color: #0000ff;">="200"</span><span style="color: #ff0000;">&nbsp;height</span><span style="color: #0000ff;">="150"</span><span style="color: #ff0000;">&nbsp;&nbsp;x</span><span style="color: #0000ff;">="24"</span><span style="color: #ff0000;">&nbsp;y</span><span style="color: #0000ff;">="23"</span><span style="color: #0000ff;">/&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">13</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080;">14</span>&nbsp;<span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">mx:Application</span><span style="color: #0000ff;">&gt;</span></div>
<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 代码很简单，这里要说一下，viewMetrics 这个属性是Container控件所独有的属性，是一个只读属性，编写Container子类的时候都要覆盖它，是用于定义这个容器正文区与边界值的，比如Canvas的四周都是0，所以没有标题栏与边条，而Panel就有四周的边界，而Top边界比较大，用作显示title的，所以如果你要做容器的皮肤的话，注意一下这个值。还有就是，为什么获取了皮肤应用的控件引用（parent）后还要判断它是否为空？因为当程序加载到这个控件时，是先加载那个皮肤的，所以parent的值未被设置，是空的，如果你不作判断的话，将会出现空引用的错误（parent.viewMetrics），当加载完皮肤后，再加载控件并设置控件的属性和设置皮肤，这时将会再次调用updateDisplayList的方法，这时parent才有值，就是那个控件的引用。当改变了style或一些属性后，又会自动触发调用updateDisplayList方法。<br />
<br />
我们来看看最终运行效果：<br />
<br />
<object xcodebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab" height="200" width="300"  classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" >
<param name="Movie" value="/images/blogjava_net/cph8066/z20085243471.swf" />
<param name="Quality" value="high"/>
<param name="wmode" value="transparent"/><embed src="http://www.blogjava.net/images/blogjava_net/cph8066/z20085243471.swf" width="300" height="200"  quality="high" wmode="transparent"     type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" ></embed>
</object><br />
<br />
补充一下：<br />
在第一篇文章里，说了将皮肤做在SWF文件里再加载，想一下，可以将该皮肤做成动画MC的，而不单单只是一个画面，可以做成一些动画作为皮肤，之后在Flex引用该SWF的Symbol，这样皮肤就有了动画效果了，不只只是单纯的不动的平面图！<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Flex中的皮肤教程就说到这里，皮肤还有很多可探索的，只要大家有求知欲，多点看看英文文档，看看别人的例子程序代码，现在Flex也开源了，也可以多看看Flex的源码，会得到很多知识！<br />
<br />
<br />
<br />
<img src ="http://www.blogjava.net/cph8066/aggbug/218421.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/cph8066/" target="_blank">姜大叔</a> 2008-07-29 14:40 <a href="http://www.blogjava.net/cph8066/archive/2008/07/29/218421.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Flex中的皮肤（一）</title><link>http://www.blogjava.net/cph8066/archive/2008/07/29/218419.html</link><dc:creator>姜大叔</dc:creator><author>姜大叔</author><pubDate>Tue, 29 Jul 2008 06:37:00 GMT</pubDate><guid>http://www.blogjava.net/cph8066/archive/2008/07/29/218419.html</guid><wfw:comment>http://www.blogjava.net/cph8066/comments/218419.html</wfw:comment><comments>http://www.blogjava.net/cph8066/archive/2008/07/29/218419.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/cph8066/comments/commentRss/218419.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/cph8066/services/trackbacks/218419.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 好久没有写文章了，一直用&#8220;忙&#8221;来为自已找籍口，其实是懒，不过这个月发生了这么大的事情 5.12 让我们每个人都永记心中，看到中国人的团结，看见解放军们志愿者们这么努力地为灾区奉献，我也不能再为自已找借口了，虽然我远在广东，不能到现场去参与救缓，钱也捐过了，但想想，我还有事情可以做的，就是用我自已的知识，写点技术文章，虽则不能直接的帮助到灾区，但也为国民提高Flex技术知识出分力，做好本职工作。在这里哆嗦点也得说句：为灾区遇难者祈祷，为灾区救缓不懈努力的军民给与崇高的敬意!<br />
.....................................................(三分钟后)<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 好了，我们转入正题，之前我也写过Flex的动画与变换的文章，不知道大家有没有看过。现在我要写的就是Flex中的皮肤样式方面的，我技术不太好，算是自已学习Flex过程中的理解体会吧。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 这里是第一篇，将讲述一下Flex中如何应用UI的皮肤，其实应用UI皮肤不难，你们在使用Flex的过程中是否觉得Flex中自带的皮肤样式不太好看？或者是想自已做个比较有特色的？下面就我们来说说皮肤吧，先来个简单的，你们在做网页时，做导航按钮什么的很多人都是用一个图片来作为一个按钮吧？之后做几个不同的颜色，之后就在CSS或者JS里设置一下当鼠标Over和Down和Out等等动作时，就切换不同颜色的图片，这样实现动态效果。在Flex里也可以如此简单的做皮肤。你可以先画好一个UI的皮肤，之就就将该图片应用到Flex里面。<br />
先来看看效果：<br />
<object xcodebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab" height="200" width="200"  classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" >
<param name="Movie" value="/images/blogjava_net/cph8066/z2008518224718.swf" />
<param name="Quality" value="high"/>
<param name="wmode" value="transparent"/><embed src="http://www.blogjava.net/images/blogjava_net/cph8066/z2008518224718.swf" width="200" height="200"  quality="high" wmode="transparent"     type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" ></embed>
</object><br />
<br />
之后我们来看看代码：<br />
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #008080;">&nbsp;1</span>&nbsp;<span style="color: #0000ff;">&lt;?</span><span style="color: #ff00ff;">xml&nbsp;version="1.0"&nbsp;encoding="utf-8"</span><span style="color: #0000ff;">?&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">&nbsp;2</span>&nbsp;<span style="color: #0000ff;">&lt;</span><span style="color: #800000;">mx:Application&nbsp;</span><span style="color: #ff0000;">xmlns:mx</span><span style="color: #0000ff;">="http://www.adobe.com/2006/mxml"</span><span style="color: #ff0000;">&nbsp;layout</span><span style="color: #0000ff;">="absolute"</span><span style="color: #ff0000;">&nbsp;creationComplete</span><span style="color: #0000ff;">="init()"</span><span style="color: #ff0000;">&nbsp;width</span><span style="color: #0000ff;">="257"</span><span style="color: #ff0000;">&nbsp;height</span><span style="color: #0000ff;">="182"</span><span style="color: #ff0000;">&nbsp;backgroundGradientColors</span><span style="color: #0000ff;">="[#ffffff,&nbsp;#ffffff]"</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">&nbsp;3</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080;">&nbsp;4</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">mx:Script</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">&nbsp;5</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;![CDATA[</span><span style="color: #808080;"><br />
</span><span style="color: #008080;">&nbsp;6</span>&nbsp;<span style="color: #808080;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080;">&nbsp;7</span>&nbsp;<span style="color: #808080;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//Embed标签是用于将一些外部资源加入到Flex中，随Flex的编译成SWF文件，<br />
</span><span style="color: #008080;">&nbsp;8</span>&nbsp;<span style="color: #808080;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//这里是加入一张PNG图片，即是做好的Skin图片<br />
</span><span style="color: #008080;">&nbsp;9</span>&nbsp;<span style="color: #808080;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[Embed(source="images/buttonskin.png",<br />
</span><span style="color: #008080;">10</span>&nbsp;<span style="color: #808080;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;scaleGridTop="26",<br />
</span><span style="color: #008080;">11</span>&nbsp;<span style="color: #808080;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;scaleGridBottom="64",<br />
</span><span style="color: #008080;">12</span>&nbsp;<span style="color: #808080;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;scaleGridLeft="30",<br />
</span><span style="color: #008080;">13</span>&nbsp;<span style="color: #808080;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;scaleGridRight="106")]<br />
</span><span style="color: #008080;">14</span>&nbsp;<span style="color: #808080;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//上面的Embed标签下面要紧跟着这个Class，意思就是将上面的资源加入到Flex<br />
</span><span style="color: #008080;">15</span>&nbsp;<span style="color: #808080;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//后变为这个Class的内容，即调用这个Class时，就是调用那些资源<br />
</span><span style="color: #008080;">16</span>&nbsp;<span style="color: #808080;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;private&nbsp;var&nbsp;MyBtnSkin:Class;<br />
</span><span style="color: #008080;">17</span>&nbsp;<span style="color: #808080;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080;">18</span>&nbsp;<span style="color: #808080;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//在程序创建完成时会调用该函数，在函数里面设置Button的样式（Style）<br />
</span><span style="color: #008080;">19</span>&nbsp;<span style="color: #808080;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//这里就是设置按钮的up,over,down三个鼠标状态时的皮肤，就是上面加入的图片资源<br />
</span><span style="color: #008080;">20</span>&nbsp;<span style="color: #808080;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;private&nbsp;function&nbsp;init():void{<br />
</span><span style="color: #008080;">21</span>&nbsp;<span style="color: #808080;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;btn.setStyle("upSkin",MyBtnSkin);<br />
</span><span style="color: #008080;">22</span>&nbsp;<span style="color: #808080;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;btn.setStyle("overSkin",MyBtnSkin);<br />
</span><span style="color: #008080;">23</span>&nbsp;<span style="color: #808080;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;btn.setStyle("downSkin",MyBtnSkin);<br />
</span><span style="color: #008080;">24</span>&nbsp;<span style="color: #808080;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
</span><span style="color: #008080;">25</span>&nbsp;<span style="color: #808080;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">]]&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">26</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">mx:Script</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">27</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">mx:Button&nbsp;</span><span style="color: #ff0000;">id</span><span style="color: #0000ff;">="btn"</span><span style="color: #ff0000;">&nbsp;label</span><span style="color: #0000ff;">="Hello&nbsp;World"</span><span style="color: #ff0000;">&nbsp;width</span><span style="color: #0000ff;">="190"</span><span style="color: #ff0000;">&nbsp;height</span><span style="color: #0000ff;">="90"</span><span style="color: #0000ff;">/&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">28</span>&nbsp;<span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">mx:Application</span><span style="color: #0000ff;">&gt;</span></div>
<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 怎么样？很简单吧？大家需要注意一下的是在Embed标签里，我定义了一些scaleGridTop之类的属性，这是跟皮肤的缩放有关的，如果不定义那些属性的话，那么图片是多大的，就按多大来进行缩放，当你的按钮很大时，那些皮肤图片就会被拉大，出现马赛克与变形等，这都是不好看的。加入了9格缩放模式后，当你缩放按钮时，九个格中的四个角的区域不会被缩放，保持原样，中间格会宽高同时缩放，中间上下格会仅是宽度缩放，中间左右格只会高度缩放，这样，那个皮肤的边框无论你如何缩放，都是原来的大小比例，而不会将整个图片一起拉申。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 现在的按钮太单调了，只有一个外观，现在大家可以再加多两个不同颜色或者其它图案的图片作为不同状态的皮肤就可以了，比如将overSkin改成红色边框的图片等。<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 其实大家有没有发现，上面代码的写法感觉比较麻烦的。我们可以用CSS来实现，我们可以直接点，将皮肤直接写在Button上，如下：<br />
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #008080;">1</span>&nbsp;<span style="color: #0000ff;">&lt;</span><span style="color: #800000;">mx:Button&nbsp;</span><span style="color: #ff0000;">label</span><span style="color: #0000ff;">="Hello&nbsp;World"</span><span style="color: #ff0000;"><br />
</span><span style="color: #008080;">2</span>&nbsp;<span style="color: #ff0000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;upSkin</span><span style="color: #0000ff;">="@Embed('images/buttonskin.png')"</span><span style="color: #ff0000;"><br />
</span><span style="color: #008080;">3</span>&nbsp;<span style="color: #ff0000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;overSkin</span><span style="color: #0000ff;">="@Embed('images/buttonskin.png')"</span><span style="color: #ff0000;"><br />
</span><span style="color: #008080;">4</span>&nbsp;<span style="color: #ff0000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;downSkin</span><span style="color: #0000ff;">="@Embed('images/buttonskin.png')"</span><span style="color: #ff0000;"><br />
</span><span style="color: #008080;">5</span>&nbsp;<span style="color: #ff0000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">/&gt;</span></div>
<br />
这样也是同样的效果。省事好多了吧。或者我们用CSS来写：<br />
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #008080;">&nbsp;1</span>&nbsp;<span style="color: #0000ff;">&lt;?</span><span style="color: #ff00ff;">xml&nbsp;version="1.0"&nbsp;encoding="utf-8"</span><span style="color: #0000ff;">?&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">&nbsp;2</span>&nbsp;<span style="color: #0000ff;">&lt;</span><span style="color: #800000;">mx:Application&nbsp;</span><span style="color: #ff0000;">xmlns:mx</span><span style="color: #0000ff;">="http://www.adobe.com/2006/mxml"</span><span style="color: #ff0000;">&nbsp;layout</span><span style="color: #0000ff;">="absolute"</span><span style="color: #ff0000;">&nbsp;width</span><span style="color: #0000ff;">="257"</span><span style="color: #ff0000;">&nbsp;height</span><span style="color: #0000ff;">="182"</span><span style="color: #ff0000;">&nbsp;backgroundGradientColors</span><span style="color: #0000ff;">="[#ffffff,&nbsp;#ffffff]"</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">&nbsp;3</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">mx:Style</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">&nbsp;4</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Button{<br />
</span><span style="color: #008080;">&nbsp;5</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;up-skin:Embed(source="images/buttonskin.png",<br />
</span><span style="color: #008080;">&nbsp;6</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;scaleGridTop="26",<br />
</span><span style="color: #008080;">&nbsp;7</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;scaleGridBottom="64",<br />
</span><span style="color: #008080;">&nbsp;8</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;scaleGridLeft="30",<br />
</span><span style="color: #008080;">&nbsp;9</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;scaleGridRight="106");<br />
</span><span style="color: #008080;">10</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;over-skin:Embed(source="images/buttonskin.png",<br />
</span><span style="color: #008080;">11</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;scaleGridTop="26",<br />
</span><span style="color: #008080;">12</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;scaleGridBottom="64",<br />
</span><span style="color: #008080;">13</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;scaleGridLeft="30",<br />
</span><span style="color: #008080;">14</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;scaleGridRight="106");<br />
</span><span style="color: #008080;">15</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
</span><span style="color: #008080;">16</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">mx:Style</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">17</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">mx:Button&nbsp;</span><span style="color: #ff0000;">id</span><span style="color: #0000ff;">="btn"</span><span style="color: #ff0000;">&nbsp;label</span><span style="color: #0000ff;">="Hello&nbsp;World"</span><span style="color: #ff0000;">&nbsp;width</span><span style="color: #0000ff;">="190"</span><span style="color: #ff0000;">&nbsp;height</span><span style="color: #0000ff;">="90"</span><span style="color: #0000ff;">/&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">18</span>&nbsp;<span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">mx:Application</span><span style="color: #0000ff;">&gt;</span></div>
<br />
如果觉得加上CSS代码会令程序代码混乱的话，就将CSS代码写在CSS文件里去，在程序里导入CSS文件就可以了。(至于CSS的用法，我就不说了，反正Flex里的CSS方式与Html里的用法用样。只是要注意一下CSS里面设置的属性的名字就可以了)<br />
<br />
&lt;mx:Style source="styles/styles.css" /&gt;<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 但有人可能会问，这样做的话，如果一个程序有很多不同的UI，并有不同的皮肤，那不就是要生成很多的图片？这个问得好，确实，如果以这种方式的话，就像一个网站里的images文件夹一样，有很多的小图片，这样太麻烦了，而且也不好维护。既然有这样的问题，我们就将皮肤干脆做成在一个文件里面算了，方便快捷，维护又方便，而这个文件，就是SWF文件。我们如果有Flash基础的话，基本对MC都不会陌生，对，这次我们的主角就是SWF里面的MC，我们可以将一个皮肤做成一个MC，在Flash里将所有用到的皮肤都做在一个SWF里，一个图片就像是一个MC，之后发布该SWF文件，在Flex里加载这个SWF文件，再在需要的皮肤里调用SWF里面相应皮肤的MC的名字就可以了。如下：<br />
这个是在Flash里做好的皮肤SWF文件，里面有三个不同颜色的皮肤模式<br />
[swf]attachments/month_0805/p2008518233635.swf[/swf]<br />
这里要注意一下，在Flash里做这些皮肤时，要将MC加上链接，链接的名称，就是你在Flex里调用该皮肤的名称，图片如下：<br />
<img alt="" src="http://www.blogjava.net/images/blogjava_net/cph8066/u2008518233751.jpg" width="231" height="249" /><br />
<br />
<img alt="" src="http://www.blogjava.net/images/blogjava_net/cph8066/a200851823386.jpg" width="443" height="186" /><br />
<br />
在做好皮肤的SWF后，让我们回到Flex 里面，在Flex里写如下代码：<br />
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #008080;">&nbsp;1</span>&nbsp;<span style="color: #0000ff;">&lt;?</span><span style="color: #ff00ff;">xml&nbsp;version="1.0"&nbsp;encoding="utf-8"</span><span style="color: #0000ff;">?&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">&nbsp;2</span>&nbsp;<span style="color: #0000ff;">&lt;</span><span style="color: #800000;">mx:Application&nbsp;</span><span style="color: #ff0000;">xmlns:mx</span><span style="color: #0000ff;">="http://www.adobe.com/2006/mxml"</span><span style="color: #ff0000;">&nbsp;layout</span><span style="color: #0000ff;">="absolute"</span><span style="color: #ff0000;">&nbsp;width</span><span style="color: #0000ff;">="257"</span><span style="color: #ff0000;">&nbsp;height</span><span style="color: #0000ff;">="182"</span><span style="color: #ff0000;">&nbsp;backgroundGradientColors</span><span style="color: #0000ff;">="[#ffffff,&nbsp;#ffffff]"</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">&nbsp;3</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">mx:Style</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">&nbsp;4</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Button{<br />
</span><span style="color: #008080;">&nbsp;5</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;up-skin:Embed(source="images/btnSkin.swf",symbol="btnUP");<br />
</span><span style="color: #008080;">&nbsp;6</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;over-skin:Embed(source="images/btnSkin.swf",symbol="btnOVER");<br />
</span><span style="color: #008080;">&nbsp;7</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;down-skin:Embed(source="images/btnSkin.swf",symbol="btnDOWN");<br />
</span><span style="color: #008080;">&nbsp;8</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
</span><span style="color: #008080;">&nbsp;9</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">mx:Style</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">10</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">mx:Button&nbsp;</span><span style="color: #ff0000;">id</span><span style="color: #0000ff;">="btn"</span><span style="color: #ff0000;">&nbsp;label</span><span style="color: #0000ff;">="Hello&nbsp;World"</span><span style="color: #ff0000;">&nbsp;width</span><span style="color: #0000ff;">="100"</span><span style="color: #ff0000;">&nbsp;height</span><span style="color: #0000ff;">="60"</span><span style="color: #0000ff;">/&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">11</span>&nbsp;<span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">mx:Application</span><span style="color: #0000ff;">&gt;</span></div>
<br />
<br />
注意一下的就是，在Embed标签里，要导入的资源文件不是PNG了，而是一个SWF，就是我们刚才在Flash里做好的皮肤文件，注意看，后面还跟着一个symbol属性，该属性就是指明你要调用哪一个MC，就是SWF里面的MC，记得，都要为每个MC做链接，并链接名字要与symbol里的名字致。至此，我们的皮肤就完成了。一个SWF文件就搞掂。这里是最终效果：<br />
<object xcodebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab" height="200" width="200"  classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" >
<param name="Movie" value="/images/blogjava_net/cph8066/a2008518234223.swf" />
<param name="Quality" value="high"/>
<param name="wmode" value="transparent"/><embed src="http://www.blogjava.net/images/blogjava_net/cph8066/a2008518234223.swf" width="200" height="200"  quality="high" wmode="transparent"     type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" ></embed>
</object><br />
<br />
好了，这篇教程就到些结束，上面介绍的都是Skin的比较简单快捷的用法，不过灵活性就不是很大，但也是皮肤技术的最基础的，大家也可以再扩展一下其它用法等等的，在下篇文章，也就是Flex皮肤系列文章的（二）中，我会介绍一下用程序代码来编写皮肤，这就是不依赖于外部的资源文件，直接用AS3代码用Graphics来自已画皮肤。下篇将会用到AS3的Draw API方面的知识，请大家做好准备。<br />
<br />
在此再次向我们的灾区战士们给与崇高的敬意！<br />
<img src ="http://www.blogjava.net/cph8066/aggbug/218419.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/cph8066/" target="_blank">姜大叔</a> 2008-07-29 14:37 <a href="http://www.blogjava.net/cph8066/archive/2008/07/29/218419.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>写了一个Flash效果！</title><link>http://www.blogjava.net/cph8066/archive/2008/07/29/218417.html</link><dc:creator>姜大叔</dc:creator><author>姜大叔</author><pubDate>Tue, 29 Jul 2008 06:33:00 GMT</pubDate><guid>http://www.blogjava.net/cph8066/archive/2008/07/29/218417.html</guid><wfw:comment>http://www.blogjava.net/cph8066/comments/218417.html</wfw:comment><comments>http://www.blogjava.net/cph8066/archive/2008/07/29/218417.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/cph8066/comments/commentRss/218417.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/cph8066/services/trackbacks/218417.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 好久没有发表文章了，这天写了一个Flash的一个动画菜单的效果，在之前看到一个站的一个菜单效果挺不错，就试着自已也用纯AS3写一个出来试试。看了一下研究了一个算法，自已也写了个出来，写得比较粗糙，所以运行时可能还会有点小问题，有空要再优化一下算法才行。有点像 Apple 的菜单效果。原本是计划用图片的，不过后...&nbsp;&nbsp;<a href='http://www.blogjava.net/cph8066/archive/2008/07/29/218417.html'>阅读全文</a><img src ="http://www.blogjava.net/cph8066/aggbug/218417.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/cph8066/" target="_blank">姜大叔</a> 2008-07-29 14:33 <a href="http://www.blogjava.net/cph8066/archive/2008/07/29/218417.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>自已做的一个Flex 3D效果！</title><link>http://www.blogjava.net/cph8066/archive/2008/07/29/218415.html</link><dc:creator>姜大叔</dc:creator><author>姜大叔</author><pubDate>Tue, 29 Jul 2008 06:31:00 GMT</pubDate><guid>http://www.blogjava.net/cph8066/archive/2008/07/29/218415.html</guid><wfw:comment>http://www.blogjava.net/cph8066/comments/218415.html</wfw:comment><comments>http://www.blogjava.net/cph8066/archive/2008/07/29/218415.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/cph8066/comments/commentRss/218415.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/cph8066/services/trackbacks/218415.html</trackback:ping><description><![CDATA[用PV3D做的一个Flex效果，有时间会整理一下代码与文档贴出来！<br />
以下是效果：<br />
<object xcodebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab" height="520" width="650"  classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" >
<param name="Movie" value="/images/blogjava_net/cph8066/l2008124195022.swf" />
<param name="Quality" value="high"/>
<param name="wmode" value="transparent"/><embed src="http://www.blogjava.net/images/blogjava_net/cph8066/l2008124195022.swf" width="650" height="520"  quality="high" wmode="transparent"     type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" ></embed>
</object>
<img src ="http://www.blogjava.net/cph8066/aggbug/218415.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/cph8066/" target="_blank">姜大叔</a> 2008-07-29 14:31 <a href="http://www.blogjava.net/cph8066/archive/2008/07/29/218415.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Flex的动画效果与变换！（三）（完）</title><link>http://www.blogjava.net/cph8066/archive/2008/07/29/218410.html</link><dc:creator>姜大叔</dc:creator><author>姜大叔</author><pubDate>Tue, 29 Jul 2008 06:28:00 GMT</pubDate><guid>http://www.blogjava.net/cph8066/archive/2008/07/29/218410.html</guid><wfw:comment>http://www.blogjava.net/cph8066/comments/218410.html</wfw:comment><comments>http://www.blogjava.net/cph8066/archive/2008/07/29/218410.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/cph8066/comments/commentRss/218410.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/cph8066/services/trackbacks/218410.html</trackback:ping><description><![CDATA[这篇文章是Flex动画效果变换的最后一编了，这篇将会讲述Flex中的&#8220;变面&#8221;（我自已的理解）技术，即是Transitions！<br />
<br />
如果看过Flex SDK里面的自带的例子程序，有一个叫&#8220;Flex Store&#8221;的应用，在里面的手机列表中看某一个手机的详细时，就是这种效果，不多说，这篇会比较简单，先看看效果：<br />
<object xcodebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab" height="500" width="600"  classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" >
<param name="Movie" value="/images/blogjava_net/cph8066/5200812115394.swf" />
<param name="Quality" value="high"/>
<param name="wmode" value="transparent"/><embed src="http://www.blogjava.net/images/blogjava_net/cph8066/5200812115394.swf" width="600" height="500"  quality="high" wmode="transparent"     type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" ></embed>
</object><br />
<br />
看到了效果了吧，这种的变换不难实现，再来看看代码再解析：<br />
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #008080;">&nbsp;1</span>&nbsp;<span style="color: #0000ff;">&lt;?</span><span style="color: #ff00ff;">xml&nbsp;version="1.0"&nbsp;encoding="utf-8"</span><span style="color: #0000ff;">?&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">&nbsp;2</span>&nbsp;<span style="color: #0000ff;">&lt;</span><span style="color: #800000;">mx:Application&nbsp;</span><span style="color: #ff0000;">xmlns:mx</span><span style="color: #0000ff;">="http://www.adobe.com/2006/mxml"</span><span style="color: #ff0000;">&nbsp;layout</span><span style="color: #0000ff;">="absolute"</span><span style="color: #ff0000;">&nbsp;width</span><span style="color: #0000ff;">="695"</span><span style="color: #ff0000;">&nbsp;height</span><span style="color: #0000ff;">="555"</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">&nbsp;3</span>&nbsp;<span style="color: #0000ff;">&lt;</span><span style="color: #800000;">mx:states</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">&nbsp;4</span>&nbsp;<span style="color: #0000ff;">&lt;</span><span style="color: #800000;">mx:State&nbsp;</span><span style="color: #ff0000;">name</span><span style="color: #0000ff;">="A"</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">&nbsp;5</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">mx:SetProperty&nbsp;</span><span style="color: #ff0000;">target</span><span style="color: #0000ff;">="{windowA}"</span><span style="color: #ff0000;">&nbsp;name</span><span style="color: #0000ff;">="width"</span><span style="color: #ff0000;">&nbsp;value</span><span style="color: #0000ff;">="500"</span><span style="color: #0000ff;">/&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">&nbsp;6</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">mx:SetProperty&nbsp;</span><span style="color: #ff0000;">target</span><span style="color: #0000ff;">="{windowA}"</span><span style="color: #ff0000;">&nbsp;name</span><span style="color: #0000ff;">="height"</span><span style="color: #ff0000;">&nbsp;value</span><span style="color: #0000ff;">="300"</span><span style="color: #0000ff;">/&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">&nbsp;7</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">mx:SetProperty&nbsp;</span><span style="color: #ff0000;">target</span><span style="color: #0000ff;">="{windowC}"</span><span style="color: #ff0000;">&nbsp;name</span><span style="color: #0000ff;">="width"</span><span style="color: #ff0000;">&nbsp;value</span><span style="color: #0000ff;">="150"</span><span style="color: #0000ff;">/&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">&nbsp;8</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">mx:SetProperty&nbsp;</span><span style="color: #ff0000;">target</span><span style="color: #0000ff;">="{windowC}"</span><span style="color: #ff0000;">&nbsp;name</span><span style="color: #0000ff;">="height"</span><span style="color: #ff0000;">&nbsp;value</span><span style="color: #0000ff;">="150"</span><span style="color: #0000ff;">/&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">&nbsp;9</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">mx:SetProperty&nbsp;</span><span style="color: #ff0000;">target</span><span style="color: #0000ff;">="{windowC}"</span><span style="color: #ff0000;">&nbsp;name</span><span style="color: #0000ff;">="y"</span><span style="color: #ff0000;">&nbsp;value</span><span style="color: #0000ff;">="333"</span><span style="color: #0000ff;">/&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">10</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">mx:SetProperty&nbsp;</span><span style="color: #ff0000;">target</span><span style="color: #0000ff;">="{windowD}"</span><span style="color: #ff0000;">&nbsp;name</span><span style="color: #0000ff;">="x"</span><span style="color: #ff0000;">&nbsp;value</span><span style="color: #0000ff;">="373"</span><span style="color: #0000ff;">/&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">11</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">mx:SetProperty&nbsp;</span><span style="color: #ff0000;">target</span><span style="color: #0000ff;">="{windowD}"</span><span style="color: #ff0000;">&nbsp;name</span><span style="color: #0000ff;">="width"</span><span style="color: #ff0000;">&nbsp;value</span><span style="color: #0000ff;">="150"</span><span style="color: #0000ff;">/&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">12</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">mx:SetProperty&nbsp;</span><span style="color: #ff0000;">target</span><span style="color: #0000ff;">="{windowD}"</span><span style="color: #ff0000;">&nbsp;name</span><span style="color: #0000ff;">="height"</span><span style="color: #ff0000;">&nbsp;value</span><span style="color: #0000ff;">="150"</span><span style="color: #0000ff;">/&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">13</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">mx:SetProperty&nbsp;</span><span style="color: #ff0000;">target</span><span style="color: #0000ff;">="{windowD}"</span><span style="color: #ff0000;">&nbsp;name</span><span style="color: #0000ff;">="y"</span><span style="color: #ff0000;">&nbsp;value</span><span style="color: #0000ff;">="333"</span><span style="color: #0000ff;">/&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">14</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">mx:SetProperty&nbsp;</span><span style="color: #ff0000;">target</span><span style="color: #0000ff;">="{windowB}"</span><span style="color: #ff0000;">&nbsp;name</span><span style="color: #0000ff;">="x"</span><span style="color: #ff0000;">&nbsp;value</span><span style="color: #0000ff;">="23"</span><span style="color: #0000ff;">/&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">15</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">mx:SetProperty&nbsp;</span><span style="color: #ff0000;">target</span><span style="color: #0000ff;">="{windowB}"</span><span style="color: #ff0000;">&nbsp;name</span><span style="color: #0000ff;">="y"</span><span style="color: #ff0000;">&nbsp;value</span><span style="color: #0000ff;">="333"</span><span style="color: #0000ff;">/&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">16</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">mx:SetProperty&nbsp;</span><span style="color: #ff0000;">target</span><span style="color: #0000ff;">="{windowB}"</span><span style="color: #ff0000;">&nbsp;name</span><span style="color: #0000ff;">="width"</span><span style="color: #ff0000;">&nbsp;value</span><span style="color: #0000ff;">="150"</span><span style="color: #0000ff;">/&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">17</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">mx:SetProperty&nbsp;</span><span style="color: #ff0000;">target</span><span style="color: #0000ff;">="{windowB}"</span><span style="color: #ff0000;">&nbsp;name</span><span style="color: #0000ff;">="height"</span><span style="color: #ff0000;">&nbsp;value</span><span style="color: #0000ff;">="150"</span><span style="color: #0000ff;">/&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">18</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">mx:SetProperty&nbsp;</span><span style="color: #ff0000;">target</span><span style="color: #0000ff;">="{windowC}"</span><span style="color: #ff0000;">&nbsp;name</span><span style="color: #0000ff;">="x"</span><span style="color: #ff0000;">&nbsp;value</span><span style="color: #0000ff;">="200"</span><span style="color: #0000ff;">/&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">19</span>&nbsp;<span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">mx:State</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">20</span>&nbsp;<span style="color: #0000ff;">&lt;</span><span style="color: #800000;">mx:State&nbsp;</span><span style="color: #ff0000;">name</span><span style="color: #0000ff;">="B"</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">21</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">mx:SetProperty&nbsp;</span><span style="color: #ff0000;">target</span><span style="color: #0000ff;">="{windowD}"</span><span style="color: #ff0000;">&nbsp;name</span><span style="color: #0000ff;">="width"</span><span style="color: #ff0000;">&nbsp;value</span><span style="color: #0000ff;">="150"</span><span style="color: #0000ff;">/&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">22</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">mx:SetProperty&nbsp;</span><span style="color: #ff0000;">target</span><span style="color: #0000ff;">="{windowD}"</span><span style="color: #ff0000;">&nbsp;name</span><span style="color: #0000ff;">="height"</span><span style="color: #ff0000;">&nbsp;value</span><span style="color: #0000ff;">="150"</span><span style="color: #0000ff;">/&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">23</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">mx:SetProperty&nbsp;</span><span style="color: #ff0000;">target</span><span style="color: #0000ff;">="{windowC}"</span><span style="color: #ff0000;">&nbsp;name</span><span style="color: #0000ff;">="width"</span><span style="color: #ff0000;">&nbsp;value</span><span style="color: #0000ff;">="150"</span><span style="color: #0000ff;">/&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">24</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">mx:SetProperty&nbsp;</span><span style="color: #ff0000;">target</span><span style="color: #0000ff;">="{windowC}"</span><span style="color: #ff0000;">&nbsp;name</span><span style="color: #0000ff;">="height"</span><span style="color: #ff0000;">&nbsp;value</span><span style="color: #0000ff;">="150"</span><span style="color: #0000ff;">/&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">25</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">mx:SetProperty&nbsp;</span><span style="color: #ff0000;">target</span><span style="color: #0000ff;">="{windowA}"</span><span style="color: #ff0000;">&nbsp;name</span><span style="color: #0000ff;">="width"</span><span style="color: #ff0000;">&nbsp;value</span><span style="color: #0000ff;">="150"</span><span style="color: #0000ff;">/&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">26</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">mx:SetProperty&nbsp;</span><span style="color: #ff0000;">target</span><span style="color: #0000ff;">="{windowA}"</span><span style="color: #ff0000;">&nbsp;name</span><span style="color: #0000ff;">="height"</span><span style="color: #ff0000;">&nbsp;value</span><span style="color: #0000ff;">="150"</span><span style="color: #0000ff;">/&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">27</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">mx:SetProperty&nbsp;</span><span style="color: #ff0000;">target</span><span style="color: #0000ff;">="{windowB}"</span><span style="color: #ff0000;">&nbsp;name</span><span style="color: #0000ff;">="width"</span><span style="color: #ff0000;">&nbsp;value</span><span style="color: #0000ff;">="500"</span><span style="color: #0000ff;">/&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">28</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">mx:SetProperty&nbsp;</span><span style="color: #ff0000;">target</span><span style="color: #0000ff;">="{windowB}"</span><span style="color: #ff0000;">&nbsp;name</span><span style="color: #0000ff;">="height"</span><span style="color: #ff0000;">&nbsp;value</span><span style="color: #0000ff;">="300"</span><span style="color: #0000ff;">/&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">29</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">mx:SetProperty&nbsp;</span><span style="color: #ff0000;">target</span><span style="color: #0000ff;">="{windowA}"</span><span style="color: #ff0000;">&nbsp;name</span><span style="color: #0000ff;">="y"</span><span style="color: #ff0000;">&nbsp;value</span><span style="color: #0000ff;">="333"</span><span style="color: #0000ff;">/&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">30</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">mx:SetProperty&nbsp;</span><span style="color: #ff0000;">target</span><span style="color: #0000ff;">="{windowC}"</span><span style="color: #ff0000;">&nbsp;name</span><span style="color: #0000ff;">="x"</span><span style="color: #ff0000;">&nbsp;value</span><span style="color: #0000ff;">="200"</span><span style="color: #0000ff;">/&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">31</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">mx:SetProperty&nbsp;</span><span style="color: #ff0000;">target</span><span style="color: #0000ff;">="{windowC}"</span><span style="color: #ff0000;">&nbsp;name</span><span style="color: #0000ff;">="y"</span><span style="color: #ff0000;">&nbsp;value</span><span style="color: #0000ff;">="333"</span><span style="color: #0000ff;">/&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">32</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">mx:SetProperty&nbsp;</span><span style="color: #ff0000;">target</span><span style="color: #0000ff;">="{windowB}"</span><span style="color: #ff0000;">&nbsp;name</span><span style="color: #0000ff;">="x"</span><span style="color: #ff0000;">&nbsp;value</span><span style="color: #0000ff;">="23"</span><span style="color: #0000ff;">/&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">33</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">mx:SetProperty&nbsp;</span><span style="color: #ff0000;">target</span><span style="color: #0000ff;">="{windowD}"</span><span style="color: #ff0000;">&nbsp;name</span><span style="color: #0000ff;">="x"</span><span style="color: #ff0000;">&nbsp;value</span><span style="color: #0000ff;">="373"</span><span style="color: #0000ff;">/&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">34</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">mx:SetProperty&nbsp;</span><span style="color: #ff0000;">target</span><span style="color: #0000ff;">="{windowD}"</span><span style="color: #ff0000;">&nbsp;name</span><span style="color: #0000ff;">="y"</span><span style="color: #ff0000;">&nbsp;value</span><span style="color: #0000ff;">="333"</span><span style="color: #0000ff;">/&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">35</span>&nbsp;<span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">mx:State</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">36</span>&nbsp;<span style="color: #0000ff;">&lt;</span><span style="color: #800000;">mx:State&nbsp;</span><span style="color: #ff0000;">name</span><span style="color: #0000ff;">="C"</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">37</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">mx:SetProperty&nbsp;</span><span style="color: #ff0000;">target</span><span style="color: #0000ff;">="{windowD}"</span><span style="color: #ff0000;">&nbsp;name</span><span style="color: #0000ff;">="width"</span><span style="color: #ff0000;">&nbsp;value</span><span style="color: #0000ff;">="150"</span><span style="color: #0000ff;">/&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">38</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">mx:SetProperty&nbsp;</span><span style="color: #ff0000;">target</span><span style="color: #0000ff;">="{windowD}"</span><span style="color: #ff0000;">&nbsp;name</span><span style="color: #0000ff;">="height"</span><span style="color: #ff0000;">&nbsp;value</span><span style="color: #0000ff;">="150"</span><span style="color: #0000ff;">/&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">39</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">mx:SetProperty&nbsp;</span><span style="color: #ff0000;">target</span><span style="color: #0000ff;">="{windowB}"</span><span style="color: #ff0000;">&nbsp;name</span><span style="color: #0000ff;">="width"</span><span style="color: #ff0000;">&nbsp;value</span><span style="color: #0000ff;">="150"</span><span style="color: #0000ff;">/&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">40</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">mx:SetProperty&nbsp;</span><span style="color: #ff0000;">target</span><span style="color: #0000ff;">="{windowB}"</span><span style="color: #ff0000;">&nbsp;name</span><span style="color: #0000ff;">="height"</span><span style="color: #ff0000;">&nbsp;value</span><span style="color: #0000ff;">="150"</span><span style="color: #0000ff;">/&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">41</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">mx:SetProperty&nbsp;</span><span style="color: #ff0000;">target</span><span style="color: #0000ff;">="{windowA}"</span><span style="color: #ff0000;">&nbsp;name</span><span style="color: #0000ff;">="width"</span><span style="color: #ff0000;">&nbsp;value</span><span style="color: #0000ff;">="150"</span><span style="color: #0000ff;">/&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">42</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">mx:SetProperty&nbsp;</span><span style="color: #ff0000;">target</span><span style="color: #0000ff;">="{windowA}"</span><span style="color: #ff0000;">&nbsp;name</span><span style="color: #0000ff;">="height"</span><span style="color: #ff0000;">&nbsp;value</span><span style="color: #0000ff;">="150"</span><span style="color: #0000ff;">/&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">43</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">mx:SetProperty&nbsp;</span><span style="color: #ff0000;">target</span><span style="color: #0000ff;">="{windowC}"</span><span style="color: #ff0000;">&nbsp;name</span><span style="color: #0000ff;">="width"</span><span style="color: #ff0000;">&nbsp;value</span><span style="color: #0000ff;">="500"</span><span style="color: #0000ff;">/&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">44</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">mx:SetProperty&nbsp;</span><span style="color: #ff0000;">target</span><span style="color: #0000ff;">="{windowC}"</span><span style="color: #ff0000;">&nbsp;name</span><span style="color: #0000ff;">="height"</span><span style="color: #ff0000;">&nbsp;value</span><span style="color: #0000ff;">="300"</span><span style="color: #0000ff;">/&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">45</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">mx:SetProperty&nbsp;</span><span style="color: #ff0000;">target</span><span style="color: #0000ff;">="{windowA}"</span><span style="color: #ff0000;">&nbsp;name</span><span style="color: #0000ff;">="y"</span><span style="color: #ff0000;">&nbsp;value</span><span style="color: #0000ff;">="333"</span><span style="color: #0000ff;">/&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">46</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">mx:SetProperty&nbsp;</span><span style="color: #ff0000;">target</span><span style="color: #0000ff;">="{windowB}"</span><span style="color: #ff0000;">&nbsp;name</span><span style="color: #0000ff;">="x"</span><span style="color: #ff0000;">&nbsp;value</span><span style="color: #0000ff;">="200"</span><span style="color: #0000ff;">/&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">47</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">mx:SetProperty&nbsp;</span><span style="color: #ff0000;">target</span><span style="color: #0000ff;">="{windowB}"</span><span style="color: #ff0000;">&nbsp;name</span><span style="color: #0000ff;">="y"</span><span style="color: #ff0000;">&nbsp;value</span><span style="color: #0000ff;">="333"</span><span style="color: #0000ff;">/&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">48</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">mx:SetProperty&nbsp;</span><span style="color: #ff0000;">target</span><span style="color: #0000ff;">="{windowC}"</span><span style="color: #ff0000;">&nbsp;name</span><span style="color: #0000ff;">="x"</span><span style="color: #ff0000;">&nbsp;value</span><span style="color: #0000ff;">="23"</span><span style="color: #0000ff;">/&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">49</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">mx:SetProperty&nbsp;</span><span style="color: #ff0000;">target</span><span style="color: #0000ff;">="{windowC}"</span><span style="color: #ff0000;">&nbsp;name</span><span style="color: #0000ff;">="y"</span><span style="color: #ff0000;">&nbsp;value</span><span style="color: #0000ff;">="19"</span><span style="color: #0000ff;">/&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">50</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">mx:SetProperty&nbsp;</span><span style="color: #ff0000;">target</span><span style="color: #0000ff;">="{windowD}"</span><span style="color: #ff0000;">&nbsp;name</span><span style="color: #0000ff;">="x"</span><span style="color: #ff0000;">&nbsp;value</span><span style="color: #0000ff;">="373"</span><span style="color: #0000ff;">/&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">51</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">mx:SetProperty&nbsp;</span><span style="color: #ff0000;">target</span><span style="color: #0000ff;">="{windowD}"</span><span style="color: #ff0000;">&nbsp;name</span><span style="color: #0000ff;">="y"</span><span style="color: #ff0000;">&nbsp;value</span><span style="color: #0000ff;">="333"</span><span style="color: #0000ff;">/&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">52</span>&nbsp;<span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">mx:State</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">53</span>&nbsp;<span style="color: #0000ff;">&lt;</span><span style="color: #800000;">mx:State&nbsp;</span><span style="color: #ff0000;">name</span><span style="color: #0000ff;">="D"</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">54</span>&nbsp;<span style="color: #0000ff;">&lt;</span><span style="color: #800000;">mx:SetProperty&nbsp;</span><span style="color: #ff0000;">target</span><span style="color: #0000ff;">="{windowC}"</span><span style="color: #ff0000;">&nbsp;name</span><span style="color: #0000ff;">="width"</span><span style="color: #ff0000;">&nbsp;value</span><span style="color: #0000ff;">="150"</span><span style="color: #0000ff;">/&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">55</span>&nbsp;<span style="color: #0000ff;">&lt;</span><span style="color: #800000;">mx:SetProperty&nbsp;</span><span style="color: #ff0000;">target</span><span style="color: #0000ff;">="{windowC}"</span><span style="color: #ff0000;">&nbsp;name</span><span style="color: #0000ff;">="height"</span><span style="color: #ff0000;">&nbsp;value</span><span style="color: #0000ff;">="150"</span><span style="color: #0000ff;">/&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">56</span>&nbsp;<span style="color: #0000ff;">&lt;</span><span style="color: #800000;">mx:SetProperty&nbsp;</span><span style="color: #ff0000;">target</span><span style="color: #0000ff;">="{windowB}"</span><span style="color: #ff0000;">&nbsp;name</span><span style="color: #0000ff;">="width"</span><span style="color: #ff0000;">&nbsp;value</span><span style="color: #0000ff;">="150"</span><span style="color: #0000ff;">/&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">57</span>&nbsp;<span style="color: #0000ff;">&lt;</span><span style="color: #800000;">mx:SetProperty&nbsp;</span><span style="color: #ff0000;">target</span><span style="color: #0000ff;">="{windowB}"</span><span style="color: #ff0000;">&nbsp;name</span><span style="color: #0000ff;">="height"</span><span style="color: #ff0000;">&nbsp;value</span><span style="color: #0000ff;">="150"</span><span style="color: #0000ff;">/&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">58</span>&nbsp;<span style="color: #0000ff;">&lt;</span><span style="color: #800000;">mx:SetProperty&nbsp;</span><span style="color: #ff0000;">target</span><span style="color: #0000ff;">="{windowA}"</span><span style="color: #ff0000;">&nbsp;name</span><span style="color: #0000ff;">="width"</span><span style="color: #ff0000;">&nbsp;value</span><span style="color: #0000ff;">="150"</span><span style="color: #0000ff;">/&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">59</span>&nbsp;<span style="color: #0000ff;">&lt;</span><span style="color: #800000;">mx:SetProperty&nbsp;</span><span style="color: #ff0000;">target</span><span style="color: #0000ff;">="{windowA}"</span><span style="color: #ff0000;">&nbsp;name</span><span style="color: #0000ff;">="height"</span><span style="color: #ff0000;">&nbsp;value</span><span style="color: #0000ff;">="150"</span><span style="color: #0000ff;">/&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">60</span>&nbsp;<span style="color: #0000ff;">&lt;</span><span style="color: #800000;">mx:SetProperty&nbsp;</span><span style="color: #ff0000;">target</span><span style="color: #0000ff;">="{windowD}"</span><span style="color: #ff0000;">&nbsp;name</span><span style="color: #0000ff;">="width"</span><span style="color: #ff0000;">&nbsp;value</span><span style="color: #0000ff;">="500"</span><span style="color: #0000ff;">/&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">61</span>&nbsp;<span style="color: #0000ff;">&lt;</span><span style="color: #800000;">mx:SetProperty&nbsp;</span><span style="color: #ff0000;">target</span><span style="color: #0000ff;">="{windowD}"</span><span style="color: #ff0000;">&nbsp;name</span><span style="color: #0000ff;">="height"</span><span style="color: #ff0000;">&nbsp;value</span><span style="color: #0000ff;">="300"</span><span style="color: #0000ff;">/&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">62</span>&nbsp;<span style="color: #0000ff;">&lt;</span><span style="color: #800000;">mx:SetProperty&nbsp;</span><span style="color: #ff0000;">target</span><span style="color: #0000ff;">="{windowA}"</span><span style="color: #ff0000;">&nbsp;name</span><span style="color: #0000ff;">="y"</span><span style="color: #ff0000;">&nbsp;value</span><span style="color: #0000ff;">="333"</span><span style="color: #0000ff;">/&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">63</span>&nbsp;<span style="color: #0000ff;">&lt;</span><span style="color: #800000;">mx:SetProperty&nbsp;</span><span style="color: #ff0000;">target</span><span style="color: #0000ff;">="{windowB}"</span><span style="color: #ff0000;">&nbsp;name</span><span style="color: #0000ff;">="x"</span><span style="color: #ff0000;">&nbsp;value</span><span style="color: #0000ff;">="200"</span><span style="color: #0000ff;">/&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">64</span>&nbsp;<span style="color: #0000ff;">&lt;</span><span style="color: #800000;">mx:SetProperty&nbsp;</span><span style="color: #ff0000;">target</span><span style="color: #0000ff;">="{windowB}"</span><span style="color: #ff0000;">&nbsp;name</span><span style="color: #0000ff;">="y"</span><span style="color: #ff0000;">&nbsp;value</span><span style="color: #0000ff;">="333"</span><span style="color: #0000ff;">/&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">65</span>&nbsp;<span style="color: #0000ff;">&lt;</span><span style="color: #800000;">mx:SetProperty&nbsp;</span><span style="color: #ff0000;">target</span><span style="color: #0000ff;">="{windowD}"</span><span style="color: #ff0000;">&nbsp;name</span><span style="color: #0000ff;">="x"</span><span style="color: #ff0000;">&nbsp;value</span><span style="color: #0000ff;">="23"</span><span style="color: #0000ff;">/&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">66</span>&nbsp;<span style="color: #0000ff;">&lt;</span><span style="color: #800000;">mx:SetProperty&nbsp;</span><span style="color: #ff0000;">target</span><span style="color: #0000ff;">="{windowD}"</span><span style="color: #ff0000;">&nbsp;name</span><span style="color: #0000ff;">="y"</span><span style="color: #ff0000;">&nbsp;value</span><span style="color: #0000ff;">="19"</span><span style="color: #0000ff;">/&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">67</span>&nbsp;<span style="color: #0000ff;">&lt;</span><span style="color: #800000;">mx:SetProperty&nbsp;</span><span style="color: #ff0000;">target</span><span style="color: #0000ff;">="{windowC}"</span><span style="color: #ff0000;">&nbsp;name</span><span style="color: #0000ff;">="x"</span><span style="color: #ff0000;">&nbsp;value</span><span style="color: #0000ff;">="373"</span><span style="color: #0000ff;">/&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">68</span>&nbsp;<span style="color: #0000ff;">&lt;</span><span style="color: #800000;">mx:SetProperty&nbsp;</span><span style="color: #ff0000;">target</span><span style="color: #0000ff;">="{windowC}"</span><span style="color: #ff0000;">&nbsp;name</span><span style="color: #0000ff;">="y"</span><span style="color: #ff0000;">&nbsp;value</span><span style="color: #0000ff;">="333"</span><span style="color: #0000ff;">/&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">69</span>&nbsp;<span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">mx:State</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">70</span>&nbsp;<span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">mx:states</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">71</span>&nbsp;<span style="color: #0000ff;">&lt;</span><span style="color: #800000;">mx:transitions</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">72</span>&nbsp;<span style="color: #0000ff;">&lt;</span><span style="color: #800000;">mx:Transition&nbsp;</span><span style="color: #ff0000;">fromState</span><span style="color: #0000ff;">="*"</span><span style="color: #ff0000;">&nbsp;toState</span><span style="color: #0000ff;">="*"</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">73</span>&nbsp;<span style="color: #0000ff;">&lt;</span><span style="color: #800000;">mx:Parallel&nbsp;</span><span style="color: #ff0000;">targets</span><span style="color: #0000ff;">="{[windowA,&nbsp;windowB,&nbsp;windowC,&nbsp;windowD]}"</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">74</span>&nbsp;<span style="color: #0000ff;">&lt;</span><span style="color: #800000;">mx:Move&nbsp;</span><span style="color: #0000ff;">/&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">75</span>&nbsp;<span style="color: #0000ff;">&lt;</span><span style="color: #800000;">mx:Resize&nbsp;</span><span style="color: #0000ff;">/&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">76</span>&nbsp;<span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">mx:Parallel</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">77</span>&nbsp;<span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">mx:Transition</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">78</span>&nbsp;<span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">mx:transitions</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">79</span>&nbsp;<span style="color: #0000ff;">&lt;</span><span style="color: #800000;">mx:TitleWindow&nbsp;</span><span style="color: #ff0000;">x</span><span style="color: #0000ff;">="23"</span><span style="color: #ff0000;">&nbsp;y</span><span style="color: #0000ff;">="19"</span><span style="color: #ff0000;">&nbsp;width</span><span style="color: #0000ff;">="250"</span><span style="color: #ff0000;">&nbsp;height</span><span style="color: #0000ff;">="200"</span><span style="color: #ff0000;">&nbsp;layout</span><span style="color: #0000ff;">="absolute"</span><span style="color: #ff0000;">&nbsp;title</span><span style="color: #0000ff;">="A"</span><span style="color: #ff0000;">&nbsp;id</span><span style="color: #0000ff;">="windowA"</span><span style="color: #ff0000;">&nbsp;click</span><span style="color: #0000ff;">="currentState='A'"</span><span style="color: #ff0000;">&nbsp;</span><span style="color: #0000ff;">/&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">80</span>&nbsp;<span style="color: #0000ff;">&lt;</span><span style="color: #800000;">mx:TitleWindow&nbsp;</span><span style="color: #ff0000;">x</span><span style="color: #0000ff;">="309"</span><span style="color: #ff0000;">&nbsp;y</span><span style="color: #0000ff;">="19"</span><span style="color: #ff0000;">&nbsp;width</span><span style="color: #0000ff;">="250"</span><span style="color: #ff0000;">&nbsp;height</span><span style="color: #0000ff;">="200"</span><span style="color: #ff0000;">&nbsp;layout</span><span style="color: #0000ff;">="absolute"</span><span style="color: #ff0000;">&nbsp;title</span><span style="color: #0000ff;">="B"</span><span style="color: #ff0000;">&nbsp;id</span><span style="color: #0000ff;">="windowB"</span><span style="color: #ff0000;">&nbsp;click</span><span style="color: #0000ff;">="currentState='B'"</span><span style="color: #ff0000;">&nbsp;</span><span style="color: #0000ff;">/&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">81</span>&nbsp;<span style="color: #0000ff;">&lt;</span><span style="color: #800000;">mx:TitleWindow&nbsp;</span><span style="color: #ff0000;">x</span><span style="color: #0000ff;">="23"</span><span style="color: #ff0000;">&nbsp;y</span><span style="color: #0000ff;">="260"</span><span style="color: #ff0000;">&nbsp;width</span><span style="color: #0000ff;">="250"</span><span style="color: #ff0000;">&nbsp;height</span><span style="color: #0000ff;">="200"</span><span style="color: #ff0000;">&nbsp;layout</span><span style="color: #0000ff;">="absolute"</span><span style="color: #ff0000;">&nbsp;title</span><span style="color: #0000ff;">="C"</span><span style="color: #ff0000;">&nbsp;id</span><span style="color: #0000ff;">="windowC"</span><span style="color: #ff0000;">&nbsp;click</span><span style="color: #0000ff;">="currentState='C'"</span><span style="color: #ff0000;">&nbsp;</span><span style="color: #0000ff;">/&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">82</span>&nbsp;<span style="color: #0000ff;">&lt;</span><span style="color: #800000;">mx:TitleWindow&nbsp;</span><span style="color: #ff0000;">x</span><span style="color: #0000ff;">="309"</span><span style="color: #ff0000;">&nbsp;y</span><span style="color: #0000ff;">="260"</span><span style="color: #ff0000;">&nbsp;width</span><span style="color: #0000ff;">="250"</span><span style="color: #ff0000;">&nbsp;height</span><span style="color: #0000ff;">="200"</span><span style="color: #ff0000;">&nbsp;layout</span><span style="color: #0000ff;">="absolute"</span><span style="color: #ff0000;">&nbsp;title</span><span style="color: #0000ff;">="D"</span><span style="color: #ff0000;">&nbsp;id</span><span style="color: #0000ff;">="windowD"</span><span style="color: #ff0000;">&nbsp;click</span><span style="color: #0000ff;">="currentState='D'"</span><span style="color: #ff0000;">&nbsp;</span><span style="color: #0000ff;">/&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">83</span>&nbsp;<span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">mx:Application</span><span style="color: #0000ff;">&gt;</span></div>
<br />
<br />
代码会比较多，我们先看看&lt;mx:states&gt;标签，它是一个集合，就是你的程序有多少个状态，什么是状态呢？我自已理解就即是有多少个&#8220;面谱&#8221;，即是现在程序里面有四个显示界面状态，所以里面有四个&lt;mx:State&gt;标签，每个&lt;mx:State&gt;状态都需要有一个名字name属性，以区分是哪个界面状态，在每个状态里面都有很多&lt;mx:SetProperty&gt;的标签，看英文都知道了，该标签用于设置这个状态下的所有界面元素的属性（组件的属性），因为每个界面状态中各个组件的大小布局都不同，所以在状态标签里就要预先设置好该状态下的组件的位置与大小，那个target="{windowC}"属性就是设置你要设置的哪个组件的名字拉，name="height"就是你要设置的属性value="333"就是你要设置该属性的值，我们细心看看的话，可能会发现，每个状态里面设置的属性，都是width,height,x,y这四个属性，我们看看上面的最终效果就知道无论切换哪个状态，组件间的变换来来去去都是移动位置与大小改变，就是说当你变换状态时，需要改动哪些属性的，就将它的目标值设置在&lt;mx:SetProperty&gt;标签里。再看看下面的&lt;mx:transitions&gt;标签，这个也是个集合，里面放着不同的变换方法&lt;mx:Transition&gt;，我们来看看变换标签的代码：<br />
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #008080;">1</span>&nbsp;<span style="color: #0000ff;">&lt;</span><span style="color: #800000;">mx:Transition&nbsp;</span><span style="color: #ff0000;">fromState</span><span style="color: #0000ff;">="*"</span><span style="color: #ff0000;">&nbsp;toState</span><span style="color: #0000ff;">="*"</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">2</span>&nbsp;<span style="color: #0000ff;">&lt;</span><span style="color: #800000;">mx:Parallel&nbsp;</span><span style="color: #ff0000;">targets</span><span style="color: #0000ff;">="{[windowA,&nbsp;windowB,&nbsp;windowC,&nbsp;windowD]}"</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">3</span>&nbsp;<span style="color: #0000ff;">&lt;</span><span style="color: #800000;">mx:Move&nbsp;</span><span style="color: #0000ff;">/&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">4</span>&nbsp;<span style="color: #0000ff;">&lt;</span><span style="color: #800000;">mx:Resize&nbsp;</span><span style="color: #0000ff;">/&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">5</span>&nbsp;<span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">mx:Parallel</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">6</span>&nbsp;<span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">mx:Transition</span><span style="color: #0000ff;">&gt;</span></div>
<br />
formState与toState属性是要设置该状态变换是怎样触发的，里面要填上状态的名字，&lt;mx:State name="C"&gt;&nbsp;&nbsp; C就是状态的名字，即是如果你formState="A",toState="C"的话，只有从A状态切换到C状态时，才会产生以上的变换动画效果，如果不附合该规则如A切换到B状态的话，则只会按状态的属性设置值来直接生成视图，而没有动画渐变效果了。如果填上&#8220;*&#8221;的话，就是无论是哪个状态切换到哪个，都会运行动画效果，至于变换期间用到哪种动画效果来进行渐变，就在它的下级标签里定义了，这里它用到了&lt;mx:Parallel&gt;并列播放移动与重整大小的动画效果，之前文章讲过，这里不多说了。基本上，一个变换就做好了，但我们还需要触发它，也就是去改变程序当前的显示状态：click="currentState='A'" 在每个组件的click事件里，改变程序的currentState值，就是改变程序的当前显示状态！之后动画效果就会触发了！<br />
<br />
迟点有时间，再做一个3D的动画效果，将会用到PV3D的框架，再整理一个代码与教程也贴出来跟大家分享吧，不过不知道大家对PV3D这个东东熟悉不，不熟悉的话，可能看得痛苦点，至于PV3D方面的教程，我也看看抽点时间写写吧！先谢过大家的支持！<br />
<img src ="http://www.blogjava.net/cph8066/aggbug/218410.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/cph8066/" target="_blank">姜大叔</a> 2008-07-29 14:28 <a href="http://www.blogjava.net/cph8066/archive/2008/07/29/218410.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Flex的动画效果与变换！（二）</title><link>http://www.blogjava.net/cph8066/archive/2008/07/29/218407.html</link><dc:creator>姜大叔</dc:creator><author>姜大叔</author><pubDate>Tue, 29 Jul 2008 06:24:00 GMT</pubDate><guid>http://www.blogjava.net/cph8066/archive/2008/07/29/218407.html</guid><wfw:comment>http://www.blogjava.net/cph8066/comments/218407.html</wfw:comment><comments>http://www.blogjava.net/cph8066/archive/2008/07/29/218407.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/cph8066/comments/commentRss/218407.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/cph8066/services/trackbacks/218407.html</trackback:ping><description><![CDATA[在上篇文章《Flex的动画效果与变换（一）》中讲到了使用Flex系统里面自带的一些动来效果的使用，但很多开发者都并不满足Flex里提供的简单的渐变大小，透明，移动，遮罩等的效果，如果是Flash的开发者的话，更不用说了，在Flash，多数人都是随意的制作一些动画效果等，而且形态多变。但是不是Flex里就不能实现呢？肯定不是，在Flex里也可以自定义动画效果，只不过就是没有Flash里面那么简单随意了。不过熟悉了之后，也会觉得在Flex里制作动画也不是什么难事，不多说了，转入正题！<br />
<br />
在这里我先介绍一下Flex里面的动画效果机制，在Flex里面要使用动画效果的话，先要创建一个效果标签，之后在组件里（如TextInput）写上效果触发器，但可能会有人问，如果程序里我就只定义一个移动效果<br />
&lt;mx:Move&gt;，之后我程序里面有5个组件，每个组件的动画效果都指向这个Move效果，那么它是不是组件一运行了效果后，组件二再触发效果，是不是组件一的效果会消失才会到组件二里播放？其它不是，虽然我们只定义了一个Move，但我们定义的只是Move效果的工厂，这里就用到了设计模式中的&#8220;工厂方法&#8221;模式，其实5个组件都可以同时运行效果，而5个效果都是不同的一个实例，彼此独立。所谓工厂方法模式，就好比是一家衣服制造工厂，A走进这家工厂说要一件衣服，工厂就制作一件合适A的Size的衣服，B进去，就会生产合适B的衣服，但A与B的衣服都是一样的。就好等于面向对象中的类与对象的关系一样。（我可能说多了-_-）<br />
效果运行的时候，其实运行的不是Move这个对象，而是MoveInstance这个对象，Move只是工厂，既然一个动画效果就主要分这两大部份，我们就先建造一个工厂吧！<br />
<br />
在Flex里面所有的效果的工厂都是继承自 mx.effects.Effect 这个类，我们也不能搞特殊，我们自定义的效果也要继承那个类，先看以下整个工厂类的代码：<br />
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #008080;">&nbsp;1</span>&nbsp;<span style="color: #0000ff;">package</span><span style="color: #000000;">&nbsp;com.jiangzone.flex.effects&nbsp;{<br />
</span><span style="color: #008080;">&nbsp;2</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">import</span><span style="color: #000000;">&nbsp;mx.effects.Effect;<br />
</span><span style="color: #008080;">&nbsp;3</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">import</span><span style="color: #000000;">&nbsp;mx.effects.EffectInstance;<br />
</span><span style="color: #008080;">&nbsp;4</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080;">&nbsp;5</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">public</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">class</span><span style="color: #000000;">&nbsp;MyEffect&nbsp;</span><span style="color: #0000ff;">extends</span><span style="color: #000000;">&nbsp;Effect&nbsp;{<br />
</span><span style="color: #008080;">&nbsp;6</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">private</span><span style="color: #000000;">&nbsp;var&nbsp;_color:Number&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0xFF0000</span><span style="color: #000000;">;<br />
</span><span style="color: #008080;">&nbsp;7</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080;">&nbsp;8</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">public</span><span style="color: #000000;">&nbsp;function&nbsp;set&nbsp;color(value:Number):</span><span style="color: #0000ff;">void</span><span style="color: #000000;">&nbsp;{<br />
</span><span style="color: #008080;">&nbsp;9</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;_color&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;value;<br />
</span><span style="color: #008080;">10</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
</span><span style="color: #008080;">11</span>&nbsp;<span style="color: #000000;"><br />
</span><span style="color: #008080;">12</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">public</span><span style="color: #000000;">&nbsp;function&nbsp;MyEffect(newTarget:Object&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">null</span><span style="color: #000000;">)&nbsp;{<br />
</span><span style="color: #008080;">13</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">super</span><span style="color: #000000;">(newTarget);<br />
</span><span style="color: #008080;">14</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;instanceClass&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;MyEffectInstance;<br />
</span><span style="color: #008080;">15</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
</span><span style="color: #008080;">16</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080;">17</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;override&nbsp;</span><span style="color: #0000ff;">public</span><span style="color: #000000;">&nbsp;function&nbsp;getAffectedProperties(&nbsp;):Array&nbsp;{<br />
</span><span style="color: #008080;">18</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;[];<br />
</span><span style="color: #008080;">19</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
</span><span style="color: #008080;">20</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080;">21</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;override&nbsp;</span><span style="color: #0000ff;">protected</span><span style="color: #000000;">&nbsp;function&nbsp;initInstance(instance:EffectInstance):</span><span style="color: #0000ff;">void</span><span style="color: #000000;">&nbsp;{<br />
</span><span style="color: #008080;">22</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">super</span><span style="color: #000000;">.initInstance(instance);<br />
</span><span style="color: #008080;">23</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MyEffectInstance(instance).color&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;_color;<br />
</span><span style="color: #008080;">24</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
</span><span style="color: #008080;">25</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;}<br />
</span><span style="color: #008080;">26</span>&nbsp;<span style="color: #000000;">}</span></div>
<br />
<br />
大家看看上面的代码，其中先看构造函数，构造函数要接收一个默认为空的Object对象<br />
public function MyEffect(newTarget:Object = null)<br />
之后在该构造函数里面调用父类的构造函数，并且将instanceClass这个属性设置为你的该效果的实例类，因为这个类是工厂类，所以要知道你这个工厂生产什么产品，即上面说的&#8220;衣服&#8221;，所以这里我们将其命名为MyEffectInstance，注意：在Flex中的所有效果实例类都是在工厂类后面加Instance，也不是一定，只是规范而已。还有注意，下面一会定义的实例类的类名一定要跟这里的一致。<br />
大家还会看到，上面的代码中，复写（override）了二个方法：getAffectedProperties( )与initInstance(instance:EffectInstance)<br />
这两个方法都是要复写的，先说说getAffectedProperties( )这个方法，这个方法是获取被改变的属性值，怎么说呢，比如说，你做的动画效果如果要用到组件对象的一些属性的话，就要返回这些属性的名字，如：你的效果是对组件做旋转的话，则：<br />
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #008080;">1</span>&nbsp;<span style="color: #000000;">override&nbsp;</span><span style="color: #0000ff;">public</span><span style="color: #000000;">&nbsp;function&nbsp;getAffectedProperties(&nbsp;):Array&nbsp;{<br />
</span><span style="color: #008080;">2</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;[</span><span style="color: #000000;">"</span><span style="color: #000000;">rotation</span><span style="color: #000000;">"</span><span style="color: #000000;">];<br />
</span><span style="color: #008080;">3</span>&nbsp;<span style="color: #000000;">}</span></div>
<br />
反正你做的效果需要对组件修改什么属性的话，都在这个方法里返回名字，修改多个属性的话就往数组里加就是了。<br />
后面就是这个方法了initInstance，该方法接收一个instance:EffectInstance参数，也就是效果实例类啦，因为每个效果实例类都要继承EffectInstance类，所以这个方法里的参数写的是父类，在里面要做其它的话，需要将 instance 转换为你相应的效果类。在这个方法里面，也是要调用父类的同名方法：super.initInstance(instance);<br />
基本上，一个工厂类就写好了，但这样只是最简单的写法，试想想，每个人穿衣服的Size不同，喜欢的颜色也不同，所以，是不是可以由用户来定义他们想要的效果的颜色等属性呢？当然，你对衣服有什么要求，都是向工厂提出的，没有人会对衣服说吧？所以，这些可设置的属性也是定义在工厂类里面，所以下面，我们为该衣服可定制颜色为例，在工厂类里面加入如下代码：<br />
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #008080;">1</span>&nbsp;<span style="color: #0000ff;">private</span><span style="color: #000000;">&nbsp;var&nbsp;_color:Number&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0xFF0000</span><span style="color: #000000;">;<br />
</span><span style="color: #008080;">2</span>&nbsp;<span style="color: #0000ff;">public</span><span style="color: #000000;">&nbsp;function&nbsp;set&nbsp;color(value:Number):</span><span style="color: #0000ff;">void</span><span style="color: #000000;">&nbsp;{<br />
</span><span style="color: #008080;">3</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;_color&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;value;<br />
</span><span style="color: #008080;">4</span>&nbsp;<span style="color: #000000;">}</span></div>
<br />
你想运行时的效果可以设置不同的颜色的话，就可以直接设置MyEffect的color属性，之后将这个属性传给效果实例类：<br />
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #008080;">1</span>&nbsp;<span style="color: #000000;">override&nbsp;</span><span style="color: #0000ff;">protected</span><span style="color: #000000;">&nbsp;function&nbsp;initInstance(instance:EffectInstance):</span><span style="color: #0000ff;">void</span><span style="color: #000000;">&nbsp;{<br />
</span><span style="color: #008080;">2</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">super</span><span style="color: #000000;">.initInstance(instance);<br />
</span><span style="color: #008080;">3</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MyEffectInstance(instance).color&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;_color;<br />
</span><span style="color: #008080;">4</span>&nbsp;<span style="color: #000000;">}</span></div>
<br />
这些对效果实例类的设置，都是要定在initInstance方法里了，你想对运行时的效果设置什么属性的话，都要先告诉工厂类，之后工厂类在这个方法里面转嫁给实例类，这样，同一个效果，可以运行不同的颜色。但前提是你后面要写的实例类要有color这个属性。<br />
现在已做好了工厂类了，下面要做效果实例类了，先贴出完整代码：<br />
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #008080;">&nbsp;1</span>&nbsp;<span style="color: #0000ff;">package</span><span style="color: #000000;">&nbsp;com.jiangzone.flex.effects&nbsp;{<br />
</span><span style="color: #008080;">&nbsp;2</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">import</span><span style="color: #000000;">&nbsp;mx.effects.EffectInstance;<br />
</span><span style="color: #008080;">&nbsp;3</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">import</span><span style="color: #000000;">&nbsp;flash.display.Shape;<br />
</span><span style="color: #008080;">&nbsp;4</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">import</span><span style="color: #000000;">&nbsp;flash.events.Event;<br />
</span><span style="color: #008080;">&nbsp;5</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080;">&nbsp;6</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">public</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">class</span><span style="color: #000000;">&nbsp;MyEffectInstance&nbsp;</span><span style="color: #0000ff;">extends</span><span style="color: #000000;">&nbsp;EffectInstance&nbsp;{<br />
</span><span style="color: #008080;">&nbsp;7</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080;">&nbsp;8</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">private</span><span style="color: #000000;">&nbsp;var&nbsp;_color:Number;<br />
</span><span style="color: #008080;">&nbsp;9</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">private</span><span style="color: #000000;">&nbsp;var&nbsp;shape:Shape;<br />
</span><span style="color: #008080;">10</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080;">11</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">public</span><span style="color: #000000;">&nbsp;function&nbsp;set&nbsp;color(value:Number):</span><span style="color: #0000ff;">void</span><span style="color: #000000;">&nbsp;{<br />
</span><span style="color: #008080;">12</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;_color&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;value;<br />
</span><span style="color: #008080;">13</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
</span><span style="color: #008080;">14</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080;">15</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">public</span><span style="color: #000000;">&nbsp;function&nbsp;MyEffectInstance(newTarget:Object)&nbsp;{<br />
</span><span style="color: #008080;">16</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">super</span><span style="color: #000000;">(newTarget);<br />
</span><span style="color: #008080;">17</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
</span><span style="color: #008080;">18</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080;">19</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;override&nbsp;</span><span style="color: #0000ff;">public</span><span style="color: #000000;">&nbsp;function&nbsp;play(&nbsp;):</span><span style="color: #0000ff;">void</span><span style="color: #000000;">&nbsp;{<br />
</span><span style="color: #008080;">20</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">super</span><span style="color: #000000;">.play(&nbsp;);<br />
</span><span style="color: #008080;">21</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;drawShape();<br />
</span><span style="color: #008080;">22</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
</span><span style="color: #008080;">23</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080;">24</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">private</span><span style="color: #000000;">&nbsp;function&nbsp;drawShape():</span><span style="color: #0000ff;">void</span><span style="color: #000000;">{<br />
</span><span style="color: #008080;">25</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;shape&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;Shape();<br />
</span><span style="color: #008080;">26</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;shape.graphics.beginFill(_color);<br />
</span><span style="color: #008080;">27</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;shape.graphics.drawRect(target.width&nbsp;</span><span style="color: #000000;">*</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">-</span><span style="color: #000000;">0.5</span><span style="color: #000000;">,target.height&nbsp;</span><span style="color: #000000;">*</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">-</span><span style="color: #000000;">0.5</span><span style="color: #000000;">,target.width,target.height);<br />
</span><span style="color: #008080;">28</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;shape.graphics.endFill();<br />
</span><span style="color: #008080;">29</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;shape.x&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;target.x&nbsp;</span><span style="color: #000000;">+</span><span style="color: #000000;">&nbsp;target.width&nbsp;</span><span style="color: #000000;">*</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0.5</span><span style="color: #000000;">;<br />
</span><span style="color: #008080;">30</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;shape.y&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;target.y&nbsp;</span><span style="color: #000000;">+</span><span style="color: #000000;">&nbsp;target.height&nbsp;</span><span style="color: #000000;">*</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0.5</span><span style="color: #000000;">;<br />
</span><span style="color: #008080;">31</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;target.parent.rawChildren.addChild(shape);<br />
</span><span style="color: #008080;">32</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;target.addEventListener(Event.ENTER_FRAME,onEnterFrame);<br />
</span><span style="color: #008080;">33</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
</span><span style="color: #008080;">34</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080;">35</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">private</span><span style="color: #000000;">&nbsp;function&nbsp;onEnterFrame(e:Event):</span><span style="color: #0000ff;">void</span><span style="color: #000000;">{<br />
</span><span style="color: #008080;">36</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;shape.scaleX&nbsp;</span><span style="color: #000000;">+=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0.1</span><span style="color: #000000;">;<br />
</span><span style="color: #008080;">37</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;shape.scaleY&nbsp;</span><span style="color: #000000;">+=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0.1</span><span style="color: #000000;">;<br />
</span><span style="color: #008080;">38</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;shape.alpha&nbsp;</span><span style="color: #000000;">-=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0.05</span><span style="color: #000000;">;<br />
</span><span style="color: #008080;">39</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(shape.alpha&nbsp;</span><span style="color: #000000;">&lt;=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">){<br />
</span><span style="color: #008080;">40</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;target.parent.rawChildren.removeChild(shape);<br />
</span><span style="color: #008080;">41</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;target.removeEventListener(Event.ENTER_FRAME,onEnterFrame);<br />
</span><span style="color: #008080;">42</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
</span><span style="color: #008080;">43</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
</span><span style="color: #008080;">44</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;}<br />
</span><span style="color: #008080;">45</span>&nbsp;<span style="color: #000000;">}</span></div>
<br />
<br />
我们看到，每一个动画效果实例类，都要继承自EffectInstance这个类，构造函数也是需要接收一个Object，这个Object其实就是你要应用到的组件对象，这个会是系统自动传递的，接收了Object后还要用该Object 调用父类的构造函数：super(newTarget);<br />
之后还有一件必做的事，就是重写play()这个方法：override public function play( ):void<br />
是不是对play()很熟悉？因为第一篇文章中，就用到这个方法来发动效果的播放的，所以，你需要做的动画编程都是在这个方法里。但还是要先调用父类的同名方法，super.play();之后的，就是你想怎么画就怎么画啦。我将画一个与要应用效果的组件一样大小的矩型，之后该矩形会放大并透明，效果都写在drawShape()方法里了。看到这个方法里面的代码，是不是跟Flash里的一样了？<br />
这里再贴上MXML代码：<br />
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #008080;">&nbsp;1</span>&nbsp;<span style="color: #0000ff;">&lt;?</span><span style="color: #ff00ff;">xml&nbsp;version="1.0"&nbsp;encoding="utf-8"</span><span style="color: #0000ff;">?&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">&nbsp;2</span>&nbsp;<span style="color: #0000ff;">&lt;</span><span style="color: #800000;">mx:Application&nbsp;</span><span style="color: #ff0000;">layout</span><span style="color: #0000ff;">="absolute"</span><span style="color: #ff0000;">&nbsp;xmlns:mx</span><span style="color: #0000ff;">="http://www.adobe.com/2006/mxml"</span><span style="color: #ff0000;"><br />
</span><span style="color: #008080;">&nbsp;3</span>&nbsp;<span style="color: #ff0000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;xmlns:pf</span><span style="color: #0000ff;">="com.jiangzone.flex.effects.*"</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">&nbsp;4</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">pf:MyEffect&nbsp;</span><span style="color: #ff0000;">id</span><span style="color: #0000ff;">="myEffect"</span><span style="color: #ff0000;">&nbsp;color</span><span style="color: #0000ff;">="0xFFFFFF"</span><span style="color: #ff0000;">&nbsp;</span><span style="color: #0000ff;">/&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">&nbsp;5</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">mx:VBox&nbsp;</span><span style="color: #ff0000;">x</span><span style="color: #0000ff;">="100"</span><span style="color: #ff0000;">&nbsp;y</span><span style="color: #0000ff;">="43"</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">&nbsp;6</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">mx:TextInput&nbsp;</span><span style="color: #ff0000;">focusInEffect</span><span style="color: #0000ff;">="{myEffect}"</span><span style="color: #ff0000;">&nbsp;</span><span style="color: #0000ff;">/&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">&nbsp;7</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">mx:TextInput&nbsp;</span><span style="color: #ff0000;">focusInEffect</span><span style="color: #0000ff;">="{myEffect}"</span><span style="color: #ff0000;">&nbsp;</span><span style="color: #0000ff;">/&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">&nbsp;8</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">mx:TextInput&nbsp;</span><span style="color: #ff0000;">focusInEffect</span><span style="color: #0000ff;">="{myEffect}"</span><span style="color: #ff0000;">&nbsp;</span><span style="color: #0000ff;">/&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">&nbsp;9</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">mx:TextInput&nbsp;</span><span style="color: #ff0000;">focusInEffect</span><span style="color: #0000ff;">="{myEffect}"</span><span style="color: #ff0000;">&nbsp;</span><span style="color: #0000ff;">/&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">10</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">mx:VBox</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">11</span>&nbsp;<span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">mx:Application</span><span style="color: #0000ff;">&gt;</span></div>
<br />
这里先看看最终效果：<br />
<object xcodebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab" height="200" width="400"  classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" >
<param name="Movie" value="/images/blogjava_net/cph8066/y200811813637.swf" />
<param name="Quality" value="high"/>
<param name="wmode" value="transparent"/><embed src="http://www.blogjava.net/images/blogjava_net/cph8066/y200811813637.swf" width="400" height="200"  quality="high" wmode="transparent"     type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" ></embed>
</object><br />
<br />
在这里，我用了ENTER_FRAME的写法，但是如果不用ENTER_FRAME方式制作动画的话，还有另外一种方法的，那就是Tween了，Tween是以&#8220;时间&#8221;为准，而ENTER_FRAME是以&#8220;帧&#8221;为准，其实到这里，一个基本的Flex自定义动画效果就完成了，但扩展一下的，还可以用Tween来实现，而且建议用Tween来写动画效果，易控制，清淅一点。用Tween实现的话，效果与写法都是差不多的，要用Tween就要将效果实例类继承自TweenEffectInstance这个类，并重写它的onTweenUpdate( )方法与onTweenEnd( )方法，这种Tween效果的写法，将会比ENTER_FRAME的写法方便，因为它根据的是时间，所以，你可以指定效果播放的时间，并且当播放完毕会自动调用onTweenEnd()方法，你可以在该方法里写一些处理操作，如释放资源等等<br />
由于编幅关系，就不在这里详细介绍TweenEffectInstence了，就简单贴出该类的写法与注释吧：<br />
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #008080;">&nbsp;1</span>&nbsp;<span style="color: #0000ff;">package</span><span style="color: #000000;">&nbsp;com.jiangzone.flex.effects&nbsp;{<br />
</span><span style="color: #008080;">&nbsp;2</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">import</span><span style="color: #000000;">&nbsp;mx.effects.effectClasses.TweenEffectInstance;<br />
</span><span style="color: #008080;">&nbsp;3</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">import</span><span style="color: #000000;">&nbsp;flash.display.Shape;<br />
</span><span style="color: #008080;">&nbsp;4</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">import</span><span style="color: #000000;">&nbsp;flash.events.Event;<br />
</span><span style="color: #008080;">&nbsp;5</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">import</span><span style="color: #000000;">&nbsp;mx.effects.Tween;<br />
</span><span style="color: #008080;">&nbsp;6</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080;">&nbsp;7</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">public</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">class</span><span style="color: #000000;">&nbsp;MyEffectInstance&nbsp;</span><span style="color: #0000ff;">extends</span><span style="color: #000000;">&nbsp;TweenEffectInstance&nbsp;{<br />
</span><span style="color: #008080;">&nbsp;8</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080;">&nbsp;9</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">private</span><span style="color: #000000;">&nbsp;var&nbsp;_color:Number;<br />
</span><span style="color: #008080;">10</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">private</span><span style="color: #000000;">&nbsp;var&nbsp;shape:Shape;<br />
</span><span style="color: #008080;">11</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080;">12</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">public</span><span style="color: #000000;">&nbsp;function&nbsp;set&nbsp;color(value:Number):</span><span style="color: #0000ff;">void</span><span style="color: #000000;">&nbsp;{<br />
</span><span style="color: #008080;">13</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;_color&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;value;<br />
</span><span style="color: #008080;">14</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
</span><span style="color: #008080;">15</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080;">16</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">构造函数</span><span style="color: #008000;"><br />
</span><span style="color: #008080;">17</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">public</span><span style="color: #000000;">&nbsp;function&nbsp;MyEffectInstance(newTarget:Object)&nbsp;{<br />
</span><span style="color: #008080;">18</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">super</span><span style="color: #000000;">(newTarget);<br />
</span><span style="color: #008080;">19</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
</span><span style="color: #008080;">20</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080;">21</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">同样的要重写play()方法与调用父类同名方法</span><span style="color: #008000;"><br />
</span><span style="color: #008080;">22</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;override&nbsp;</span><span style="color: #0000ff;">public</span><span style="color: #000000;">&nbsp;function&nbsp;play(&nbsp;):</span><span style="color: #0000ff;">void</span><span style="color: #000000;">&nbsp;{<br />
</span><span style="color: #008080;">23</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">super</span><span style="color: #000000;">.play();<br />
</span><span style="color: #008080;">24</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;drawShape();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">先创建一个矩形</span><span style="color: #008000;"><br />
</span><span style="color: #008080;">25</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">/*</span><span style="color: #008000;">注意：用Tween效果写法的话，就一定要创建一个Tween对象<br />
</span><span style="color: #008080;">26</span>&nbsp;<span style="color: #008000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;第一个参数是侦听器，即侦听Update与End的，这两个方法都在这个类里，<br />
</span><span style="color: #008080;">27</span>&nbsp;<span style="color: #008000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;所以这里就写this,第二和第三个参数都是一个数组<br />
</span><span style="color: #008080;">28</span>&nbsp;<span style="color: #008000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;第二个参数是初始值数组，第三个是结果值数组，都要一一对应，第四个是变化时间<br />
</span><span style="color: #008080;">29</span>&nbsp;<span style="color: #008000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;这里的是[1,1]分别是初始时的scale比例与alpha，[3,0]就是最终结果数值<br />
</span><span style="color: #008080;">30</span>&nbsp;<span style="color: #008000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;系统会自动在1000毫秒里平分这些值来得到渐变效果<br />
</span><span style="color: #008080;">31</span>&nbsp;<span style="color: #008000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;并将每一次数值的改变时调用Update方法，结束后调用End方法<br />
</span><span style="color: #008080;">32</span>&nbsp;<span style="color: #008000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;你也可以将时间的参数发布到工厂类属性里，可以方便设置播放时间，像Flex自带效果一样<br />
</span><span style="color: #008080;">33</span>&nbsp;<span style="color: #008000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">*/</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">34</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;Tween(</span><span style="color: #0000ff;">this</span><span style="color: #000000;">,[</span><span style="color: #000000;">1</span><span style="color: #000000;">,</span><span style="color: #000000;">1</span><span style="color: #000000;">],[</span><span style="color: #000000;">3</span><span style="color: #000000;">,</span><span style="color: #000000;">0</span><span style="color: #000000;">],</span><span style="color: #000000;">1000</span><span style="color: #000000;">);<br />
</span><span style="color: #008080;">35</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
</span><span style="color: #008080;">36</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080;">37</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;override&nbsp;</span><span style="color: #0000ff;">public</span><span style="color: #000000;">&nbsp;function&nbsp;onTweenUpdate(value:Object):</span><span style="color: #0000ff;">void</span><span style="color: #000000;">{<br />
</span><span style="color: #008080;">38</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">这里将改变的数值应用到组件对象中。注意：也要与上面的数值数组相对应。</span><span style="color: #008000;"><br />
</span><span style="color: #008080;">39</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;shape.scaleX&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;Number(value[</span><span style="color: #000000;">0</span><span style="color: #000000;">]);<br />
</span><span style="color: #008080;">40</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;shape.scaleY&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;Number(value[</span><span style="color: #000000;">0</span><span style="color: #000000;">]);<br />
</span><span style="color: #008080;">41</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;shape.alpha&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;Number(value[</span><span style="color: #000000;">1</span><span style="color: #000000;">]);<br />
</span><span style="color: #008080;">42</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
</span><span style="color: #008080;">43</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080;">44</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;override&nbsp;</span><span style="color: #0000ff;">public</span><span style="color: #000000;">&nbsp;function&nbsp;onTweenEnd(value:Object):</span><span style="color: #0000ff;">void</span><span style="color: #000000;">&nbsp;{<br />
</span><span style="color: #008080;">45</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">当播放完时会自动调用该方法，这里就做删除该矩形的操作吧</span><span style="color: #008000;"><br />
</span><span style="color: #008080;">46</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;target.parent.rawChildren.removeChild(shape);<br />
</span><span style="color: #008080;">47</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
</span><span style="color: #008080;">48</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080;">49</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">private</span><span style="color: #000000;">&nbsp;function&nbsp;drawShape():</span><span style="color: #0000ff;">void</span><span style="color: #000000;">{<br />
</span><span style="color: #008080;">50</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;shape&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;Shape();<br />
</span><span style="color: #008080;">51</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;shape.graphics.beginFill(_color);<br />
</span><span style="color: #008080;">52</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;shape.graphics.drawRect(target.width&nbsp;</span><span style="color: #000000;">*</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">-</span><span style="color: #000000;">0.5</span><span style="color: #000000;">,target.height&nbsp;</span><span style="color: #000000;">*</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">-</span><span style="color: #000000;">0.5</span><span style="color: #000000;">,target.width,target.height);<br />
</span><span style="color: #008080;">53</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;shape.graphics.endFill();<br />
</span><span style="color: #008080;">54</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;shape.x&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;target.x&nbsp;</span><span style="color: #000000;">+</span><span style="color: #000000;">&nbsp;target.width&nbsp;</span><span style="color: #000000;">*</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0.5</span><span style="color: #000000;">;<br />
</span><span style="color: #008080;">55</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;shape.y&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;target.y&nbsp;</span><span style="color: #000000;">+</span><span style="color: #000000;">&nbsp;target.height&nbsp;</span><span style="color: #000000;">*</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0.5</span><span style="color: #000000;">;<br />
</span><span style="color: #008080;">56</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;target.parent.rawChildren.addChild(shape);<br />
</span><span style="color: #008080;">57</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
</span><span style="color: #008080;">58</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;}<br />
</span><span style="color: #008080;">59</span>&nbsp;<span style="color: #000000;">}</span></div>
<br />
<br />
就写到这里吧，关于Tween其它的，就留作为作业，让大家思考与探索吧！之后如果有时间的话，将会写完下篇文章介绍Flex的&#8220;变面&#8221;动画，即状态变换！这里先谢谢大家支持！<br />
<img src ="http://www.blogjava.net/cph8066/aggbug/218407.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/cph8066/" target="_blank">姜大叔</a> 2008-07-29 14:24 <a href="http://www.blogjava.net/cph8066/archive/2008/07/29/218407.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Flex的动画效果与变换！（一）</title><link>http://www.blogjava.net/cph8066/archive/2008/07/29/218405.html</link><dc:creator>姜大叔</dc:creator><author>姜大叔</author><pubDate>Tue, 29 Jul 2008 06:20:00 GMT</pubDate><guid>http://www.blogjava.net/cph8066/archive/2008/07/29/218405.html</guid><wfw:comment>http://www.blogjava.net/cph8066/comments/218405.html</wfw:comment><comments>http://www.blogjava.net/cph8066/archive/2008/07/29/218405.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/cph8066/comments/commentRss/218405.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/cph8066/services/trackbacks/218405.html</trackback:ping><description><![CDATA[在Flex里面不像在Flash里面随意制作动画了，Flex更趋向于应用程序，而不是动画制作了，所以没有了时间轴的概念。在Flex中使用动画效果，可以用Flex自带的Effect，或者自已定制Effect，因为很多人都想借Flash里面的一样操作Flex，比如在Flash里面做一个动态按钮很容易，当鼠标移动到上面时，会有很多发光的点跑出来（荧火虫效果），这种效果在Flash十分容易实现，但在Flex里面要实现这种效果就不是那么简单的了，下面说说在Flex里的的动务效果的使用与自定义制作。<br />
<br />
首先介绍一下Flex里面的自带的效果有以下几种：<br />
&nbsp; Blur&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 模糊效果<br />
&nbsp; Move&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 移动效果<br />
&nbsp; Fade&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 淡入淡出效果&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp; Glow&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 发光效果<br />
&nbsp; Resize&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 调整大小效果<br />
&nbsp; Rotate&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 旋转效果<br />
&nbsp; Zoom&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 缩放效果<br />
&nbsp; WipeLeft&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 用遮罩实现画面收放效果，下同，分别为不同方向<br />
&nbsp; WipeRight<br />
&nbsp; WipeUp<br />
&nbsp; WipeDown<br />
<br />
不同的效果所需要设置的属性也不一样，比如Blur效果需要设置它的X与Y轴的模糊像素<br />
&lt;mx:Blur id="blur" blurXFrom="0" blurXTo="10" /&gt;<br />
而Move效果需要设置移动的位置信息<br />
&lt;mx:Move id="moveEffect" xFrom="-100" /&gt;<br />
其它设置可以参考Flex语言参考<br />
<br />
下面说说如何使用这些效果。要运行这些效果有两种方法：一种是调用该效果的play()方法，另外一种是使用触发器来触发效果。<br />
（1）使用play()方法：<br />
先看效果：<br />
<object xcodebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab" height="300" width="300"  classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" >
<param name="Movie" value="/images/blogjava_net/cph8066/k2008115161838.swf" />
<param name="Quality" value="high"/>
<param name="wmode" value="transparent"/><embed src="http://www.blogjava.net/images/blogjava_net/cph8066/k2008115161838.swf" width="300" height="300"  quality="high" wmode="transparent"     type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" ></embed>
</object><br />
以下代码：<br />
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #008080;">&nbsp;1</span>&nbsp;<span style="color: #0000ff;">&lt;?</span><span style="color: #ff00ff;">xml&nbsp;version="1.0"&nbsp;encoding="utf-8"</span><span style="color: #0000ff;">?&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">&nbsp;2</span>&nbsp;<span style="color: #0000ff;">&lt;</span><span style="color: #800000;">mx:Application&nbsp;</span><span style="color: #ff0000;">xmlns:mx</span><span style="color: #0000ff;">="http://www.adobe.com/2006/mxml"</span><span style="color: #ff0000;">&nbsp;layout</span><span style="color: #0000ff;">="absolute"</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">&nbsp;3</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">mx:Script</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">&nbsp;4</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;![CDATA[</span><span style="color: #808080;"><br />
</span><span style="color: #008080;">&nbsp;5</span>&nbsp;<span style="color: #808080;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;private&nbsp;function&nbsp;onClick(event:Event):void&nbsp;{<br />
</span><span style="color: #008080;">&nbsp;6</span>&nbsp;<span style="color: #808080;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;be.target&nbsp;=&nbsp;event.currentTarget;<br />
</span><span style="color: #008080;">&nbsp;7</span>&nbsp;<span style="color: #808080;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;be.play(&nbsp;);<br />
</span><span style="color: #008080;">&nbsp;8</span>&nbsp;<span style="color: #808080;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
</span><span style="color: #008080;">&nbsp;9</span>&nbsp;<span style="color: #808080;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">]]&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">10</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">mx:Script</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">11</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080;">12</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">mx:Blur&nbsp;</span><span style="color: #ff0000;">id</span><span style="color: #0000ff;">="be"</span><span style="color: #ff0000;">&nbsp;blurXTo</span><span style="color: #0000ff;">="50"</span><span style="color: #ff0000;">&nbsp;blurYTo</span><span style="color: #0000ff;">="50"</span><span style="color: #ff0000;">&nbsp;duration</span><span style="color: #0000ff;">="1000"</span><span style="color: #ff0000;">&nbsp;</span><span style="color: #0000ff;">/&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">13</span>&nbsp;<span style="color: #000000;"><br />
</span><span style="color: #008080;">14</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">mx:Panel&nbsp;</span><span style="color: #ff0000;">id</span><span style="color: #0000ff;">="p"</span><span style="color: #ff0000;">&nbsp;width</span><span style="color: #0000ff;">="200"</span><span style="color: #ff0000;">&nbsp;height</span><span style="color: #0000ff;">="180"</span><span style="color: #ff0000;">&nbsp;click</span><span style="color: #0000ff;">="onClick(event)"</span><span style="color: #ff0000;">&nbsp;</span><span style="color: #0000ff;">/&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">15</span>&nbsp;<span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">mx:Application</span><span style="color: #0000ff;">&gt;</span></div>
<br />
<br />
在代码中看到，要使用效果，先定好一个效果，如上面的&lt;mx:Blur ...&gt;该标签就是模糊效果的MXML标签，定好效果后在Panel的点击事件里再对该效果进行一些设置，如be.target = event.currentTarget 设置该效果将要应用到的目标组件(Component)，之后再调用play()方法后，该效果就会应用在Panel上面播放！<br />
<br />
（2）使用触发器播放效果：<br />
使用触发器播放效果的话，可以不用写ActionScript代码，直接在组件的效果触发器上指明使用哪个效果就可以了，比较简单明了，但就不能进行更多的属性定制，而用AS控制播放的话，可以对效果进行很多的设置再相应根据情况播放，先看看触发器播放的代码：<br />
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #008080;">1</span>&nbsp;<span style="color: #0000ff;">&lt;?</span><span style="color: #ff00ff;">xml&nbsp;version="1.0"&nbsp;encoding="utf-8"</span><span style="color: #0000ff;">?&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">2</span>&nbsp;<span style="color: #0000ff;">&lt;</span><span style="color: #800000;">mx:Application&nbsp;</span><span style="color: #ff0000;">xmlns:mx</span><span style="color: #0000ff;">="http://www.adobe.com/2006/mxml"</span><span style="color: #ff0000;">&nbsp;layout</span><span style="color: #0000ff;">="absolute"</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">3</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080;">4</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">mx:Blur&nbsp;</span><span style="color: #ff0000;">id</span><span style="color: #0000ff;">="be"</span><span style="color: #ff0000;">&nbsp;blurXTo</span><span style="color: #0000ff;">="50"</span><span style="color: #ff0000;">&nbsp;blurYTo</span><span style="color: #0000ff;">="50"</span><span style="color: #ff0000;">&nbsp;duration</span><span style="color: #0000ff;">="2000"</span><span style="color: #ff0000;">&nbsp;</span><span style="color: #0000ff;">/&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">5</span>&nbsp;<span style="color: #000000;"><br />
</span><span style="color: #008080;">6</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">mx:Panel&nbsp;</span><span style="color: #ff0000;">id</span><span style="color: #0000ff;">="p"</span><span style="color: #ff0000;">&nbsp;width</span><span style="color: #0000ff;">="200"</span><span style="color: #ff0000;">&nbsp;height</span><span style="color: #0000ff;">="180"</span><span style="color: #ff0000;">&nbsp;creationCompleteEffect</span><span style="color: #0000ff;">="{be}"</span><span style="color: #ff0000;">&nbsp;</span><span style="color: #0000ff;">/&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">7</span>&nbsp;<span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">mx:Application</span><span style="color: #0000ff;">&gt;</span></div>
<br />
<br />
看以上代码，先写好了Blur的效果并设置好属性后，duration="2000"这个是播放的时间以毫秒为单位。<br />
在Panel标签里有这样一句：creationCompleteEffect="{be}" 这个就是触发器，是该Panel组件的效果触发器，当Panel组件加载完成时，会由系统自动调用该效果触发器，触发器里面指了触发 be 这个Blur效果<br />
在Flex里面还有很多触发器如：<br />
&nbsp; addedEffect&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 被添加进容器时触发效果<br />
&nbsp; removedEffect&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 被从容器中移除时触发效果<br />
&nbsp; creationCompleteEffect&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 被创建成功时触发效果<br />
&nbsp; focusInEffect&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 获得焦点时触发<br />
&nbsp; focusOutEffect&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 失去焦点时触发<br />
&nbsp; hideEffect&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 被隐藏时(visible=false)触发<br />
&nbsp; showEffect&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 被显示时(visible=true)触发<br />
&nbsp; rollOverEffect&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 鼠标经过时触发<br />
&nbsp; rollOutEffect&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 鼠标离开时触发<br />
&nbsp; mouseDownEffect&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 鼠标按下时触发<br />
&nbsp; mouseUpEffect&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 鼠标松开时触发<br />
&nbsp; moveEffect&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 被移动时触发<br />
&nbsp; resizeEffect&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 被重整大小时触发<br />
<br />
注意：这些都是效果触发器，不要与事件触发器混乱了。事件触发器是rollOver，事件触发器与效果触发器差不多，事件触发器是当用户执行相就操作时触发事件，将会调用自定的事件触发处理函数，而效果触发器是执行相应操作时被触发并由系统自动调用所定的效果的play()方法。<br />
<br />
现在说说效果的一些其它属性：<br />
每个效果都有reverse( );方法，该方法是反向播放，原本由小到大的变化，而调用reverse( );后再运行play()的话，效果将会从大到小进行播放。<br />
但要注意的一点是，reverse( );不会自动播放，即是单单调用reverse( );的话，效果并不会播放，他只会记录该效果为倒转，而要再调用play()后倒转效果才会开始播放。而调用pause( )与resume( )就是暂停与继续播放效果<br />
<br />
startDelay这个属性是设置效果的播放延时，以毫秒为单位，即要等待多少毫秒后效果才开始播放，如：<br />
&lt;mx:Blur id="be" blurXTo="50" startDelay="3000" /&gt;<br />
该模糊效果将会在调用play()之后3秒才开始播放<br />
<br />
repeatCount这个属性是设置效果的重复次数，默认为1，设置为0的话就是不停循环播放<br />
&lt;mx:Blur id="be" blurXTo="50" startDelay="3000" repeatCount="5" /&gt;<br />
<br />
每个效果都有两个事件：effectStart 与 effectEnd<br />
你可以在该效果事件的处理函数里面对效果作相应的操作，如：<br />
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #008080;">&nbsp;1</span>&nbsp;<span style="color: #0000ff;">&lt;?</span><span style="color: #ff00ff;">xml&nbsp;version="1.0"&nbsp;encoding="utf-8"</span><span style="color: #0000ff;">?&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">&nbsp;2</span>&nbsp;<span style="color: #0000ff;">&lt;</span><span style="color: #800000;">mx:Application&nbsp;</span><span style="color: #ff0000;">xmlns:mx</span><span style="color: #0000ff;">="http://www.adobe.com/2006/mxml"</span><span style="color: #ff0000;">&nbsp;layout</span><span style="color: #0000ff;">="absolute"</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">&nbsp;3</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">mx:Script</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">&nbsp;4</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;![CDATA[</span><span style="color: #808080;"><br />
</span><span style="color: #008080;">&nbsp;5</span>&nbsp;<span style="color: #808080;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;import&nbsp;mx.events.EffectEvent;<br />
</span><span style="color: #008080;">&nbsp;6</span>&nbsp;<span style="color: #808080;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;function&nbsp;onEffEnd(e:EffectEvent):void{<br />
</span><span style="color: #008080;">&nbsp;7</span>&nbsp;<span style="color: #808080;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e.effectInstance.reverse();<br />
</span><span style="color: #008080;">&nbsp;8</span>&nbsp;<span style="color: #808080;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e.effectInstance.play();<br />
</span><span style="color: #008080;">&nbsp;9</span>&nbsp;<span style="color: #808080;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
</span><span style="color: #008080;">10</span>&nbsp;<span style="color: #808080;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">]]&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">11</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">mx:Script</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">12</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">mx:Blur&nbsp;</span><span style="color: #ff0000;">id</span><span style="color: #0000ff;">="be"</span><span style="color: #ff0000;">&nbsp;blurXTo</span><span style="color: #0000ff;">="50"</span><span style="color: #ff0000;">&nbsp;blurYTo</span><span style="color: #0000ff;">="50"</span><span style="color: #ff0000;">&nbsp;duration</span><span style="color: #0000ff;">="2000"</span><span style="color: #ff0000;">&nbsp;</span><span style="color: #0000ff;">/&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">13</span>&nbsp;<span style="color: #000000;"><br />
</span><span style="color: #008080;">14</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">mx:Panel&nbsp;</span><span style="color: #ff0000;">id</span><span style="color: #0000ff;">="p"</span><span style="color: #ff0000;">&nbsp;width</span><span style="color: #0000ff;">="200"</span><span style="color: #ff0000;">&nbsp;height</span><span style="color: #0000ff;">="180"</span><span style="color: #ff0000;">&nbsp;creationCompleteEffect</span><span style="color: #0000ff;">="{be}"</span><span style="color: #ff0000;">&nbsp;effectEnd</span><span style="color: #0000ff;">="onEffEnd(event)"</span><span style="color: #ff0000;">&nbsp;</span><span style="color: #0000ff;">/&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">15</span>&nbsp;<span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">mx:Application</span><span style="color: #0000ff;">&gt;</span></div>
<br />
当效果播放完时，系统将会自动触发effectEnd事件，在处理函数里面，将该效果Instance即现时播放的效果实例进行倒转并播放，当播放完，又会触发effectEnd事伯，这样一直循环！<br />
<br />
现在再来说说效果的组合：<br />
通常如果你觉得只应用一个效果很单调的话，可以进行效果组合应用，即多个效果同时播放或者顺序播放，<br />
如，当加载页面时，你想Panel先模糊到一定程度，再将Panel移动到某个位置，再把Panel还原成原来的清淅度（即消退模糊）。这样分析一下，一共用了三个效果，一，先应用Blur（由清至模）效果，当Blur完成时，再应用Move效果，当Move完成时，再应用另外一个Blur（由模至清）效果。这样三个效果组合就是按顺序组合，先后运行。先来看看效果：<br />
<object xcodebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab" height="380" width="450"  classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" >
<param name="Movie" value="/images/blogjava_net/cph8066/y2008115161856.swf" />
<param name="Quality" value="high"/>
<param name="wmode" value="transparent"/><embed src="http://www.blogjava.net/images/blogjava_net/cph8066/y2008115161856.swf" width="450" height="380"  quality="high" wmode="transparent"     type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" ></embed>
</object><br />
再来看看代码：<br />
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #008080;">&nbsp;1</span>&nbsp;<span style="color: #0000ff;">&lt;?</span><span style="color: #ff00ff;">xml&nbsp;version="1.0"&nbsp;encoding="utf-8"</span><span style="color: #0000ff;">?&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">&nbsp;2</span>&nbsp;<span style="color: #0000ff;">&lt;</span><span style="color: #800000;">mx:Application&nbsp;</span><span style="color: #ff0000;">xmlns:mx</span><span style="color: #0000ff;">="http://www.adobe.com/2006/mxml"</span><span style="color: #ff0000;">&nbsp;layout</span><span style="color: #0000ff;">="absolute"</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">&nbsp;3</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080;">&nbsp;4</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">mx:Sequence&nbsp;</span><span style="color: #ff0000;">id</span><span style="color: #0000ff;">="sequenceEffect"</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">&nbsp;5</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">mx:Blur&nbsp;</span><span style="color: #ff0000;">id</span><span style="color: #0000ff;">="beOut"</span><span style="color: #ff0000;">&nbsp;blurXTo</span><span style="color: #0000ff;">="50"</span><span style="color: #ff0000;">&nbsp;blurYTo</span><span style="color: #0000ff;">="50"</span><span style="color: #ff0000;">&nbsp;duration</span><span style="color: #0000ff;">="500"</span><span style="color: #ff0000;">&nbsp;</span><span style="color: #0000ff;">/&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">&nbsp;6</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">mx:Move&nbsp;</span><span style="color: #ff0000;">id</span><span style="color: #0000ff;">="mv"</span><span style="color: #ff0000;">&nbsp;xTo</span><span style="color: #0000ff;">="200"</span><span style="color: #ff0000;">&nbsp;yTo</span><span style="color: #0000ff;">="150"</span><span style="color: #ff0000;">&nbsp;duration</span><span style="color: #0000ff;">="500"</span><span style="color: #ff0000;">&nbsp;</span><span style="color: #0000ff;">/&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">&nbsp;7</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">mx:Blur&nbsp;</span><span style="color: #ff0000;">id</span><span style="color: #0000ff;">="beIn"</span><span style="color: #ff0000;">&nbsp;blurXFrom</span><span style="color: #0000ff;">="50"</span><span style="color: #ff0000;">&nbsp;blurYFrom</span><span style="color: #0000ff;">="50"</span><span style="color: #ff0000;">&nbsp;blurXTo</span><span style="color: #0000ff;">="0"</span><span style="color: #ff0000;">&nbsp;blurYTo</span><span style="color: #0000ff;">="0"</span><span style="color: #ff0000;">&nbsp;duration</span><span style="color: #0000ff;">="500"</span><span style="color: #ff0000;">&nbsp;</span><span style="color: #0000ff;">/&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">&nbsp;8</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">mx:Sequence</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">&nbsp;9</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080;">10</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">mx:Panel&nbsp;</span><span style="color: #ff0000;">id</span><span style="color: #0000ff;">="p"</span><span style="color: #ff0000;">&nbsp;width</span><span style="color: #0000ff;">="200"</span><span style="color: #ff0000;">&nbsp;height</span><span style="color: #0000ff;">="180"</span><span style="color: #ff0000;">&nbsp;mouseDownEffect</span><span style="color: #0000ff;">="sequenceEffect"</span><span style="color: #ff0000;">&nbsp;&nbsp;</span><span style="color: #0000ff;">/&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">11</span>&nbsp;<span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">mx:Application</span><span style="color: #0000ff;">&gt;</span></div>
<br />
看以上代码，&lt;mx:Sequence id="sequenceEffect"&gt;标签就是顺序组合效果标签，当应用sequenceEffect效果的时候，它会按顺序播放该标签里面的三个子效果。<br />
<br />
另外的就是同时播放了，<br />
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #008080;">1</span>&nbsp;<span style="color: #0000ff;">&lt;</span><span style="color: #800000;">mx:Parallel&nbsp;</span><span style="color: #ff0000;">id</span><span style="color: #0000ff;">="parallelEffect"</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">2</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">mx:Blur&nbsp;</span><span style="color: #ff0000;">id</span><span style="color: #0000ff;">="beOut"</span><span style="color: #ff0000;">&nbsp;blurXTo</span><span style="color: #0000ff;">="50"</span><span style="color: #ff0000;">&nbsp;blurYTo</span><span style="color: #0000ff;">="50"</span><span style="color: #ff0000;">&nbsp;duration</span><span style="color: #0000ff;">="500"</span><span style="color: #ff0000;">&nbsp;</span><span style="color: #0000ff;">/&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">3</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">mx:Move&nbsp;</span><span style="color: #ff0000;">id</span><span style="color: #0000ff;">="mv"</span><span style="color: #ff0000;">&nbsp;xTo</span><span style="color: #0000ff;">="200"</span><span style="color: #ff0000;">&nbsp;yTo</span><span style="color: #0000ff;">="150"</span><span style="color: #ff0000;">&nbsp;duration</span><span style="color: #0000ff;">="500"</span><span style="color: #ff0000;">&nbsp;</span><span style="color: #0000ff;">/&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">4</span>&nbsp;<span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">mx:Parallel</span><span style="color: #0000ff;">&gt;</span></div>
<br />
这个标签就是同时播放的效果标签，放在它里面的子效果都会同时播放，即一边模糊一边移动。这个都可以自由组合，&lt;mx:Parallel&gt;与&lt;mx:Sequence&gt;标签都可以自由组合，例如先按顺序先播放模糊，再同时播放移动与隐藏等。这里就不多说了。<br />
<br />
使用Flex自带的效果基本用法就这些，下篇文章将讨论自定义效果的制作，下篇将会详细说说这篇文章上面说到的 effectInstance 即实例与工厂的概念。<br />
<br />
<br />
<br />
<img src ="http://www.blogjava.net/cph8066/aggbug/218405.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/cph8066/" target="_blank">姜大叔</a> 2008-07-29 14:20 <a href="http://www.blogjava.net/cph8066/archive/2008/07/29/218405.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>一群会跟着声音跳舞的3D格子！</title><link>http://www.blogjava.net/cph8066/archive/2008/07/29/218402.html</link><dc:creator>姜大叔</dc:creator><author>姜大叔</author><pubDate>Tue, 29 Jul 2008 06:16:00 GMT</pubDate><guid>http://www.blogjava.net/cph8066/archive/2008/07/29/218402.html</guid><wfw:comment>http://www.blogjava.net/cph8066/comments/218402.html</wfw:comment><comments>http://www.blogjava.net/cph8066/archive/2008/07/29/218402.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/cph8066/comments/commentRss/218402.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/cph8066/services/trackbacks/218402.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 近来在学习Flash的3D技术，现在我看过的就PV3D 与Away3D这两个开源框架，感觉还不错，好像Away3D的效果好点，但效率不如PV3D，PV3D算是亻为（不会用五笔打这个字-_-，我机子里又没拼音输入，将就下吧！）3D，不管这么多了，做个东西练练手，先看效果：<br />
<br />
<img alt="" src="http://www.blogjava.net/images/blogjava_net/cph8066/d20081221229.PNG" width="282" height="235" /><br />
<br />
[url=http://www.jiangzone.com.cn/jiang/3dmusic/soundtest.swf]这里看看效果！[/url]<br />
<br />
&nbsp;&nbsp;&nbsp; 这个程序很简单到没无简单了，就只是用了PV3D框架中的Cube的3D对象，一口气生成64个放在数组里待用，之后用Flash里的声音类加载并播放声音，之后在ENTER_FRAME事件里检测当前声音的频谱，之后根据频谱的高低来调整Cube格子的高低，在Flash里获取的声音频谱有512个Float数据，代表512级频谱，而前256级为LeftChangle，后256级为RightChangle，由于如果生成256个3D对象的话，对CPU来说是个考验，所以就折中间隔抽取64个频段来显示，由于懒于写代码了，就只写了LeftChangle的频谱。<br />
<br />
&nbsp;&nbsp;&nbsp; 以下是代码：<br />
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #008080;">&nbsp;&nbsp;1</span>&nbsp;<span style="color: #008000;">//</span><span style="color: #008000;">************导入需要用到的类</span><span style="color: #008000;"><br />
</span><span style="color: #008080;">&nbsp;&nbsp;2</span>&nbsp;<span style="color: #0000ff;">import</span><span style="color: #000000;">&nbsp;flash.display.Sprite;<br />
</span><span style="color: #008080;">&nbsp;&nbsp;3</span>&nbsp;<span style="color: #0000ff;">import</span><span style="color: #000000;">&nbsp;org.papervision3d.scenes.Scene3D;<br />
</span><span style="color: #008080;">&nbsp;&nbsp;4</span>&nbsp;<span style="color: #0000ff;">import</span><span style="color: #000000;">&nbsp;org.papervision3d.cameras.FreeCamera3D;<br />
</span><span style="color: #008080;">&nbsp;&nbsp;5</span>&nbsp;<span style="color: #0000ff;">import</span><span style="color: #000000;">&nbsp;org.papervision3d.objects.Cube;<br />
</span><span style="color: #008080;">&nbsp;&nbsp;6</span>&nbsp;<span style="color: #0000ff;">import</span><span style="color: #000000;">&nbsp;org.papervision3d.materials.MaterialsList;<br />
</span><span style="color: #008080;">&nbsp;&nbsp;7</span>&nbsp;<span style="color: #0000ff;">import</span><span style="color: #000000;">&nbsp;org.papervision3d.materials.WireframeMaterial;<br />
</span><span style="color: #008080;">&nbsp;&nbsp;8</span>&nbsp;<span style="color: #0000ff;">import</span><span style="color: #000000;">&nbsp;org.papervision3d.materials.ColorMaterial;<br />
</span><span style="color: #008080;">&nbsp;&nbsp;9</span>&nbsp;<span style="color: #0000ff;">import</span><span style="color: #000000;">&nbsp;org.papervision3d.cameras.Camera3D;<br />
</span><span style="color: #008080;">&nbsp;10</span>&nbsp;<span style="color: #0000ff;">import</span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;org.papervision3d.objects.Plane;<br />
</span><span style="color: #008080;">&nbsp;11</span>&nbsp;<span style="color: #000000;"><br />
</span><span style="color: #008080;">&nbsp;12</span>&nbsp;<span style="color: #008000;">//</span><span style="color: #008000;">************定义需要用到的对象</span><span style="color: #008000;"><br />
</span><span style="color: #008080;">&nbsp;13</span>&nbsp;<span style="color: #000000;">var&nbsp;cont:Sprite;<br />
</span><span style="color: #008080;">&nbsp;14</span>&nbsp;<span style="color: #000000;">var&nbsp;scene:Scene3D;<br />
</span><span style="color: #008080;">&nbsp;15</span>&nbsp;<span style="color: #000000;">var&nbsp;camera:FreeCamera3D;<br />
</span><span style="color: #008080;">&nbsp;16</span>&nbsp;<span style="color: #000000;">var&nbsp;ml:MaterialsList;<br />
</span><span style="color: #008080;">&nbsp;17</span>&nbsp;<span style="color: #000000;">var&nbsp;material:ColorMaterial;<br />
</span><span style="color: #008080;">&nbsp;18</span>&nbsp;<span style="color: #000000;">var&nbsp;cubeArr:Array;<br />
</span><span style="color: #008080;">&nbsp;19</span>&nbsp;<span style="color: #000000;"><br />
</span><span style="color: #008080;">&nbsp;20</span>&nbsp;<span style="color: #008000;">//</span><span style="color: #008000;">***********设置放置3D东东的容器</span><span style="color: #008000;"><br />
</span><span style="color: #008080;">&nbsp;21</span>&nbsp;<span style="color: #000000;">cont&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;Sprite();<br />
</span><span style="color: #008080;">&nbsp;22</span>&nbsp;<span style="color: #000000;">cont.x&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">150</span><span style="color: #000000;">;<br />
</span><span style="color: #008080;">&nbsp;23</span>&nbsp;<span style="color: #000000;">cont.y&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">120</span><span style="color: #000000;">;<br />
</span><span style="color: #008080;">&nbsp;24</span>&nbsp;<span style="color: #0000ff;">this</span><span style="color: #000000;">.addChild(cont);<br />
</span><span style="color: #008080;">&nbsp;25</span>&nbsp;<span style="color: #000000;"><br />
</span><span style="color: #008080;">&nbsp;26</span>&nbsp;<span style="color: #008000;">//</span><span style="color: #008000;">******设置一个3D场景，并设置好Camera的位置与角度</span><span style="color: #008000;"><br />
</span><span style="color: #008080;">&nbsp;27</span>&nbsp;<span style="color: #000000;">scene&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;Scene3D(cont);<br />
</span><span style="color: #008080;">&nbsp;28</span>&nbsp;<span style="color: #000000;">camera&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;FreeCamera3D();<br />
</span><span style="color: #008080;">&nbsp;29</span>&nbsp;<span style="color: #000000;">camera.z&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">1200</span><span style="color: #000000;">;<br />
</span><span style="color: #008080;">&nbsp;30</span>&nbsp;<span style="color: #000000;">camera.x&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">100</span><span style="color: #000000;">;<br />
</span><span style="color: #008080;">&nbsp;31</span>&nbsp;<span style="color: #000000;">camera.y&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">700</span><span style="color: #000000;">;<br />
</span><span style="color: #008080;">&nbsp;32</span>&nbsp;<span style="color: #000000;">camera.rotationX&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">-</span><span style="color: #000000;">30</span><span style="color: #000000;">;<br />
</span><span style="color: #008080;">&nbsp;33</span>&nbsp;<span style="color: #000000;">camera.rotationY&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">180</span><span style="color: #000000;">;<br />
</span><span style="color: #008080;">&nbsp;34</span>&nbsp;<span style="color: #000000;">camera.focus&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">100</span><span style="color: #000000;">;<br />
</span><span style="color: #008080;">&nbsp;35</span>&nbsp;<span style="color: #000000;">camera.zoom&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">10</span><span style="color: #000000;">;<br />
</span><span style="color: #008080;">&nbsp;36</span>&nbsp;<span style="color: #000000;"><br />
</span><span style="color: #008080;">&nbsp;37</span>&nbsp;<span style="color: #008000;">//</span><span style="color: #008000;">***********定义一个存放所有格子的数组</span><span style="color: #008000;"><br />
</span><span style="color: #008080;">&nbsp;38</span>&nbsp;<span style="color: #000000;">cubeArr&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;Array();<br />
</span><span style="color: #008080;">&nbsp;39</span>&nbsp;<span style="color: #000000;"><br />
</span><span style="color: #008080;">&nbsp;40</span>&nbsp;<span style="color: #008000;">//</span><span style="color: #008000;">定义一个颜色材质与材质列表，用于应用于格子的6个面的贴图</span><span style="color: #008000;"><br />
</span><span style="color: #008080;">&nbsp;41</span>&nbsp;<span style="color: #000000;">material&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;ColorMaterial(</span><span style="color: #000000;">0x096288</span><span style="color: #000000;">);<br />
</span><span style="color: #008080;">&nbsp;42</span>&nbsp;<span style="color: #000000;">ml&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;MaterialsList();<br />
</span><span style="color: #008080;">&nbsp;43</span>&nbsp;<span style="color: #000000;">ml.addMaterial(material,</span><span style="color: #000000;">"</span><span style="color: #000000;">front</span><span style="color: #000000;">"</span><span style="color: #000000;">);<br />
</span><span style="color: #008080;">&nbsp;44</span>&nbsp;<span style="color: #000000;">ml.addMaterial(material,</span><span style="color: #000000;">"</span><span style="color: #000000;">back</span><span style="color: #000000;">"</span><span style="color: #000000;">);<br />
</span><span style="color: #008080;">&nbsp;45</span>&nbsp;<span style="color: #000000;">ml.addMaterial(material,</span><span style="color: #000000;">"</span><span style="color: #000000;">top</span><span style="color: #000000;">"</span><span style="color: #000000;">);<br />
</span><span style="color: #008080;">&nbsp;46</span>&nbsp;<span style="color: #000000;">ml.addMaterial(material,</span><span style="color: #000000;">"</span><span style="color: #000000;">bottom</span><span style="color: #000000;">"</span><span style="color: #000000;">);<br />
</span><span style="color: #008080;">&nbsp;47</span>&nbsp;<span style="color: #000000;">ml.addMaterial(material,</span><span style="color: #000000;">"</span><span style="color: #000000;">left</span><span style="color: #000000;">"</span><span style="color: #000000;">);<br />
</span><span style="color: #008080;">&nbsp;48</span>&nbsp;<span style="color: #000000;">ml.addMaterial(material,</span><span style="color: #000000;">"</span><span style="color: #000000;">right</span><span style="color: #000000;">"</span><span style="color: #000000;">);<br />
</span><span style="color: #008080;">&nbsp;49</span>&nbsp;<span style="color: #000000;"><br />
</span><span style="color: #008080;">&nbsp;50</span>&nbsp;<span style="color: #000000;">var&nbsp;i:</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">;<br />
</span><span style="color: #008080;">&nbsp;51</span>&nbsp;<span style="color: #000000;">var&nbsp;j:</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">;<br />
</span><span style="color: #008080;">&nbsp;52</span>&nbsp;<span style="color: #000000;"><br />
</span><span style="color: #008080;">&nbsp;53</span>&nbsp;<span style="color: #008000;">//</span><span style="color: #008000;">生成64个小格子并排列好位置</span><span style="color: #008000;"><br />
</span><span style="color: #008080;">&nbsp;54</span>&nbsp;<span style="color: #0000ff;">for</span><span style="color: #000000;">(;i</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">64</span><span style="color: #000000;">;i</span><span style="color: #000000;">++</span><span style="color: #000000;">){<br />
</span><span style="color: #008080;">&nbsp;55</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;ml.addMaterial(</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;ColorMaterial(</span><span style="color: #000000;">0xB9DFCF</span><span style="color: #000000;">),</span><span style="color: #000000;">"</span><span style="color: #000000;">top</span><span style="color: #000000;">"</span><span style="color: #000000;">);<br />
</span><span style="color: #008080;">&nbsp;56</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;c:Cube&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;Cube(ml,</span><span style="color: #000000;">20</span><span style="color: #000000;">,</span><span style="color: #000000;">20</span><span style="color: #000000;">,</span><span style="color: #000000;">20</span><span style="color: #000000;">);<br />
</span><span style="color: #008080;">&nbsp;57</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;c.x&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;(i&nbsp;</span><span style="color: #000000;">%</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">8</span><span style="color: #000000;">)&nbsp;</span><span style="color: #000000;">*</span><span style="color: #000000;">&nbsp;(</span><span style="color: #000000;">20</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">+</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">5</span><span style="color: #000000;">);<br />
</span><span style="color: #008080;">&nbsp;58</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;c.z&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;(j&nbsp;</span><span style="color: #000000;">%</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">8</span><span style="color: #000000;">)&nbsp;</span><span style="color: #000000;">*</span><span style="color: #000000;">&nbsp;(</span><span style="color: #000000;">20</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">+</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">5</span><span style="color: #000000;">);<br />
</span><span style="color: #008080;">&nbsp;59</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;(i&nbsp;</span><span style="color: #000000;">%</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">8</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">==</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">)&nbsp;</span><span style="color: #000000;">?</span><span style="color: #000000;">&nbsp;j</span><span style="color: #000000;">++</span><span style="color: #000000;">:j</span><span style="color: #000000;">=</span><span style="color: #000000;">j;<br />
</span><span style="color: #008080;">&nbsp;60</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;cubeArr[i]&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;c;<br />
</span><span style="color: #008080;">&nbsp;61</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;scene.addChild(c);<br />
</span><span style="color: #008080;">&nbsp;62</span>&nbsp;<span style="color: #000000;">}<br />
</span><span style="color: #008080;">&nbsp;63</span>&nbsp;<span style="color: #000000;"><br />
</span><span style="color: #008080;">&nbsp;64</span>&nbsp;<span style="color: #008000;">//</span><span style="color: #008000;">创建一个面板，设置好位置放在小格子队列的下面（地板）</span><span style="color: #008000;"><br />
</span><span style="color: #008080;">&nbsp;65</span>&nbsp;<span style="color: #000000;">var&nbsp;plane:Plane&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;Plane(</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;WireframeMaterial(</span><span style="color: #000000;">0xaaaaaa</span><span style="color: #000000;">),</span><span style="color: #000000;">300</span><span style="color: #000000;">,</span><span style="color: #000000;">300</span><span style="color: #000000;">,</span><span style="color: #000000;">7</span><span style="color: #000000;">,</span><span style="color: #000000;">7</span><span style="color: #000000;">);<br />
</span><span style="color: #008080;">&nbsp;66</span>&nbsp;<span style="color: #000000;">plane.rotationX&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">-</span><span style="color: #000000;">90</span><span style="color: #000000;">;<br />
</span><span style="color: #008080;">&nbsp;67</span>&nbsp;<span style="color: #000000;">plane.y&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">-</span><span style="color: #000000;">50</span><span style="color: #000000;">;<br />
</span><span style="color: #008080;">&nbsp;68</span>&nbsp;<span style="color: #000000;">plane.x&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">70</span><span style="color: #000000;">;<br />
</span><span style="color: #008080;">&nbsp;69</span>&nbsp;<span style="color: #000000;">plane.z&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">60</span><span style="color: #000000;">;<br />
</span><span style="color: #008080;">&nbsp;70</span>&nbsp;<span style="color: #000000;">scene.addChild(plane);<br />
</span><span style="color: #008080;">&nbsp;71</span>&nbsp;<span style="color: #000000;"><br />
</span><span style="color: #008080;">&nbsp;72</span>&nbsp;<span style="color: #008000;">//</span><span style="color: #008000;">以上是3D部分，以下是声音部分<br />
</span><span style="color: #008080;">&nbsp;73</span>&nbsp;<span style="color: #008000;">//</span><span style="color: #008000;">建立一个字节数组用于存放获取到的频谱信息</span><span style="color: #008000;"><br />
</span><span style="color: #008080;">&nbsp;74</span>&nbsp;<span style="color: #000000;">var&nbsp;bArr:ByteArray&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;ByteArray();<br />
</span><span style="color: #008080;">&nbsp;75</span>&nbsp;<span style="color: #008000;">//</span><span style="color: #008000;">读取声音文件并播放</span><span style="color: #008000;"><br />
</span><span style="color: #008080;">&nbsp;76</span>&nbsp;<span style="color: #000000;">var&nbsp;req:URLRequest&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;URLRequest(</span><span style="color: #000000;">"</span><span style="color: #000000;">a.mp3</span><span style="color: #000000;">"</span><span style="color: #000000;">);<br />
</span><span style="color: #008080;">&nbsp;77</span>&nbsp;<span style="color: #000000;">var&nbsp;sound:Sound&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;Sound(req);<br />
</span><span style="color: #008080;">&nbsp;78</span>&nbsp;<span style="color: #000000;">sound.play();<br />
</span><span style="color: #008080;">&nbsp;79</span>&nbsp;<span style="color: #000000;"><br />
</span><span style="color: #008080;">&nbsp;80</span>&nbsp;<span style="color: #008000;">//</span><span style="color: #008000;">添加一个事件侦听器</span><span style="color: #008000;"><br />
</span><span style="color: #008080;">&nbsp;81</span>&nbsp;<span style="color: #0000ff;">this</span><span style="color: #000000;">.addEventListener(Event.ENTER_FRAME,onEnter);<br />
</span><span style="color: #008080;">&nbsp;82</span>&nbsp;<span style="color: #000000;"><br />
</span><span style="color: #008080;">&nbsp;83</span>&nbsp;<span style="color: #000000;">function&nbsp;onEnter(e:Event):</span><span style="color: #0000ff;">void</span><span style="color: #000000;">{<br />
</span><span style="color: #008080;">&nbsp;84</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">获取当前声音频谱，将数据存放在bArr里面。<br />
</span><span style="color: #008080;">&nbsp;85</span>&nbsp;<span style="color: #008000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">true为频谱模式，0为采样率代号</span><span style="color: #008000;"><br />
</span><span style="color: #008080;">&nbsp;86</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;SoundMixer.computeSpectrum(bArr,</span><span style="color: #0000ff;">true</span><span style="color: #000000;">,</span><span style="color: #000000;">0</span><span style="color: #000000;">);<br />
</span><span style="color: #008080;">&nbsp;87</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;i</span><span style="color: #000000;">=</span><span style="color: #000000;">0</span><span style="color: #000000;">;<br />
</span><span style="color: #008080;">&nbsp;88</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">读取前256个数据，即Left声道的频谱</span><span style="color: #008000;"><br />
</span><span style="color: #008080;">&nbsp;89</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">for</span><span style="color: #000000;">(;i</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">256</span><span style="color: #000000;">;i</span><span style="color: #000000;">++</span><span style="color: #000000;">){<br />
</span><span style="color: #008080;">&nbsp;90</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;temp:Number&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;bArr.readFloat();<br />
</span><span style="color: #008080;">&nbsp;91</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">间隔4个数据中获取一个显示</span><span style="color: #008000;"><br />
</span><span style="color: #008080;">&nbsp;92</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(i&nbsp;</span><span style="color: #000000;">%</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">4</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">==</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">){<br />
</span><span style="color: #008080;">&nbsp;93</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">从数组中获取相应的格子</span><span style="color: #008000;"><br />
</span><span style="color: #008080;">&nbsp;94</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;c:Cube&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;cubeArr[i</span><span style="color: #000000;">/</span><span style="color: #000000;">4</span><span style="color: #000000;">]&nbsp;as&nbsp;Cube;<br />
</span><span style="color: #008080;">&nbsp;95</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">设置格子在三维坐标中的高。<br />
</span><span style="color: #008080;">&nbsp;96</span>&nbsp;<span style="color: #008000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">由于频谱数据是0-1，所以将其放大100倍</span><span style="color: #008000;"><br />
</span><span style="color: #008080;">&nbsp;97</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;c.y&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;temp&nbsp;</span><span style="color: #000000;">*</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">100</span><span style="color: #000000;">;<br />
</span><span style="color: #008080;">&nbsp;98</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
</span><span style="color: #008080;">&nbsp;99</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;}<br />
</span><span style="color: #008080;">100</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">镜头旋转移动</span><span style="color: #008000;"><br />
</span><span style="color: #008080;">101</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;camera.moveLeft(</span><span style="color: #000000;">12</span><span style="color: #000000;">);<br />
</span><span style="color: #008080;">102</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;camera.rotationY&nbsp;</span><span style="color: #000000;">+=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0.6</span><span style="color: #000000;">;<br />
</span><span style="color: #008080;">103</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;scene.renderCamera(camera);<br />
</span><span style="color: #008080;">104</span>&nbsp;<span style="color: #000000;">}</span></div>
<br />
<br />
<br />
<img src ="http://www.blogjava.net/cph8066/aggbug/218402.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/cph8066/" target="_blank">姜大叔</a> 2008-07-29 14:16 <a href="http://www.blogjava.net/cph8066/archive/2008/07/29/218402.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[转载][翻译]Bitwise gems - fast integer math（AS3中的位操作）</title><link>http://www.blogjava.net/cph8066/archive/2008/07/29/218401.html</link><dc:creator>姜大叔</dc:creator><author>姜大叔</author><pubDate>Tue, 29 Jul 2008 06:14:00 GMT</pubDate><guid>http://www.blogjava.net/cph8066/archive/2008/07/29/218401.html</guid><wfw:comment>http://www.blogjava.net/cph8066/comments/218401.html</wfw:comment><comments>http://www.blogjava.net/cph8066/archive/2008/07/29/218401.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/cph8066/comments/commentRss/218401.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/cph8066/services/trackbacks/218401.html</trackback:ping><description><![CDATA[发现一篇好文，介绍AS3中常见的位运算技巧的。小弟勉强翻译一下，有错误还请指正。原文在这里<br />
<br />
在AS3中位操作是非常快的，这里列出一些可以加快某些计算速度的代码片段集合。我不会解释什么是位运算符，也不会解释怎么使用他们，只能告诉大家如果想清楚其中的原理这里有一篇极好的文章在gamedev.net上叫做 &#8216;Bitwise Operation in C' .<br />
<br />
如果你知道任何下边没有列出来的不错的技巧，请留下个评论或者给我发个邮件。所有这些都是基于AS3的<br />
<br />
[b]左位移几就相当于乘以2的几次方[/b]（ Left bit shifting to multiply by any power of two ）<br />
<br />
大约快了300%<br />
[code]<br />
x = x * 2;<br />
x = x * 64;<br />
//相当于：<br />
x = x &lt;&lt; 1;<br />
x = x &lt;&lt; 6;<br />
[/code]<br />
[b]右位移几就相当于除以2的几次方[/b]（Right bit shifting to divide by any power of two）<br />
大约快了350%<br />
[code]<br />
x = x / 2;<br />
x = x / 64;<br />
//相当于：<br />
x = x &gt;&gt; 1;<br />
x = x &gt;&gt; 6;<br />
[/code]<br />
[b]Number 到 integer(整数)转换[/b]<br />
<br />
在AS3中使用int(x)快了10% 。尽管如此位操作版本在AS2中工作的更好<br />
[code]<br />
x = int(1.232)<br />
//相当于：<br />
x = 1.232 &gt;&gt; 0;<br />
[/code]<br />
[b]提取颜色组成成分[/b]<br />
<br />
不完全是个技巧，是正常的方法 (Not really a trick, but the regular way of extracting values using bit masking and shifting.)<br />
[code]<br />
//24bit<br />
var color:uint = 0x336699;<br />
var r:uint = color &gt;&gt; 16;<br />
var g:uint = color &gt;&gt; 8 &amp; 0xFF;<br />
var b:uint = color &amp; 0xFF;<br />
//32bit<br />
var color:uint = 0xff336699;<br />
var a:uint = color &gt;&gt;&gt; 24;<br />
var r:uint = color &gt;&gt;&gt; 16 &amp; 0xFF;<br />
var g:uint = color &gt;&gt;&gt; 8 &amp; 0xFF;<br />
var b:uint = color &amp; 0xFF;<br />
[/code]<br />
[b]合并颜色组成成分[/b]<br />
<br />
替换值到正确位置并组合他们 (&#8216;Shift up&#8217; the values into the correct position and combine them.)<br />
[code]<br />
//24bit<br />
var r:uint = 0x33;<br />
var g:uint = 0x66;<br />
var b:uint = 0x99;<br />
var color:uint = r &lt;&lt; 16 | g &lt;&lt; 8 | b;<br />
//32bit<br />
var a:uint = 0xff;<br />
var r:uint = 0x33;<br />
var g:uint = 0x66;<br />
var b:uint = 0x99;<br />
var color:uint = a &lt;&lt; 24 | r &lt;&lt; 16 | g &lt;&lt; 8 | b;<br />
[/code]<br />
[b]使用异或运算交换整数而不需要用临时变量[/b]<br />
<br />
很可爱的技巧, 在本页顶端的链接里有详细的解释 ，这里快了 20%<br />
[code]<br />
var t:int = a;<br />
a = b;<br />
b = t;<br />
//相当于:<br />
a ^= b;<br />
b ^= a;<br />
a ^= b;<br />
[/code]<br />
[b]自增/自减(Increment/decrement)[b]<br />
<br />
这个比以前的慢不少，但却是个模糊你代码的好方法；-）<br />
[code]<br />
i = -~i; // i++<br />
i = ~-i; // i--<br />
[/code]<br />
[b]取反[/b]（Sign flipping using NOT or XOR）<br />
<br />
另人奇怪的是这个居然快了300%！<br />
[code]<br />
i = -i;<br />
//相当于：<br />
i = ~i + 1;<br />
//或者<br />
i = (i ^ -1) + 1;<br />
[/code]<br />
[b]使用bitwise AND快速取模[/b] （Fast modulo operation using bitwise AND）<br />
<br />
如果除数是2的次方，取模操作可以这样做：<br />
<br />
模数= 分子 &amp; (除数 - 1);<br />
<br />
这里大约快了600%<br />
[code]<br />
x = 131 % 4;<br />
//相当于：<br />
x = 131 &amp; (4 - 1);<br />
[/code]<br />
[b]检查是否为偶数[/b]（Check if an integer is even/uneven using bitwise AND）<br />
<br />
这里快了 600% <br />
[code]<br />
isEven = (i % 2) == 0;<br />
//相当于：<br />
isEven = (i &amp; 1) == 0;<br />
[/code]<br />
[b]绝对值[/b]<br />
<br />
忘记 Math.abs()吧 (Forget Math.abs() for time critical code.)<br />
<br />
version 1 比 Math.abs() 快了2500% ，version 2 居然比 version 1 又快了20% ！<br />
[code]<br />
//version 1<br />
i = x &lt; 0 ? -x : x;<br />
//version 2<br />
i = (x ^ (x &gt;&gt; 31)) - (x &gt;&gt; 31);<br />
[/code]<br />
<br />
<br />
<img src ="http://www.blogjava.net/cph8066/aggbug/218401.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/cph8066/" target="_blank">姜大叔</a> 2008-07-29 14:14 <a href="http://www.blogjava.net/cph8066/archive/2008/07/29/218401.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>一个不错的Flex效果！</title><link>http://www.blogjava.net/cph8066/archive/2008/07/29/218399.html</link><dc:creator>姜大叔</dc:creator><author>姜大叔</author><pubDate>Tue, 29 Jul 2008 06:13:00 GMT</pubDate><guid>http://www.blogjava.net/cph8066/archive/2008/07/29/218399.html</guid><wfw:comment>http://www.blogjava.net/cph8066/comments/218399.html</wfw:comment><comments>http://www.blogjava.net/cph8066/archive/2008/07/29/218399.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/cph8066/comments/commentRss/218399.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/cph8066/services/trackbacks/218399.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 好久没写文章了，上一个多月，很多很多烦人的事情，我也不想多说了，导致了没时间写文章了，不过今后的时间将会多点，所以在这段时间里打算多写点技术文章来填充一下Blog，主要是Flash与Java方面吧。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 今天做了一个小东西，一个会转动的3D盒子的效果，用于切换不同的内容面板，是一个不错的Flex效果，该东西是用了DistortionEffects做的，首先感谢Dreamer介绍了DistortionEffects这个东东，我也是在他Blog里看到，之后用来做点东西试试的。以下是Dreamer里的一编文章：[url=http://www.zhuoqun.net/html/y2007/492.html]DistortionEffects[/url]<br />
<br />
<object xcodebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab" height="400" width="400"  classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" >
<param name="Movie" value="/images/blogjava_net/cph8066/erer.swf" />
<param name="Quality" value="high"/>
<param name="wmode" value="transparent"/><embed src="http://www.blogjava.net/images/blogjava_net/cph8066/erer.swf" width="400" height="400"  quality="high" wmode="transparent"     type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" ></embed>
</object><br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 其实这个很简单，只是使用了DistortionEffects里面的CubeRotate效果，很炫的效果，致至该效果的实现，还有待看看它的源码进行研究研究！<br />
<br />
以下放出我的该小Flex的源码：<br />
[mDown=attachments/month_0712/j20071225181513.rar]点击下载此文件[/mDown]<br />
<img src ="http://www.blogjava.net/cph8066/aggbug/218399.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/cph8066/" target="_blank">姜大叔</a> 2008-07-29 14:13 <a href="http://www.blogjava.net/cph8066/archive/2008/07/29/218399.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[续] 初玩 Flex Chart，简单实例分析！</title><link>http://www.blogjava.net/cph8066/archive/2008/07/29/218396.html</link><dc:creator>姜大叔</dc:creator><author>姜大叔</author><pubDate>Tue, 29 Jul 2008 06:10:00 GMT</pubDate><guid>http://www.blogjava.net/cph8066/archive/2008/07/29/218396.html</guid><wfw:comment>http://www.blogjava.net/cph8066/comments/218396.html</wfw:comment><comments>http://www.blogjava.net/cph8066/archive/2008/07/29/218396.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/cph8066/comments/commentRss/218396.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/cph8066/services/trackbacks/218396.html</trackback:ping><description><![CDATA[本篇接着上一篇文章，上篇文章中，大家都看到最终效果了，这个例子很简单，我就粗略的讲解一下代码吧<br />
整个Flex程序，就两个Panel面板，将控件都排放好到Panel里面，之后定好相应的属性，我主要解析一下下面的代码：<br />
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #008080;">&nbsp;1</span>&nbsp;<span style="color: #000000;">&lt;</span><span style="color: #000000;">mx:Script</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">&nbsp;2</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">&lt;!</span><span style="color: #000000;">[CDATA[<br />
</span><span style="color: #008080;">&nbsp;3</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">导入需要用到的类</span><span style="color: #008000;"><br />
</span><span style="color: #008080;">&nbsp;4</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">import</span><span style="color: #000000;">&nbsp;mx.utils.Base64Encoder;<br />
</span><span style="color: #008080;">&nbsp;5</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">import</span><span style="color: #000000;">&nbsp;mx.collections.ArrayCollection;<br />
</span><span style="color: #008080;">&nbsp;6</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">import</span><span style="color: #000000;">&nbsp;mx.controls.Alert;<br />
</span><span style="color: #008080;">&nbsp;7</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">import</span><span style="color: #000000;">&nbsp;com.adobe.images.PNGEncoder;<br />
</span><span style="color: #008080;">&nbsp;8</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080;">&nbsp;9</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">这里定义一个ArrayCollection&nbsp;这就是PieChart控件所需要的dataProvider,并赋好初值</span><span style="color: #008000;"><br />
</span><span style="color: #008080;">10</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[Bindable]<br />
</span><span style="color: #008080;">11</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">private</span><span style="color: #000000;">&nbsp;var&nbsp;mydata:ArrayCollection&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;ArrayCollection([<br />
</span><span style="color: #008080;">12</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{name:&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">非常满意</span><span style="color: #000000;">"</span><span style="color: #000000;">,num:&nbsp;</span><span style="color: #000000;">1</span><span style="color: #000000;">},<br />
</span><span style="color: #008080;">13</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{name:&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">满意</span><span style="color: #000000;">"</span><span style="color: #000000;">,num:&nbsp;</span><span style="color: #000000;">1</span><span style="color: #000000;">},<br />
</span><span style="color: #008080;">14</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{name:&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">普通</span><span style="color: #000000;">"</span><span style="color: #000000;">,num:&nbsp;</span><span style="color: #000000;">1</span><span style="color: #000000;">},<br />
</span><span style="color: #008080;">15</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{name:&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">不满意</span><span style="color: #000000;">"</span><span style="color: #000000;">,num:&nbsp;</span><span style="color: #000000;">1</span><span style="color: #000000;">},<br />
</span><span style="color: #008080;">16</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{name:&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">非常不满意</span><span style="color: #000000;">"</span><span style="color: #000000;">,num:&nbsp;</span><span style="color: #000000;">1</span><span style="color: #000000;">}<br />
</span><span style="color: #008080;">17</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;]);<br />
</span><span style="color: #008080;">18</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080;">19</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">方法为PieChart控件自动调用的，是用于当图表要显示Label时，将会调用该方法，并传上相应的参数，这样，你就可以在该方法里自已处理好要显示的数据，再返回给Chart显示</span><span style="color: #008000;"><br />
</span><span style="color: #008080;">20</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">private</span><span style="color: #000000;">&nbsp;function&nbsp;showLabel(data:Object,&nbsp;field:String,&nbsp;index:Number,&nbsp;percentValue:Number):String{<br />
</span><span style="color: #008080;">21</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;data.name&nbsp;</span><span style="color: #000000;">+</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">:</span><span style="color: #000000;">"</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">+</span><span style="color: #000000;">&nbsp;data.num&nbsp;</span><span style="color: #000000;">+</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">\n</span><span style="color: #000000;">"</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">+</span><span style="color: #000000;">&nbsp;Math.round(percentValue)&nbsp;</span><span style="color: #000000;">+</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">%</span><span style="color: #000000;">"</span><span style="color: #000000;">;<br />
</span><span style="color: #008080;">22</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
</span><span style="color: #008080;">23</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080;">24</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">该方法是当点击&#8220;确定&#8221;按钮时调用的，用于改变图表数据的ArrayCollection里的数据，再更新图表显示</span><span style="color: #008000;"><br />
</span><span style="color: #008080;">25</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">private</span><span style="color: #000000;">&nbsp;function&nbsp;changeData(ent:Event):</span><span style="color: #0000ff;">void</span><span style="color: #000000;">{<br />
</span><span style="color: #008080;">26</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">定一个临时的集合用于放置数据</span><span style="color: #008000;"><br />
</span><span style="color: #008080;">27</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;temp:ArrayCollection&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;ArrayCollection();<br />
</span><span style="color: #008080;">28</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">判断用户所填的数据是否为空，如果为空的就不要加进集合里了，免得图表出现一些无谓的Label，下同</span><span style="color: #008000;"><br />
</span><span style="color: #008080;">29</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(resu0.text&nbsp;</span><span style="color: #000000;">!=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">""</span><span style="color: #000000;">){<br />
</span><span style="color: #008080;">30</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;temp.addItem({name:&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">非常满意</span><span style="color: #000000;">"</span><span style="color: #000000;">,num:&nbsp;resu0.text});<br />
</span><span style="color: #008080;">31</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
</span><span style="color: #008080;">32</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(resu1.text&nbsp;</span><span style="color: #000000;">!=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">""</span><span style="color: #000000;">){<br />
</span><span style="color: #008080;">33</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;temp.addItem({name:&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">满意</span><span style="color: #000000;">"</span><span style="color: #000000;">,num:&nbsp;resu1.text});<br />
</span><span style="color: #008080;">34</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
</span><span style="color: #008080;">35</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(resu2.text&nbsp;</span><span style="color: #000000;">!=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">""</span><span style="color: #000000;">){<br />
</span><span style="color: #008080;">36</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;temp.addItem({name:&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">普通</span><span style="color: #000000;">"</span><span style="color: #000000;">,num:&nbsp;resu2.text});<br />
</span><span style="color: #008080;">37</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
</span><span style="color: #008080;">38</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(resu3.text&nbsp;</span><span style="color: #000000;">!=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">""</span><span style="color: #000000;">){<br />
</span><span style="color: #008080;">39</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;temp.addItem({name:&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">不满意</span><span style="color: #000000;">"</span><span style="color: #000000;">,num:&nbsp;resu3.text});<br />
</span><span style="color: #008080;">40</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
</span><span style="color: #008080;">41</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(resu4.text&nbsp;</span><span style="color: #000000;">!=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">""</span><span style="color: #000000;">){<br />
</span><span style="color: #008080;">42</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;temp.addItem({name:&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">非常不满意</span><span style="color: #000000;">"</span><span style="color: #000000;">,num:&nbsp;resu4.text});<br />
</span><span style="color: #008080;">43</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
</span><span style="color: #008080;">44</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;panel1.title&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;subjectTitle.text;<br />
</span><span style="color: #008080;">45</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">/*</span><span style="color: #008000;"><br />
</span><span style="color: #008080;">46</span>&nbsp;<span style="color: #008000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mydata[0].num&nbsp;=&nbsp;resu0.text;<br />
</span><span style="color: #008080;">47</span>&nbsp;<span style="color: #008000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mydata[1].num&nbsp;=&nbsp;resu1.text;<br />
</span><span style="color: #008080;">48</span>&nbsp;<span style="color: #008000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mydata[2].num&nbsp;=&nbsp;resu2.text;<br />
</span><span style="color: #008080;">49</span>&nbsp;<span style="color: #008000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mydata[3].num&nbsp;=&nbsp;resu3.text;<br />
</span><span style="color: #008080;">50</span>&nbsp;<span style="color: #008000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mydata[4].num&nbsp;=&nbsp;resu4.text;<br />
</span><span style="color: #008080;">51</span>&nbsp;<span style="color: #008000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">*/</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">52</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pc.dataProvider&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;temp;<br />
</span><span style="color: #008080;">53</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
</span><span style="color: #008080;">54</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080;">55</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">这里是截图的方法函数，参照于国外某高手地Flex截图方面的代码</span><span style="color: #008000;"><br />
</span><span style="color: #008080;">56</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">private</span><span style="color: #000000;">&nbsp;function&nbsp;catchPic(ent:Event):</span><span style="color: #0000ff;">void</span><span style="color: #000000;">{<br />
</span><span style="color: #008080;">57</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">根据要截图的Panel的大小建立一个放置位图数据的BitmapData对象</span><span style="color: #008000;"><br />
</span><span style="color: #008080;">58</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;bitmapData:BitmapData&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;BitmapData(panel1.width,panel1.height,</span><span style="color: #0000ff;">true</span><span style="color: #000000;">,</span><span style="color: #000000;">0xffffff</span><span style="color: #000000;">);<br />
</span><span style="color: #008080;">59</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">用现时panel1对象的位图信息填充到bitmapData对象中<br />
</span><span style="color: #008080;">60</span>&nbsp;<span style="color: #008000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">由于每一个DisplayObject对象都有自已的用于显示的位图色彩信息，<br />
</span><span style="color: #008080;">61</span>&nbsp;<span style="color: #008000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">所以很多继承了DisplayObject的类都可以填充到bitmapData对象中处理，如模糊处理等</span><span style="color: #008000;"><br />
</span><span style="color: #008080;">62</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bitmapData.draw(panel1);<br />
</span><span style="color: #008080;">63</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">用PNGEncoder类对位图信息进行压缩转换处理才得以输出PNG图片格式数据</span><span style="color: #008000;"><br />
</span><span style="color: #008080;">64</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;bytes:ByteArray&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;PNGEncoder.encode(bitmapData);<br />
</span><span style="color: #008080;">65</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">再将数据进行编码，用于在JavaScript中向浏览器传播<br />
</span><span style="color: #008080;">66</span>&nbsp;<span style="color: #008000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">最后调用JavaScript来打开新窗口来显示图借数据</span><span style="color: #008000;"><br />
</span><span style="color: #008080;">67</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;b64encoder:Base64Encoder&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;Base64Encoder();<br />
</span><span style="color: #008080;">68</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;b64encoder.encodeBytes(bytes);<br />
</span><span style="color: #008080;">69</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ExternalInterface.call(</span><span style="color: #000000;">"</span><span style="color: #000000;">showPic</span><span style="color: #000000;">"</span><span style="color: #000000;">,b64encoder.flush(),panel1.width</span><span style="color: #000000;">+</span><span style="color: #000000;">25</span><span style="color: #000000;">,panel1.height</span><span style="color: #000000;">+</span><span style="color: #000000;">25</span><span style="color: #000000;">);<br />
</span><span style="color: #008080;">70</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
</span><span style="color: #008080;">71</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;]]</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">72</span>&nbsp;<span style="color: #000000;">&lt;/</span><span style="color: #000000;">mx:Script</span><span style="color: #000000;">&gt;</span></div>
<br />
<br />
JavaScript方面要写上以下函数：<br />
<br />
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #008080;">1</span>&nbsp;<span style="color: #000000;">function&nbsp;showPic(img,width,height){<br />
</span><span style="color: #008080;">2</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;window.open(</span><span style="color: #000000;">"</span><span style="color: #000000;">data:image/png;base64,</span><span style="color: #000000;">"</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">+</span><span style="color: #000000;">&nbsp;img,</span><span style="color: #000000;">""</span><span style="color: #000000;">,</span><span style="color: #000000;">"</span><span style="color: #000000;">width=</span><span style="color: #000000;">"</span><span style="color: #000000;">+</span><span style="color: #000000;">width</span><span style="color: #000000;">+</span><span style="color: #000000;">"</span><span style="color: #000000;">,height=</span><span style="color: #000000;">"</span><span style="color: #000000;">+</span><span style="color: #000000;">height</span><span style="color: #000000;">+</span><span style="color: #000000;">"</span><span style="color: #000000;">,resizable=1</span><span style="color: #000000;">"</span><span style="color: #000000;">);<br />
</span><span style="color: #008080;">3</span>&nbsp;<span style="color: #000000;">}</span></div>
<br />
<br />
<br />
以上有几点应该要注意：<br />
注意PieChart的dataProvider的写法，也就是ArrayCollection的写法，这与很多控件的dataProvider的都一样，比如DataGrid控件。<br />
注意，PNGEncoder类不是Flex原本自带的，是要另外自已下载的扩展包，在com.adobe.images里面，是Adobe发布的核心扩展类库，更多的类库，大家可以在网上找找。<br />
<br />
以下放出完整的源代码：[down=attachments/month_0710/92007102323188.rar]点击下载此文件[/down]<br />
<br />
<br />
<img src ="http://www.blogjava.net/cph8066/aggbug/218396.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/cph8066/" target="_blank">姜大叔</a> 2008-07-29 14:10 <a href="http://www.blogjava.net/cph8066/archive/2008/07/29/218396.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>初玩 Flex Chart，简单实例分析！</title><link>http://www.blogjava.net/cph8066/archive/2008/07/29/218395.html</link><dc:creator>姜大叔</dc:creator><author>姜大叔</author><pubDate>Tue, 29 Jul 2008 06:08:00 GMT</pubDate><guid>http://www.blogjava.net/cph8066/archive/2008/07/29/218395.html</guid><wfw:comment>http://www.blogjava.net/cph8066/comments/218395.html</wfw:comment><comments>http://www.blogjava.net/cph8066/archive/2008/07/29/218395.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/cph8066/comments/commentRss/218395.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/cph8066/services/trackbacks/218395.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 应朋友要求，做一个数据图表的东西，主要是用于将数据以图表的方式表示，以不至于用Excel看一大表格，里面密密麻麻的数字，所以，第一时间想到用Flex Chart玩玩，由于原本已有点Flex基础，So，Flex Chart也不是太难，而且效果满意漂亮，也就当作开拓该方面技术的练手之作吧，程序很简单，就在一边输入数据，另一边则显示该数据所表示的饼图图形，后来并加上了&#8220;生成图片&#8221;按钮，该功能是参照外国某位牛人所做的，不过就是该功能只支持FireFox。<br />
<br />
<img alt="" src="http://www.blogjava.net/images/blogjava_net/cph8066/o20071023114648.png" width="511" height="545" /><br />
<br />
[url=jiang/catch_chart/chart.html]可以去这里看看效果[/url]<br />
<br />
待会我整理好源代码，再放出源代码，并解析一下该程序。<br />
<br />
<br />
<img src ="http://www.blogjava.net/cph8066/aggbug/218395.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/cph8066/" target="_blank">姜大叔</a> 2008-07-29 14:08 <a href="http://www.blogjava.net/cph8066/archive/2008/07/29/218395.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Flex + PHP 的天气预报</title><link>http://www.blogjava.net/cph8066/archive/2008/07/29/218394.html</link><dc:creator>姜大叔</dc:creator><author>姜大叔</author><pubDate>Tue, 29 Jul 2008 06:07:00 GMT</pubDate><guid>http://www.blogjava.net/cph8066/archive/2008/07/29/218394.html</guid><wfw:comment>http://www.blogjava.net/cph8066/comments/218394.html</wfw:comment><comments>http://www.blogjava.net/cph8066/archive/2008/07/29/218394.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/cph8066/comments/commentRss/218394.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/cph8066/services/trackbacks/218394.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp; 这几天无聊着，打开163邮箱，看到右上角的天气信息，突然心血来潮，自已也做个天气信息的小模块放在Blog上，就是左边侧栏的那个，其实之前都做过，只不过是用Java来解析，Flex来显示，而已之前的那个是解析www.weathercn.com的信息的，但现在该站的天气页面改版了，所以不得不重新做，既然如此，就拿163的来做吧。原理都是一样，用PHP读取163的天气信息网页，再用正则表达式解析网页的内容，提取有用的天气信息，组织好成XML格式，之后Flex用WebService来读取该PHP，得到XML数据，再相应的显示。<br />
&nbsp;&nbsp;&nbsp; 其实这并不难，打开的我163邮箱，查看它的网页源码，经过一番的查找分析，找到它获取天气信息的网页：http://mimg.163.com/tianqi/city/59287.html&nbsp; 呵呵，还是Html的哦，网易的将动态的天气生成静态的页面，我们访问起来，也不太占服务器资源吧，因为天气也是经常访问的。看看源代码，就几行Html代码，正合我的需求，免得我的PHP分析大量的代码占点资源。不过有点要注意，网易把每个城市的代号生成一个页面，即是一个城市，一个天气页面，上面那个URL是广州的，就是说 59287 就是广州的城市代码，在PHP里访问时，要跟据用户选的是哪个城市，相对应的修改那个号码就行了，如：<br />
$url = "http://mimg.163.com/tianqi/city/".$_GET['city'].".html";<br />
这样，你访问PHP时，要传一个城市代码参数，至于网易定义的城市代码，我这里就不列出来了，太多太长了，也找了我不少时间。我放在Flex的源码里，可以下载我的源码看看。<br />
以下是PHP页面的代码：<br />
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #008080;">&nbsp;1</span>&nbsp;<span style="color: #000000;">&lt;?</span><span style="color: #000000;">php<br />
</span><span style="color: #008080;">&nbsp;2</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">include</span><span style="color: #000000;">(</span><span style="color: #000000;">"</span><span style="color: #000000;">class.Chinese.php</span><span style="color: #000000;">"</span><span style="color: #000000;">);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">#</span><span style="color: #008000;">导入字符集转换的类</span><span style="color: #008000;"><br />
</span><span style="color: #008080;">&nbsp;3</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #800080;">$codeTableDir</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">./config/</span><span style="color: #000000;">"</span><span style="color: #000000;">;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">#</span><span style="color: #008000;">指定字符码表的路径</span><span style="color: #008000;"><br />
</span><span style="color: #008080;">&nbsp;4</span>&nbsp;<span style="color: #000000;"><br />
</span><span style="color: #008080;">&nbsp;5</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #800080;">$url</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">http://mimg.163.com/tianqi/city/</span><span style="color: #000000;">"</span><span style="color: #000000;">.</span><span style="color: #800080;">$_GET</span><span style="color: #000000;">[</span><span style="color: #000000;">'</span><span style="color: #000000;">city</span><span style="color: #000000;">'</span><span style="color: #000000;">]</span><span style="color: #000000;">.</span><span style="color: #000000;">"</span><span style="color: #000000;">.html</span><span style="color: #000000;">"</span><span style="color: #000000;">;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">#</span><span style="color: #008000;">获取城市代码，组成完整的URL</span><span style="color: #008000;"><br />
</span><span style="color: #008080;">&nbsp;6</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080;">&nbsp;7</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #800080;">$fh</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #008080;">fopen</span><span style="color: #000000;">(</span><span style="color: #800080;">$url</span><span style="color: #000000;">,</span><span style="color: #000000;">'</span><span style="color: #000000;">r</span><span style="color: #000000;">'</span><span style="color: #000000;">);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">#</span><span style="color: #008000;">读取该URL获取内容</span><span style="color: #008000;"><br />
</span><span style="color: #008080;">&nbsp;8</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">while</span><span style="color: #000000;">(</span><span style="color: #000000;">!</span><span style="color: #008080;">feof</span><span style="color: #000000;">(</span><span style="color: #800080;">$fh</span><span style="color: #000000;">)){<br />
</span><span style="color: #008080;">&nbsp;9</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #800080;">$content</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">.=</span><span style="color: #000000;">&nbsp;</span><span style="color: #008080;">fread</span><span style="color: #000000;">(</span><span style="color: #800080;">$fh</span><span style="color: #000000;">,</span><span style="color: #000000;">128</span><span style="color: #000000;">);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">#</span><span style="color: #008000;">读取全部内容</span><span style="color: #008000;"><br />
</span><span style="color: #008080;">10</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;}<br />
</span><span style="color: #008080;">11</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #800080;">$content</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;Chinese(</span><span style="color: #000000;">"</span><span style="color: #000000;">GB2312</span><span style="color: #000000;">"</span><span style="color: #000000;">,</span><span style="color: #000000;">"</span><span style="color: #000000;">UTF8</span><span style="color: #000000;">"</span><span style="color: #000000;">,</span><span style="color: #800080;">$content</span><span style="color: #000000;">,</span><span style="color: #800080;">$codeTableDir</span><span style="color: #000000;">);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">#</span><span style="color: #008000;">转换字符码，GB转UTF8</span><span style="color: #008000;"><br />
</span><span style="color: #008080;">12</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #800080;">$content</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #800080;">$content</span><span style="color: #000000;">-&gt;</span><span style="color: #000000;">ConvertIT();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">#</span><span style="color: #008000;">转换</span><span style="color: #008000;"><br />
</span><span style="color: #008080;">13</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008080;">eregi</span><span style="color: #000000;">(</span><span style="color: #000000;">'</span><span style="color: #000000;">(&lt;span&nbsp;class="wetCityName"&gt;)([^/]*)(&lt;/span&gt;)</span><span style="color: #000000;">'</span><span style="color: #000000;">,</span><span style="color: #800080;">$content</span><span style="color: #000000;">,</span><span style="color: #800080;">$arr</span><span style="color: #000000;">);&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">#</span><span style="color: #008000;">找出表示城市的内容</span><span style="color: #008000;"><br />
</span><span style="color: #008080;">14</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #800080;">$city</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #800080;">$arr</span><span style="color: #000000;">[</span><span style="color: #000000;">2</span><span style="color: #000000;">];<br />
</span><span style="color: #008080;">15</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080;">16</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008080;">eregi</span><span style="color: #000000;">(</span><span style="color: #000000;">'</span><span style="color: #000000;">(&lt;span&nbsp;class="wetDate"&gt;)(.*)(&lt;/span&gt;&lt;/div&gt;)</span><span style="color: #000000;">'</span><span style="color: #000000;">,</span><span style="color: #800080;">$content</span><span style="color: #000000;">,</span><span style="color: #800080;">$arr</span><span style="color: #000000;">);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">#</span><span style="color: #008000;">找出表示日期的内容</span><span style="color: #008000;"><br />
</span><span style="color: #008080;">17</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #800080;">$date</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #800080;">$arr</span><span style="color: #000000;">[</span><span style="color: #000000;">2</span><span style="color: #000000;">];<br />
</span><span style="color: #008080;">18</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080;">19</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #800080;">$wea</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #008080;">split</span><span style="color: #000000;">(</span><span style="color: #000000;">'</span><span style="color: #000000;">txtAlgCen&nbsp;fRig&nbsp;handle</span><span style="color: #000000;">'</span><span style="color: #000000;">,</span><span style="color: #800080;">$content</span><span style="color: #000000;">);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">#</span><span style="color: #008000;">分开今天与明天</span><span style="color: #008000;"><br />
</span><span style="color: #008080;">20</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080;">21</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008080;">eregi</span><span style="color: #000000;">(</span><span style="color: #000000;">'</span><span style="color: #000000;">(&lt;div&nbsp;class="wetSts"&gt;)([^&lt;]*)(&lt;/div&gt;)</span><span style="color: #000000;">'</span><span style="color: #000000;">,</span><span style="color: #800080;">$wea</span><span style="color: #000000;">[</span><span style="color: #000000;">0</span><span style="color: #000000;">]</span><span style="color: #000000;">,</span><span style="color: #800080;">$arr</span><span style="color: #000000;">);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">#</span><span style="color: #008000;">找出表示今日天气的内容</span><span style="color: #008000;"><br />
</span><span style="color: #008080;">22</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #800080;">$info1</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #800080;">$arr</span><span style="color: #000000;">[</span><span style="color: #000000;">2</span><span style="color: #000000;">];<br />
</span><span style="color: #008080;">23</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008080;">eregi</span><span style="color: #000000;">(</span><span style="color: #000000;">'</span><span style="color: #000000;">(&lt;div&nbsp;class="wetSts"&gt;)([^&lt;]*)(&lt;/div&gt;)</span><span style="color: #000000;">'</span><span style="color: #000000;">,</span><span style="color: #800080;">$wea</span><span style="color: #000000;">[</span><span style="color: #000000;">1</span><span style="color: #000000;">]</span><span style="color: #000000;">,</span><span style="color: #800080;">$arr</span><span style="color: #000000;">);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">#</span><span style="color: #008000;">找出表示明日天气的内容&nbsp;&nbsp;&nbsp;下同</span><span style="color: #008000;"><br />
</span><span style="color: #008080;">24</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #800080;">$info2</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #800080;">$arr</span><span style="color: #000000;">[</span><span style="color: #000000;">2</span><span style="color: #000000;">];<br />
</span><span style="color: #008080;">25</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080;">26</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008080;">eregi</span><span style="color: #000000;">(</span><span style="color: #000000;">'</span><span style="color: #000000;">(&lt;/b&gt;)([^&lt;]*)(&lt;/div&gt;)</span><span style="color: #000000;">'</span><span style="color: #000000;">,</span><span style="color: #800080;">$wea</span><span style="color: #000000;">[</span><span style="color: #000000;">0</span><span style="color: #000000;">]</span><span style="color: #000000;">,</span><span style="color: #800080;">$arr</span><span style="color: #000000;">);<br />
</span><span style="color: #008080;">27</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #800080;">$temp1</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #800080;">$arr</span><span style="color: #000000;">[</span><span style="color: #000000;">2</span><span style="color: #000000;">];<br />
</span><span style="color: #008080;">28</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008080;">eregi</span><span style="color: #000000;">(</span><span style="color: #000000;">'</span><span style="color: #000000;">(&lt;/b&gt;)([^&lt;]*)(&lt;/div&gt;)</span><span style="color: #000000;">'</span><span style="color: #000000;">,</span><span style="color: #800080;">$wea</span><span style="color: #000000;">[</span><span style="color: #000000;">1</span><span style="color: #000000;">]</span><span style="color: #000000;">,</span><span style="color: #800080;">$arr</span><span style="color: #000000;">);<br />
</span><span style="color: #008080;">29</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #800080;">$temp2</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #800080;">$arr</span><span style="color: #000000;">[</span><span style="color: #000000;">2</span><span style="color: #000000;">];<br />
</span><span style="color: #008080;">30</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080;">31</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008080;">eregi</span><span style="color: #000000;">(</span><span style="color: #000000;">'</span><span style="color: #000000;">(class="wetDico&nbsp;)(.*)("&gt;&lt;/div&gt;)</span><span style="color: #000000;">'</span><span style="color: #000000;">,</span><span style="color: #800080;">$wea</span><span style="color: #000000;">[</span><span style="color: #000000;">0</span><span style="color: #000000;">]</span><span style="color: #000000;">,</span><span style="color: #800080;">$arr</span><span style="color: #000000;">);<br />
</span><span style="color: #008080;">32</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #800080;">$pic1</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #800080;">$arr</span><span style="color: #000000;">[</span><span style="color: #000000;">2</span><span style="color: #000000;">];<br />
</span><span style="color: #008080;">33</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008080;">eregi</span><span style="color: #000000;">(</span><span style="color: #000000;">'</span><span style="color: #000000;">(class="wetDico&nbsp;)(.*)("&gt;&lt;/div&gt;)</span><span style="color: #000000;">'</span><span style="color: #000000;">,</span><span style="color: #800080;">$wea</span><span style="color: #000000;">[</span><span style="color: #000000;">1</span><span style="color: #000000;">]</span><span style="color: #000000;">,</span><span style="color: #800080;">$arr</span><span style="color: #000000;">);<br />
</span><span style="color: #008080;">34</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #800080;">$pic2</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #800080;">$arr</span><span style="color: #000000;">[</span><span style="color: #000000;">2</span><span style="color: #000000;">];<br />
</span><span style="color: #008080;">35</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080;">36</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">echo</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">&lt;?xml&nbsp;version=\</span><span style="color: #000000;">"</span><span style="color: #000000;">1.0</span><span style="color: #000000;">\</span><span style="color: #000000;">"</span><span style="color: #000000;">&nbsp;encoding=\</span><span style="color: #000000;">"</span><span style="color: #000000;">utf</span><span style="color: #000000;">-</span><span style="color: #000000;">8</span><span style="color: #000000;">\</span><span style="color: #000000;">"</span><span style="color: #000000;">&nbsp;?&gt;</span><span style="color: #000000;">"</span><span style="color: #000000;">;<br />
</span><span style="color: #008080;">37</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">echo</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">\n</span><span style="color: #000000;">"</span><span style="color: #000000;">;<br />
</span><span style="color: #008080;">38</span>&nbsp;<span style="color: #000000;">?&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">39</span>&nbsp;<span style="color: #000000;">&lt;</span><span style="color: #000000;">weather</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">40</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">city</span><span style="color: #000000;">&gt;&lt;?=</span><span style="color: #000000;">&nbsp;</span><span style="color: #800080;">$city</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">?&gt;&lt;/</span><span style="color: #000000;">city</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">41</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #008080;">date</span><span style="color: #000000;">&gt;&lt;?=</span><span style="color: #000000;">&nbsp;</span><span style="color: #800080;">$date</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">?&gt;&lt;/</span><span style="color: #008080;">date</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">42</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">today</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">43</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">wea</span><span style="color: #000000;">&gt;&lt;?=</span><span style="color: #000000;">&nbsp;</span><span style="color: #800080;">$info1</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">?&gt;&lt;/</span><span style="color: #000000;">wea</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">44</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">temp</span><span style="color: #000000;">&gt;&lt;?=</span><span style="color: #000000;">&nbsp;</span><span style="color: #800080;">$temp1</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">?&gt;&lt;/</span><span style="color: #000000;">temp</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">45</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">pic</span><span style="color: #000000;">&gt;&lt;?=</span><span style="color: #000000;">&nbsp;</span><span style="color: #800080;">$pic1</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">?&gt;&lt;/</span><span style="color: #000000;">pic</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">46</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">&lt;/</span><span style="color: #000000;">today</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">47</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">tomorrow</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">48</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">wea</span><span style="color: #000000;">&gt;&lt;?=</span><span style="color: #000000;">&nbsp;</span><span style="color: #800080;">$info2</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">?&gt;&lt;/</span><span style="color: #000000;">wea</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">49</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">temp</span><span style="color: #000000;">&gt;&lt;?=</span><span style="color: #000000;">&nbsp;</span><span style="color: #800080;">$temp2</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">?&gt;&lt;/</span><span style="color: #000000;">temp</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">50</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">pic</span><span style="color: #000000;">&gt;&lt;?=</span><span style="color: #000000;">&nbsp;</span><span style="color: #800080;">$pic2</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">?&gt;&lt;/</span><span style="color: #000000;">pic</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">51</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">&lt;/</span><span style="color: #000000;">tomorrow</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">52</span>&nbsp;<span style="color: #000000;">&lt;/</span><span style="color: #000000;">weather</span><span style="color: #000000;">&gt;</span></div>
<br />
以上有几点要注意：<br />
&nbsp;&nbsp;&nbsp; 1。由于网易里的网页是用GB2312编码的，而Flex里接收的XML要UTF-8编码才会正确读出，所以要将获取的网易里的数据进行转码，这问题刚开始时，老是乱码，搞到心烦，后来发现网易的Html的头信息里 发现是GB2312的编码，郁闷了半天，之后上网找了个中文转码的类，下载来直接套用。<br />
&nbsp;&nbsp;&nbsp; 2。获取回来的天气信息的Html是分今天与明天的天气信息，而里面的格式也是一样的，所以，用正则查找时，只找到最先的那个，所以要先找个今天与明天的分界点，将其分离开来再各自解析里面的内容，得出今天的天气与明天的天气。<br />
&nbsp;&nbsp;&nbsp; 3。写输出XML时，格式要正确，不然Flex里读取会有麻烦，还有，encoding一定要是UTF-8，还要将该PHP文件保存成UTF-8格式，我用DW写该PHP时，因为我的DW新建文件时，默认是ISO8859-1的，所以要将其文档编码格式改为UTF-8来保存。<br />
<br />
PHP完工之后，来到Flex这边，画好界面，添加代码如下：<br />
先加一个HttpService标签 ：<br />
&lt;mx:HTTPService id="hs" showBusyCursor="true" method="GET" result="{hsResult(event);}" fault="{hsFault(event);}" /&gt;<br />
（事件响应方法我就不在这里贴出来了，可下载源码看）<br />
当下拉选框选中城市之后，判断用户选中的是哪个城市，再对照该城市的代号，组合成URL<br />
hs.url = "http://www.jiangzone.com.cn/jiang/weather/weather.php?city=" + cityvalues[i];<br />
hs.send();<br />
结果返回时，再相应的赋值：<br />
lblCity.text = event.result.weather.city;<br />
lblDate.text = event.result.weather.date;<br />
lblWea.text = event.result.weather.today.wea;<br />
weather对应XML里的&lt;weather&gt;根标签，city对应XML里的&lt;city&gt;标签。<br />
<br />
OK，修改一下，大功告成！<br />
以下是源码：<br />
<br />
[down=attachments/month_0709/t2007916122822.rar]点击下载此文件[/down]<br />
<br />
<br />
<img src ="http://www.blogjava.net/cph8066/aggbug/218394.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/cph8066/" target="_blank">姜大叔</a> 2008-07-29 14:07 <a href="http://www.blogjava.net/cph8066/archive/2008/07/29/218394.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[转载] 使用amfphp1.9beta+flash9(as3)+corelib保存图片</title><link>http://www.blogjava.net/cph8066/archive/2008/07/29/218392.html</link><dc:creator>姜大叔</dc:creator><author>姜大叔</author><pubDate>Tue, 29 Jul 2008 06:05:00 GMT</pubDate><guid>http://www.blogjava.net/cph8066/archive/2008/07/29/218392.html</guid><wfw:comment>http://www.blogjava.net/cph8066/comments/218392.html</wfw:comment><comments>http://www.blogjava.net/cph8066/archive/2008/07/29/218392.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/cph8066/comments/commentRss/218392.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/cph8066/services/trackbacks/218392.html</trackback:ping><description><![CDATA[adobe的一些as3类库提供给google code(http://actionscript3libraries.riaforge.org/)可以随意下载...<br />
其中的as3corelib里面包含image的png和jpg类和json(序列化数据)类包.<br />
<br />
同时amfphp1.9beta的发布可以让你用remoting来传递amf3格式的数据.<br />
<br />
那么有了这两个条件我们就可以用他们来直接生成png和jpg格式的图片...<br />
<br />
使用方法也是比较简单,使用前面我提供的方法可以很方便的实现...<br />
<br />
<br />
as3corelib里面的png和jpg类<br />
<br />
[down=attachments/month_0709/r2007917165754.rar]点击下载此文件[/down]<br />
<br />
as代码:<br />
//------------------------------------------------------------------------------------<br />
//在舞台上放一个mc名字为a,mc包含一些随意的图形<br />
import flash.net.*;<br />
import flash.display.*;<br />
var hostName:String = "http://localhost/amfphp/";<br />
var gatewayUrl:String = hostName+"gateway.php";<br />
////////////////////////////<br />
var bpd:BitmapData = new BitmapData(a.width, a.height);<br />
bpd.draw(a);<br />
//var jpegEnc:JPEGEncoder = new JPEGEncoder(80);<br />
//var dat:ByteArray = jpegEnc.encode(bpd);<br />
var dat:ByteArray = PNGEncoder.encode(bpd);<br />
//<br />
var nc:NetConnection = new NetConnection();<br />
//nc.objectEncoding = 0;<br />
nc.connect(gatewayUrl);<br />
//<br />
nc.call("SavePic.save",new Responder(onResult,onFault),dat);<br />
//nc.call("SavePic.test",new Responder(onResult,onFault),"h..roading");<br />
/////////////////////////////<br />
function onResult(re:Object)<br />
{<br />
&nbsp;trace(re);<br />
}<br />
function onFault(re:Object)<br />
{<br />
&nbsp;trace(re);<br />
&nbsp;for(var i in re)<br />
&nbsp;trace(i+"=&gt;"+re[i]);<br />
}<br />
//----------------------------------------------------------------------------------------------<br />
<br />
<br />
php代码:<br />
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #008080;">&nbsp;1</span>&nbsp;<span style="color: #008000;">//</span><span style="color: #008000;">-----------------------------------------------------------------------------------------------</span><span style="color: #008000;"><br />
</span><span style="color: #008080;">&nbsp;2</span>&nbsp;<span style="color: #000000;">&lt;?</span><span style="color: #000000;">php<br />
</span><span style="color: #008080;">&nbsp;3</span>&nbsp;<span style="color: #000000;"><br />
</span><span style="color: #008080;">&nbsp;4</span>&nbsp;<span style="color: #0000ff;">class</span><span style="color: #000000;">&nbsp;SavePic<br />
</span><span style="color: #008080;">&nbsp;5</span>&nbsp;<span style="color: #000000;">{<br />
</span><span style="color: #008080;">&nbsp;6</span>&nbsp;<span style="color: #000000;"><br />
</span><span style="color: #008080;">&nbsp;7</span>&nbsp;<span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">function</span><span style="color: #000000;">&nbsp;Tuya()<br />
</span><span style="color: #008080;">&nbsp;8</span>&nbsp;<span style="color: #000000;">&nbsp;{<br />
</span><span style="color: #008080;">&nbsp;9</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;</span><span style="color: #800080;">$this</span><span style="color: #000000;">-&gt;</span><span style="color: #000000;">methodTable&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">array</span><span style="color: #000000;">(<br />
</span><span style="color: #008080;">10</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">save</span><span style="color: #000000;">"</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">=&gt;</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">array</span><span style="color: #000000;">(<br />
</span><span style="color: #008080;">11</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">access</span><span style="color: #000000;">"</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">=&gt;</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">remote</span><span style="color: #000000;">"</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">12</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;)</span><span style="color: #000000;">,</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">13</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">test</span><span style="color: #000000;">"</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">=&gt;</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">array</span><span style="color: #000000;">(<br />
</span><span style="color: #008080;">14</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">access</span><span style="color: #000000;">"</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">=&gt;</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">remote</span><span style="color: #000000;">"</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">15</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;)<br />
</span><span style="color: #008080;">16</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;);<br />
</span><span style="color: #008080;">17</span>&nbsp;<span style="color: #000000;">&nbsp;}<br />
</span><span style="color: #008080;">18</span>&nbsp;<span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">function</span><span style="color: #000000;">&nbsp;test(</span><span style="color: #800080;">$str</span><span style="color: #000000;">)<br />
</span><span style="color: #008080;">19</span>&nbsp;<span style="color: #000000;">&nbsp;{<br />
</span><span style="color: #008080;">20</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;</span><span style="color: #800080;">$str</span><span style="color: #000000;">;<br />
</span><span style="color: #008080;">21</span>&nbsp;<span style="color: #000000;"><br />
</span><span style="color: #008080;">22</span>&nbsp;<span style="color: #000000;"><br />
</span><span style="color: #008080;">23</span>&nbsp;<span style="color: #000000;">&nbsp;}<br />
</span><span style="color: #008080;">24</span>&nbsp;<span style="color: #000000;"><br />
</span><span style="color: #008080;">25</span>&nbsp;<span style="color: #000000;"><br />
</span><span style="color: #008080;">26</span>&nbsp;<span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">function</span><span style="color: #000000;">&nbsp;save(</span><span style="color: #800080;">$data</span><span style="color: #000000;">)<br />
</span><span style="color: #008080;">27</span>&nbsp;<span style="color: #000000;">&nbsp;{<br />
</span><span style="color: #008080;">28</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;</span><span style="color: #800080;">$name</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #008080;">time</span><span style="color: #000000;">()</span><span style="color: #000000;">.</span><span style="color: #000000;">'</span><span style="color: #000000;">.jpg</span><span style="color: #000000;">'</span><span style="color: #000000;">;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">png</span><span style="color: #008000;"><br />
</span><span style="color: #008080;">29</span>&nbsp;<span style="color: #000000;">&nbsp;<br />
</span><span style="color: #008080;">30</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;</span><span style="color: #800080;">$im</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #008080;">fopen</span><span style="color: #000000;">(</span><span style="color: #800080;">$name</span><span style="color: #000000;">,</span><span style="color: #000000;">'</span><span style="color: #000000;">a</span><span style="color: #000000;">'</span><span style="color: #000000;">);<br />
</span><span style="color: #008080;">31</span>&nbsp;<span style="color: #000000;"><br />
</span><span style="color: #008080;">32</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;</span><span style="color: #008080;">fwrite</span><span style="color: #000000;">(</span><span style="color: #800080;">$im</span><span style="color: #000000;">,</span><span style="color: #800080;">$data</span><span style="color: #000000;">);<br />
</span><span style="color: #008080;">33</span>&nbsp;<span style="color: #000000;">&nbsp;<br />
</span><span style="color: #008080;">34</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;</span><span style="color: #008080;">fclose</span><span style="color: #000000;">(</span><span style="color: #800080;">$im</span><span style="color: #000000;">);<br />
</span><span style="color: #008080;">35</span>&nbsp;<span style="color: #000000;"><br />
</span><span style="color: #008080;">36</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;</span><span style="color: #800080;">$name</span><span style="color: #000000;">;<br />
</span><span style="color: #008080;">37</span>&nbsp;<span style="color: #000000;">&nbsp;}<br />
</span><span style="color: #008080;">38</span>&nbsp;<span style="color: #000000;">}<br />
</span><span style="color: #008080;">39</span>&nbsp;<span style="color: #000000;">?&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">40</span>&nbsp;<span style="color: #000000;"><br />
</span><span style="color: #008080;">41</span>&nbsp;</div>
<br />
<img src ="http://www.blogjava.net/cph8066/aggbug/218392.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/cph8066/" target="_blank">姜大叔</a> 2008-07-29 14:05 <a href="http://www.blogjava.net/cph8066/archive/2008/07/29/218392.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>