<?xml version="1.0" encoding="gb2312"?>
<rss version="2.0">
<channel>
<title><![CDATA[Andy]]></title>
        <image>
        <title>http://hi.baidu.com</title>
        <link>http://hi.baidu.com</link>
        <url>http://img.baidu.com/img/logo-hi.gif</url>
        </image>
<description><![CDATA[结交天下的好朋友们 互相交流 心灵的沟通]]></description>
<link>http://hi.baidu.com/andy%5Ftj</link>
<language>zh-cn</language>
<generator>www.baidu.com</generator>
<ttl>5</ttl>


<item>
        <title><![CDATA[[转]Flex编译参数]]></title>
        <link><![CDATA[http://hi.baidu.com/andy%5Ftj/blog/item/37f5abad2a90b1034b36d6e8.html]]></link>
        <description><![CDATA[
		
		在介绍这些参数之前，先要介绍一个工具：mxmlc.exe。<br>
mxmlc是Flex SDK里面的一个重要的工具：编译器，也就是无论是Flash Builder（Flex Builder） IDE、还是plug-in形式的Flash Builder（Flex Builder）在编译Flex Project的时候，都会自动调用mxmlc来完成我们的编译任务。<br>
而由于Adobe那边可以直接下载Flex SDK，因此如果是此种方式的话，则需要手动编译你的MXML文件了。<br>
<br>
mxmlc.exe的地址：<br>
Flex SDK mxmlc path：<br>
{OS}:\FLexSDK\bin\mxmlc.exe<br>
<br>
Flash Builder（Flex Builder） mxmlc path：<br>
{OS}:\.....\sdks\4.0.0\bin\mxmlc.exe<br>
<br>
具体用法：<br>
从doc里面进入到mxmlc.exe所在目录，然后输入如下内容：<br>
mxmlc x:/test.mxml<br>
mxmlc x:/test.as<br>
上述两个内容分别是对text.mxml和test.as进行编译。同时上述的写法也是最简答的一种，也就是不加入任何参数的形式。<br>
<br>
下面的列表提供了mxmlc的一些可选参数：
<div style="margin-top: 0px; margin-bottom: 0px">
<div style="margin-top: 0px; margin-bottom: 0px">
<table style="font-size: 1em; border-collapse: collapse" bordercolor="#000000" cellspacing="0" cellpadding="3" width="100%" border="1">
    <tbody>
        <tr style="text-align: left">
            <td width="15%"><strong>属性</strong></td>
            <td width="50%"><strong>描述</strong></td>
        </tr>
        <tr style="text-align: left">
            <td width="15%">accessible=true|false</td>
            <td width="50%">是否具有可理解性</td>
        </tr>
        <tr style="text-align: left">
            <td width="15%">actionscript-file-encoding</td>
            <td width="50%">设置文件编码</td>
        </tr>
        <tr style="text-align: left">
            <td width="15%">advanced | mxmlc -help advanced</td>
            <td width="50%">检索mxmlc高级参数</td>
        </tr>
        <tr style="text-align: left">
            <td width="15%">allow-source-path-overlap=true|false</td>
            <td width="50%">
            <div style="margin-top: 0px; margin-bottom: 0px">验证source-path中定义的路径是否出现重叠，出现互相包含的现象</div>
            <div style="margin-top: 0px; margin-bottom: 0px"> </div>
            </td>
        </tr>
        <tr style="text-align: left">
            <td width="15%">
            <div style="margin-top: 0px; margin-bottom: 0px">as3=true|false</div>
            </td>
            <td width="50%">是否使用as3对象模型，默认为ture，如果选false，则es一定要定义为true</td>
        </tr>
        <tr style="text-align: left">
            <td width="15%">
            <div style="margin-top: 0px; margin-bottom: 0px">benchmark=true|false</div>
            </td>
            <td width="50%">是否输出编译时期的详细内容，默认是true</td>
        </tr>
        <tr style="text-align: left">
            <td width="15%">
            <div style="margin-top: 0px; margin-bottom: 0px">context-root</div>
            <div style="margin-top: 0px; margin-bottom: 0px">context-path</div>
            </td>
            <td width="50%">
            <div style="margin-top: 0px; margin-bottom: 0px">设置flex-services.xml中的{context.root}，如果没有详细定义，那flex将用空值。</div>
            </td>
        </tr>
        <tr style="text-align: left">
            <td width="15%">
            <div style="margin-top: 0px; margin-bottom: 0px">contributor name</div>
            </td>
            <td width="50%"> </td>
        </tr>
        <tr style="text-align: left">
            <td width="15%">
            <div style="margin-top: 0px; margin-bottom: 0px">creator name</div>
            </td>
            <td width="50%">
            <div style="margin-top: 0px; margin-bottom: 0px">添加到swf文件里，name是作者的名字</div>
            </td>
        </tr>
        <tr style="text-align: left">
            <td width="15%">
            <div style="margin-top: 0px; margin-bottom: 0px">date text</div>
            </td>
            <td width="50%"> </td>
        </tr>
        <tr style="text-align: left">
            <td width="15%">
            <div style="margin-top: 0px; margin-bottom: 0px">debug=true|false</div>
            </td>
            <td width="50%">是否可以进行调试</td>
        </tr>
        <tr style="text-align: left">
            <td width="15%">
            <div style="margin-top: 0px; margin-bottom: 0px">debug-password string</div>
            </td>
            <td width="50%">远程调试用，设置密码</td>
        </tr>
        <tr style="text-align: left">
            <td width="15%">
            <div style="margin-top: 0px; margin-bottom: 0px">default-background-color int</div>
            </td>
            <td width="50%">
            <div style="margin-top: 0px; margin-bottom: 0px">默认背景颜色</div>
            </td>
        </tr>
        <tr style="text-align: left">
            <td width="15%">
            <div style="margin-top: 0px; margin-bottom: 0px">default-frame-rate int</div>
            </td>
            <td width="50%">
            <div style="margin-top: 0px; margin-bottom: 0px">设置帧数，默认为24</div>
            </td>
        </tr>
        <tr style="text-align: left">
            <td width="15%">
            <div style="margin-top: 0px; margin-bottom: 0px">default-script-limits</div>
            </td>
            <td width="50%">
            <div style="margin-top: 0px; margin-bottom: 0px">定义应用脚本程序的执行限制</div>
            </td>
        </tr>
        <tr style="text-align: left">
            <td width="15%">
            <div style="margin-top: 0px; margin-bottom: 0px">max-recursion-depth</div>
            </td>
            <td width="50%">
            <div style="margin-top: 0px; margin-bottom: 0px">最大的递归默认是：1000</div>
            </td>
        </tr>
        <tr style="text-align: left">
            <td width="15%">
            <div style="margin-top: 0px; margin-bottom: 0px">max-execution-time</div>
            </td>
            <td width="50%">
            <div style="margin-top: 0px; margin-bottom: 0px">最大的执行时间默认是：60</div>
            </td>
        </tr>
        <tr style="text-align: left">
            <td width="15%">
            <div style="margin-top: 0px; margin-bottom: 0px">default-size width height</div>
            </td>
            <td width="50%">
            <div style="margin-top: 0px; margin-bottom: 0px">设置应用程序的大小</div>
            </td>
        </tr>
        <tr style="text-align: left">
            <td width="15%">
            <div style="margin-top: 0px; margin-bottom: 0px">defaults-css-url string</div>
            </td>
            <td width="50%">
            <div style="margin-top: 0px; margin-bottom: 0px">设置css的路径</div>
            </td>
        </tr>
        <tr style="text-align: left">
            <td width="15%">
            <div style="margin-top: 0px; margin-bottom: 0px">description text</div>
            </td>
            <td width="50%">
            <div style="margin-top: 0px; margin-bottom: 0px">添加到swf文件里的描述内容</div>
            </td>
        </tr>
        <tr style="text-align: left">
            <td width="15%">
            <div style="margin-top: 0px; margin-bottom: 0px">dump-config filename</div>
            </td>
            <td width="50%">
            <div style="margin-top: 0px; margin-bottom: 0px"> </div>
            </td>
        </tr>
        <tr style="text-align: left">
            <td width="15%">
            <div style="margin-top: 0px; margin-bottom: 0px">es=true|false</div>
            </td>
            <td width="50%"> </td>
        </tr>
        <tr style="text-align: left">
            <td width="15%">
            <div style="margin-top: 0px; margin-bottom: 0px">externs symbol [...]</div>
            </td>
            <td width="50%"> </td>
        </tr>
        <tr style="text-align: left">
            <td width="15%">
            <div style="margin-top: 0px; margin-bottom: 0px">external-library-path path-element [...]</div>
            </td>
            <td width="50%"> </td>
        </tr>
        <tr style="text-align: left">
            <td width="15%">
            <div style="margin-top: 0px; margin-bottom: 0px">file-specs path-element [...]</div>
            </td>
            <td width="50%">
            <div style="margin-top: 0px; margin-bottom: 0px"> </div>
            </td>
        </tr>
        <tr style="text-align: left">
            <td width="15%">
            <div style="margin-top: 0px; margin-bottom: 0px">fonts.languages.language-range lang range</div>
            </td>
            <td width="50%">
            <div style="margin-top: 0px; margin-bottom: 0px">指定 Unicode编码语言的范围</div>
            </td>
        </tr>
        <tr style="text-align: left">
            <td width="15%">
            <div style="margin-top: 0px; margin-bottom: 0px">fonts.managers manager-class [...]</div>
            </td>
            <td width="50%">
            <div style="margin-top: 0px; margin-bottom: 0px">字体管理器</div>
            </td>
        </tr>
        <tr style="text-align: left">
            <td width="15%">
            <div style="margin-top: 0px; margin-bottom: 0px">fonts.max-cached-fonts string</div>
            </td>
            <td width="50%">
            <div style="margin-top: 0px; margin-bottom: 0px">在服务器缓存上可以保存的最大字体数</div>
            </td>
        </tr>
        <tr style="text-align: left">
            <td width="15%">
            <div style="margin-top: 0px; margin-bottom: 0px">fonts.max-glyphs-per-face string</div>
            </td>
            <td width="50%">最大限度的字符缓存</td>
        </tr>
        <tr style="text-align: left">
            <td width="15%">
            <div style="margin-top: 0px; margin-bottom: 0px">frames.frame label class name [...]</div>
            </td>
            <td width="50%"> </td>
        </tr>
        <tr style="text-align: left">
            <td width="15%">
            <div style="margin-top: 0px; margin-bottom: 0px">generate-frame-loader=true|false</div>
            </td>
            <td width="50%">绑定到默认的loader类上</td>
        </tr>
        <tr style="text-align: left">
            <td width="15%">
            <div style="margin-top: 0px; margin-bottom: 0px">headless-server=true|false</div>
            </td>
            <td width="50%">能否设置编译器的执行头文件</td>
        </tr>
        <tr style="text-align: left">
            <td width="15%">
            <div style="margin-top: 0px; margin-bottom: 0px">help</div>
            </td>
            <td width="50%">帮助</td>
        </tr>
        <tr style="text-align: left">
            <td width="15%">
            <div style="margin-top: 0px; margin-bottom: 0px">include-libraries library [...]</div>
            </td>
            <td width="50%">引用所有的在swc中的类</td>
        </tr>
        <tr style="text-align: left">
            <td width="15%">
            <div style="margin-top: 0px; margin-bottom: 0px">includes class [...]</div>
            </td>
            <td width="50%">
            <div style="margin-top: 0px; margin-bottom: 0px">引用具体的类</div>
            </td>
        </tr>
        <tr style="text-align: left">
            <td width="15%">
            <div style="margin-top: 0px; margin-bottom: 0px">incremental=true|false</div>
            </td>
            <td width="50%">
            <div style="margin-top: 0px; margin-bottom: 0px">保持原有的as，放在/generated目录下，默认的值是false</div>
            </td>
        </tr>
        <tr style="text-align: left">
            <td width="15%">
            <div style="margin-top: 0px; margin-bottom: 0px">keep-generated-actionscript=true|false</div>
            </td>
            <td width="50%"> </td>
        </tr>
        <tr style="text-align: left">
            <td width="15%">
            <div style="margin-top: 0px; margin-bottom: 0px">language code</div>
            </td>
            <td width="50%">
            <div style="margin-top: 0px; margin-bottom: 0px">预设字母表的编码，默认是false</div>
            </td>
        </tr>
        <tr style="text-align: left">
            <td width="15%">
            <div style="margin-top: 0px; margin-bottom: 0px">lazy-init=true|false</div>
            </td>
            <td width="50%"> </td>
        </tr>
        <tr style="text-align: left">
            <td width="15%">
            <div style="margin-top: 0px; margin-bottom: 0px">library-path path-element [...]</div>
            </td>
            <td width="50%">打印详细的连接报告</td>
        </tr>
        <tr style="text-align: left">
            <td width="15%">
            <div style="margin-top: 0px; margin-bottom: 0px">link-report filename</div>
            </td>
            <td width="50%">
            <div style="margin-top: 0px; margin-bottom: 0px">指定编译器详细的配置文件，覆盖所有的命令行参数，可以通过+=连接多个配置文件。</div>
            </td>
        </tr>
        <tr style="text-align: left">
            <td width="15%">
            <div style="margin-top: 0px; margin-bottom: 0px">load-config filename</div>
            </td>
            <td width="50%">
            <div style="margin-top: 0px; margin-bottom: 0px"> </div>
            </td>
        </tr>
        <tr style="text-align: left">
            <td width="15%">
            <div style="margin-top: 0px; margin-bottom: 0px">load-externs filename [...]</div>
            </td>
            <td width="50%">
            <div style="margin-top: 0px; margin-bottom: 0px"> </div>
            </td>
        </tr>
        <tr style="text-align: left">
            <td width="15%">
            <div style="margin-top: 0px; margin-bottom: 0px">localized-description text lang</div>
            </td>
            <td width="50%">
            <div style="margin-top: 0px; margin-bottom: 0px"> </div>
            </td>
        </tr>
        <tr style="text-align: left">
            <td width="15%">
            <div style="margin-top: 0px; margin-bottom: 0px">namespaces.namespace uri manifest</div>
            </td>
            <td width="50%">
            <div style="margin-top: 0px; margin-bottom: 0px">指定mxml文件的命名空间，可以用 uri或本地的证明文件。（manifest.xml）</div>
            </td>
        </tr>
        <tr style="text-align: left">
            <td width="15%">
            <div style="margin-top: 0px; margin-bottom: 0px">optimize=true|false</div>
            </td>
            <td width="50%">
            <div style="margin-top: 0px; margin-bottom: 0px">优化程序，减少文件大小，增加性能，默认为false</div>
            </td>
        </tr>
        <tr style="text-align: left">
            <td width="15%">
            <div style="margin-top: 0px; margin-bottom: 0px">output filename</div>
            </td>
            <td width="50%">指定输出文件名字，如果不指定就用当前文件名。如果路径不存在，将会自动生成。</td>
        </tr>
        <tr style="text-align: left">
            <td width="15%">
            <div style="margin-top: 0px; margin-bottom: 0px">publisher name</div>
            </td>
            <td width="50%">
            <div style="margin-top: 0px; margin-bottom: 0px"> </div>
            </td>
        </tr>
        <tr style="text-align: left">
            <td width="15%">
            <div style="margin-top: 0px; margin-bottom: 0px">resource-bundle-list filename</div>
            </td>
            <td width="50%">
            <div style="margin-top: 0px; margin-bottom: 0px"> </div>
            </td>
        </tr>
    </tbody>
</table>
</div>
<div style="margin-top: 0px; margin-bottom: 0px">
<table style="font-size: 1em; border-collapse: collapse" bordercolor="#000000" cellspacing="0" cellpadding="3" width="100%" border="1">
    <tbody>
        <tr style="text-align: left">
            <td width="15%">
            <div style="margin-top: 0px; margin-bottom: 0px"><span class="Apple-style-span" style="border-collapse: separate">runtime-shared-libraries url [...]</span></div>
            </td>
            <td width="50%">
            <div style="margin-top: 0px; margin-bottom: 0px">
            <div style="margin-top: 0px; margin-bottom: 0px"><span class="Apple-style-span" style="border-collapse: separate">指定一系列运行时共享库，如果library.swf在 web_root/libraries目录下，那你可以使用 libraries/library.swf.来调用。</span></div>
            </div>
            </td>
        </tr>
        <tr style="text-align: left">
            <td width="15%">
            <div style="margin-top: 0px; margin-bottom: 0px"><span class="Apple-style-span" style="border-collapse: separate">services filename</span></div>
            </td>
            <td width="50%">
            <div style="margin-top: 0px; margin-bottom: 0px"><span class="Apple-style-span" style="border-collapse: separate">指定 services-config.xml文件，该文件用在FDS中</span></div>
            </td>
        </tr>
        <tr style="text-align: left">
            <td width="15%">
            <div style="margin-top: 0px; margin-bottom: 0px"><span class="Apple-style-span" style="border-collapse: separate">show-binding-warnings=true|false</span></div>
            </td>
            <td width="50%">
            <div style="margin-top: 0px; margin-bottom: 0px"><span class="Apple-style-span" style="border-collapse: separate">当flash player不能探测时，显示警告。默认为true</span></div>
            </td>
        </tr>
        <tr style="text-align: left">
            <td width="15%">
            <div style="margin-top: 0px; margin-bottom: 0px"><span class="Apple-style-span" style="border-collapse: separate">show-actionscript-warnings=true|false</span></div>
            </td>
            <td width="50%">
            <div style="margin-top: 0px; margin-bottom: 0px"><span class="Apple-style-span" style="border-collapse: separate">发生as类错误时，发出提示。默认为true。</span></div>
            <div style="margin-top: 0px; margin-bottom: 0px"> </div>
            </td>
        </tr>
        <tr style="text-align: left">
            <td width="15%">
            <div style="margin-top: 0px; margin-bottom: 0px"><span class="Apple-style-span" style="border-collapse: separate">show-deprecation-warnings=true|false</span></div>
            </td>
            <td width="50%">
            <div style="margin-top: 0px; margin-bottom: 0px"><span class="Apple-style-span" style="border-collapse: separate">为flex组件显示不可用。默认为true</span></div>
            </td>
        </tr>
        <tr style="text-align: left">
            <td width="15%">
            <div style="margin-top: 0px; margin-bottom: 0px"><span class="Apple-style-span" style="border-collapse: separate">source-path path-element [...]</span></div>
            </td>
            <td width="50%">
            <div style="margin-top: 0px; margin-bottom: 0px"><span class="Apple-style-span" style="border-collapse: separate">添加源路径的路径或文件，会自动寻找mxml和as文件。可以使用通配符包含所有的文件和子路径，连接全部的文件，不能单个使用类和路径，可以使用+=。</span></div>
            <div style="margin-top: 0px; margin-bottom: 0px"> </div>
            </td>
        </tr>
        <tr style="text-align: left">
            <td width="15%">
            <div style="margin-top: 0px; margin-bottom: 0px"><span class="Apple-style-span" style="border-collapse: separate">strict=true|false</span></div>
            </td>
            <td width="50%">
            <div style="margin-top: 0px; margin-bottom: 0px"><span class="Apple-style-span" style="border-collapse: separate">输出为定义的属性和函数，也能执行编译时期类型的验证和提供默认参数。默认为true</span></div>
            </td>
        </tr>
        <tr style="text-align: left">
            <td width="15%">
            <div style="margin-top: 0px; margin-bottom: 0px"><span class="Apple-style-span" style="border-collapse: separate">theme filename [...]</span></div>
            </td>
            <td width="50%"><span class="Apple-style-span" style="border-collapse: separate">指定主题数组</span></td>
        </tr>
        <tr style="text-align: left">
            <td width="15%">
            <div style="margin-top: 0px; margin-bottom: 0px"><span class="Apple-style-span" style="border-collapse: separate">title text</span></div>
            </td>
            <td width="50%"> </td>
        </tr>
        <tr style="text-align: left">
            <td width="15%">
            <div style="margin-top: 0px; margin-bottom: 0px"><span class="Apple-style-span" style="border-collapse: separate">use-network=true|false</span></div>
            </td>
            <td width="50%">
            <div style="margin-top: 0px; margin-bottom: 0px"><span class="Apple-style-span" style="border-collapse: separate">指定当前应用程序的网络服务，默认为true.如果设为false就只能访问本地，不能访问网络。</span></div>
            </td>
        </tr>
        <tr style="text-align: left">
            <td width="15%">
            <div style="margin-top: 0px; margin-bottom: 0px"><span class="Apple-style-span" style="border-collapse: separate">verbose-stacktraces=true|false</span></div>
            </td>
            <td width="50%">
            <div style="margin-top: 0px; margin-bottom: 0px"><span class="Apple-style-span" style="border-collapse: separate">默认值为false，只在运行发生错误时候，提供错误显示。</span></div>
            </td>
        </tr>
        <tr style="text-align: left">
            <td width="15%">
            <div style="margin-top: 0px; margin-bottom: 0px"><span class="Apple-style-span" style="border-collapse: separate">version</span></div>
            </td>
            <td width="50%"><span class="Apple-style-span" style="border-collapse: separate">编译器的版本号</span></td>
        </tr>
        <tr style="text-align: left">
            <td width="15%">
            <div style="margin-top: 0px; margin-bottom: 0px"><span class="Apple-style-span" style="border-collapse: separate">warn-warning_type=true|false</span></div>
            <div style="margin-top: 0px; margin-bottom: 0px"> </div>
            </td>
            <td width="50%"><span class="Apple-style-span" style="border-collapse: separate">是否验证自定义警告类型。</span></td>
        </tr>
        <tr style="text-align: left">
            <td width="15%"><span class="Apple-style-span" style="border-collapse: separate">warnings=true|false</span></td>
            <td width="50%"><span class="Apple-style-span" style="border-collapse: separate">如果设置false就废除所有的警告，此参数覆盖 warn-warning_typed 的值默认为true。</span></td>
        </tr>
    </tbody>
</table>
</div>
</div>
<p>来自<font color="#598d32">http://www.k-zone.cn/zblog/post/flex-compiler-parameter.html</font></p> <a href="http://hi.baidu.com/andy%5Ftj/blog/item/37f5abad2a90b1034b36d6e8.html">阅读全文</a>
		
		<br/><b>类别：</b><a href="http://hi.baidu.com/andy%5Ftj/blog/category/Flex">Flex</a>&nbsp;<a href="http://hi.baidu.com/andy%5Ftj/blog/item/37f5abad2a90b1034b36d6e8.html#comment">查看评论</a>]]></description>
        <pubDate>2009年11月23日 星期一  16:14</pubDate>
        <category><![CDATA[Flex]]></category>
        <author><![CDATA[andy_tj]]></author>
		<guid>http://hi.baidu.com/andy%5Ftj/blog/item/37f5abad2a90b1034b36d6e8.html</guid>
</item>

<item>
        <title><![CDATA[【转】Flex 中用类名反射出类实例（getDefinitionByName）]]></title>
        <link><![CDATA[http://hi.baidu.com/andy%5Ftj/blog/item/61ae3e0f3a994de7ab64570a.html]]></link>
        <description><![CDATA[
		
		在项目中自定义一个CheckboxGroup，这个控件里面包含多个Checkbox想控制Checkbox的行为：所以使用查找一下帮助使用flex中经典方法：<span class="hilite1"><font style="background-color: #ffff00">getDefinitionByName</font></span> 函数的使用
<p> </p>
<p> </p>
<p>public function <span class="hilite1"><font style="background-color: #ffff00">getDefinitionByName</font></span>(name:String):Object<br>
返回参数 name 中指定的类引用</p>
<p>参数 name:String - 类名称 <br>
返回 Object - 返回参数 name 中指定的类引用<br>
错误 ReferenceError - 找不到参数 name 对应的公共定义</p>
<p>as3中的<span class="hilite1"><font style="background-color: #ffff00">getDefinitionByName</font></span>函数是 返回 name 参数指定的类的类对象引用。</p>
<p>这样就可以使用这个方法根据已知类的路径的字符串来获取类的类对象引用。这样就可以利用这个特性让flash动态创建类的实例...</p>
<p> </p>
<p>但问题是:</p>
<p>1. 使用<span class="hilite1"><font style="background-color: #ffff00">getDefinitionByName</font></span>方法获得的类必须是在发布的时候被编译到swf文中的,否则就会报错:&quot;ReferenceError: Error #1065: 变量 &lt;类的名字&gt; 未定义。&quot;</p>
<p>2. 由于使用import导入的类(只是作为查找类的路径)并不会在发布swf的时候被编译进去(当然flash.*包里面的类本身就是player中的),只用在代码中使用到的类才会被编译进去...</p>
<p> </p>
<p>那么,要使用这个方法来实现动态执行怎么办? 只有把可能需要的所有类包含在代码中(比如在定义变量的类型声名时使用 *),并且在开始声名此类，声名时可以随便使用个名字，这样才能使用<span class="hilite1"><font style="background-color: #ffff00">getDefinitionByName</font></span>方法...<br>
实际上<span class="hilite1"><font style="background-color: #ffff00">getDefinitionByName</font></span>所获得的类名就是前面你所做的声名的名字引用</p>
<p> </p>
<p>-------------------------------------------------<br>
import com.ooph.parser.*;<br>
//包内有ParserWeb类<br>
var ss:ParserWeb;<br>
//在此处声名ParserWeb类，名为ss(名字不用与下面实例名的相同)<br>
var sortStr:String=&quot;Web&quot;;<br>
var P:Class = <span class="hilite1"><font style="background-color: #ffff00">getDefinitionByName</font></span>(&quot;com.ooph.parser.Parser&quot;+sortStr) as Class;<br>
//注意这里要写完整的类路径 &quot;com.ooph.parser.Parser&quot;+sortStr<br>
var newParser:* = new P();</p>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
<table class="FCK__ShowTableBorders" cellspacing="0" cellpadding="0" border="0">
    <tbody>
        <tr>
            <td class="t_msgfont" ><span class="hilite1"><font style="background-color: #ffff00">getDefinitionByName</font></span>(name) 返回 name <span class="t_tag">参数</span>指定的类的类<span class="t_tag">对象</span>引用。 <br>
            经过测试只能获取内置的类，不能获取自定类，怎么解决呀？？<br>
            <br>
            其实最终问题是，知道类名，但是为字符串，如何获取它？因为数量不定放在<span class="t_tag">XML</span>中配置的。</td>
        </tr>
    </tbody>
</table>
<p> </p>
<p>因为内置类库肯定会被编译到swf里，这样反射就能拿到。而自定义的类，如果整个工程里都没有用到，即使import也不会被编译（不然swf里的垃圾成分太多）。我建议可以把需要反射的类库生成一个swf去载入，或者在工程的什么地方引用一下。</p>
<p> </p>
<p> </p>
<p> </p>
<table class="detailHeader FCK__ShowTableBorders" cellspacing="0" cellpadding="0" border="0">
    <tbody>
        <tr>
            <td class="detailHeaderName"><span style="color: #ffffff; background-color: #c7edcc"><span class="hilite1"><font style="background-color: #ffff00">getDefinitionByName</font></span></span></td>
            <td class="detailHeaderParens">()</td>
            <td class="detailHeaderType">函数</td>
            <td class="detailHeaderRule"> </td>
        </tr>
    </tbody>
</table>
<div class="detailBody"><code>public function <span style="color: #ffffff; background-color: #c7edcc"><span class="hilite1"><font style="background-color: #ffff00">getDefinitionByName</font></span></span>(name:<a href="http://topmanopensource.javaeye.com/admin/String.html"><font color="#e9650e">String</font></a>):<a href="http://topmanopensource.javaeye.com/admin/Object.html"><font color="#e9650e">Object</font></a></code>
<p> </p>
<table class="FCK__ShowTableBorders" cellspacing="0" cellpadding="0" border="0">
    <tbody>
        <tr>
            <td style="white-space: nowrap" valign="top"><strong>语言版本 : </strong></td>
            <td>ActionScript 3.0</td>
        </tr>
    </tbody>
</table>
<table class="FCK__ShowTableBorders" cellspacing="0" cellpadding="0" border="0">
    <tbody>
        <tr>
            <td style="white-space: nowrap" valign="top"><strong>RuntimeVersions: </strong></td>
            <td>AIR 1.0, Flash Player 9</td>
        </tr>
    </tbody>
</table>
<p> </p>
<p> </p>
<p>返回 <code>name</code> 参数指定的类的类对象引用。</p>
<p><span class="label">参数 </span></p>
<table class="FCK__ShowTableBorders" cellspacing="0" cellpadding="0" border="0">
    <tbody>
        <tr>
            <td width="20"> </td>
            <td><code><span class="label">name</span>:<a href="http://topmanopensource.javaeye.com/admin/String.html"><font color="#e9650e">String</font></a></code> &mdash; 类的名称。</td>
        </tr>
    </tbody>
</table>
<p> </p>
<span class="label">返回</span>
<table class="FCK__ShowTableBorders" cellspacing="0" cellpadding="0" border="0">
    <tbody>
        <tr>
            <td width="20"> </td>
            <td><code><a href="http://topmanopensource.javaeye.com/admin/Object.html"><font color="#e9650e">Object</font></a></code> &mdash; 返回 <code>name</code> 参数指定的类的类对象引用。</td>
        </tr>
    </tbody>
</table>
<br>
<span class="label">引发</span>
<table class="FCK__ShowTableBorders" cellspacing="0" cellpadding="0" border="0">
    <tbody>
        <tr>
            <td width="20"> </td>
            <td><code><a href="http://topmanopensource.javaeye.com/admin/ReferenceError.html"><font color="#e9650e">ReferenceError</font></a> </code>&mdash; 不存在具有指定名称的公共定义。</td>
        </tr>
    </tbody>
</table>
<br>
<span class="label">示例 </span><br>
<br>
<div class="detailBody">以下示例使用 <code>GetDefinitionByNameExample</code> 类在舞台上创建一个橙色的正方形。这是使用以下步骤完成的：
<ol>
    <li>声明代表橙色背景颜色和 80 像素大小的变量，这些变量稍后将用于绘制正方形。</li>
    <li>在构造函数内，将 Class 类型的变量 <code>ClassReference</code> 赋予 Sprite。</li>
    <li>对名为 <code>instance</code> 的 ClassReference 的实例进行实例化。</li>
    <li>由于 <code>instance</code> 按引用是 Sprite 对象，因此可以使用可用于 Sprite 的方法绘制正方形并将其添加到显示列表。</li>
</ol>
<div class="listing">
<pre>package {
    import flash.display.DisplayObject;
    import flash.display.Sprite;
    import flash.utils.<span style="color: #ffffff; background-color: #c7edcc"><span class="hilite1"><font style="background-color: #ffff00">getDefinitionByName</font></span></span>;

    public class GetDefinitionByNameExample extends Sprite {
        private var bgColor:uint = 0xFFCC00;
        private var size:uint = 80;

        public function GetDefinitionByNameExample() {
            var ClassReference:Class = <span style="color: #ffffff; background-color: #c7edcc"><span class="hilite1"><font style="background-color: #ffff00">getDefinitionByName</font></span></span>(&quot;flash.display.Sprite&quot;) as Class;
            var instance:Object = new ClassReference();
            instance.graphics.beginFill(bgColor);
            instance.graphics.drawRect(0, 0, size, size);
            instance.graphics.endFill();
            addChild(DisplayObject(instance));
        }
    }
}</pre>
<pre> </pre>
<pre>原文地址:http://topmanopensource.javaeye.com/blog/437508</pre>
</div>
</div>
</div> <a href="http://hi.baidu.com/andy%5Ftj/blog/item/61ae3e0f3a994de7ab64570a.html">阅读全文</a>
		
		<br/><b>类别：</b><a href="http://hi.baidu.com/andy%5Ftj/blog/category/Flex">Flex</a>&nbsp;<a href="http://hi.baidu.com/andy%5Ftj/blog/item/61ae3e0f3a994de7ab64570a.html#comment">查看评论</a>]]></description>
        <pubDate>2009年11月17日 星期二  14:55</pubDate>
        <category><![CDATA[Flex]]></category>
        <author><![CDATA[andy_tj]]></author>
		<guid>http://hi.baidu.com/andy%5Ftj/blog/item/61ae3e0f3a994de7ab64570a.html</guid>
</item>

<item>
        <title><![CDATA[一些Flex站点]]></title>
        <link><![CDATA[http://hi.baidu.com/andy%5Ftj/blog/item/89b64aa2224d49a4cbefd0a0.html]]></link>
        <description><![CDATA[
		
		<p><a href="http://www.belgacomtv.be/">http://www.belgacomtv.be/</a></p>
<p><a href="http://www.thetoke.com/">http://www.thetoke.com</a>（3D）</p>
<p><a href="http://www.kendaperez.com/">http://www.kendaperez.com</a>（3D）</p>
<p><a href="http://www.ark-plus.com/">http://www.ark-plus.com</a>（3D）</p>
<p> </p> 
		
		<br/><b>类别：</b><a href="http://hi.baidu.com/andy%5Ftj/blog/category/Flex">Flex</a>&nbsp;<a href="http://hi.baidu.com/andy%5Ftj/blog/item/89b64aa2224d49a4cbefd0a0.html#comment">查看评论</a>]]></description>
        <pubDate>2009年07月26日 星期日  12:21</pubDate>
        <category><![CDATA[Flex]]></category>
        <author><![CDATA[andy_tj]]></author>
		<guid>http://hi.baidu.com/andy%5Ftj/blog/item/89b64aa2224d49a4cbefd0a0.html</guid>
</item>

<item>
        <title><![CDATA[如何在oracle中导入导出dmp数据库文件]]></title>
        <link><![CDATA[http://hi.baidu.com/andy%5Ftj/blog/item/fd5d8a380b1bc4fbb211c707.html]]></link>
        <description><![CDATA[
		
		<p><font size="2">Oracle数据导入导出imp/exp就相当于oracle数据还原与备份。exp命令可以把数据从远程数据库服务器导出到本地的dmp文件，imp命令可以把dmp文件从本地导入到远处的数据库服务器中。利用这个功能可以构建两个相同的数据库，一个用来测试，一个用来正式使用。 执行环境：可以在SQLPLUS.EXE或者DOS（命令行）中执行，<br>
DOS中可以执行时由于 在oracle 8i 中 安装目录\ora81\BIN被设置为全局路径，<br>
该目录下有EXP.EXE与IMP.EXE文件被用来执行导入导出。<br>
oracle用java编写，SQLPLUS.EXE、EXP.EXE、IMP.EXE这两个文件有可能是被包装后的类文件。<br>
SQLPLUS.EXE调用EXP.EXE、IMP.EXE所包裹的类，完成导入导出功能。下面介绍的是导入导出的实例。<br>
数据导出：<br>
1 将数据库TEST完全导出,用户名system 密码manager 导出到D:\daochu.dmp中<br>
exp </font><a href="mailto:system/manager@TEST"><font size="2">system/manager@TEST</font></a><font size="2"> file=d:\daochu.dmp full=y<br>
2 将数据库中system用户与sys用户的表导出<br>
exp </font><a href="mailto:system/manager@TEST"><font size="2">system/manager@TEST</font></a><font size="2"> file=d:\daochu.dmp owner=(system,sys)<br>
3 将数据库中的表inner_notify、notify_staff_relat导出<br>
exp </font><a href="mailto:aichannel/aichannel@TESTDB2"><font size="2">aichannel/aichannel@TESTDB2</font></a><font size="2"> file= d:\data\newsmgnt.dmp tables=(inner_notify,notify_staff_relat)<br>
4 将数据库中的表table1中的字段filed1以&quot;00&quot;打头的数据导出<br>
exp </font><a href="mailto:system/manager@TEST"><font size="2">system/manager@TEST</font></a><font size="2"> file=d:\daochu.dmp tables=(table1) query=\&quot; where filed1 like '00%'\&quot; 上面是常用的导出，对于压缩，既用winzip把dmp文件可以很好的压缩。<br>
也可以在上面命令后面 加上 compress=y 来实现。数据的导入<br>
1 将D:\daochu.dmp 中的数据导入 TEST数据库中。<br>
imp </font><a href="mailto:system/manager@TEST"><font size="2">system/manager@TEST</font></a><font size="2"> file=d:\daochu.dmp<br>
imp </font><a href="mailto:aichannel/aichannel@HUST"><font size="2">aichannel/aichannel@HUST</font></a><font size="2"> full=y file=file= d:\data\newsmgnt.dmp ignore=y<br>
上面可能有点问题，因为有的表已经存在，然后它就报错，对该表就不进行导入。<br>
在后面加上 ignore=y 就可以了。<br>
2 将d:\daochu.dmp中的表table1 导入<br>
imp </font><a href="mailto:system/manager@TEST"><font size="2">system/manager@TEST</font></a><font size="2"> file=d:\daochu.dmp tables=(table1)<br>
基本上上面的导入导出够用了。不少情况要先是将表彻底删除，然后导入。 注意：<br>
操作者要有足够的权限，权限不够它会提示。<br>
数据库时可以连上的。可以用tnsping TEST 来获得数据库TEST能否连上。<br>
附录一：<br>
给用户增加导入数据权限的操作<br>
第一,启动sql*puls<br>
第二，以system/manager登陆<br>
第三，create user 用户名 IDENTIFIED BY 密码（如果已经创建过用户，这步可以省略）<br>
第四，GRANT CREATE USER,DROP USER,ALTER USER ,CREATE ANY VIEW ,<br>
DROP ANY VIEW,EXP_FULL_DATABASE,IMP_FULL_DATABASE,<br>
DBA,CONNECT,RESOURCE,CREATE SESSION TO 用户名字<br>
第五, 运行-cmd-进入dmp文件所在的目录,<br>
imp userid=system/manager full=y file=*.dmp<br>
或者 imp userid=system/manager full=y file=filename.dmp<br>
执行示例:<br>
F:\Work\Oracle_Data\backup&gt;imp userid=test/test full=y file=inner_notify.dmp<br>
屏幕显示<br>
Import: Release 8.1.7.0.0 - Production on 星期四 2月 16 16:50:05 2006<br>
(c) Copyright 2000 Oracle Corporation. All rights reserved.<br>
连接到: Oracle8i Enterprise Edition Release 8.1.7.0.0 - Production<br>
With the Partitioning option<br>
JServer Release 8.1.7.0.0 - Production<br>
经由常规路径导出由EXPORT:V08.01.07创建的文件<br>
已经完成ZHS16GBK字符集和ZHS16GBK NCHAR 字符集中的导入<br>
导出服务器使用UTF8 NCHAR 字符集 (可能的ncharset转换)<br>
. 正在将AICHANNEL的对象导入到 AICHANNEL<br>
. . 正在导入表 &quot;INNER_NOTIFY&quot; 4行被导入<br>
准备启用约束条件...<br>
成功终止导入，但出现警告。附录二：<br>
Oracle 不允许直接改变表的拥有者, 利用Export/Import可以达到这一目的.<br>
先建立import9.par,<br>
然后，使用时命令如下：imp parfile=/filepath/import9.par<br>
例 import9.par 内容如下：<br>
FROMUSER=TGPMS<br>
TOUSER=TGPMS2（注：把表的拥有者由FROMUSER改为TOUSER，FROMUSER和TOUSER的用户可以不同）<br>
ROWS=Y<br>
INDEXES=Y<br>
GRANTS=Y<br>
CONSTRAINTS=Y<br>
BUFFER=409600<br>
file==/backup/ctgpc_20030623.dmp<br>
log==/backup/import_20030623.log</font></p>
<p> </p>
<p> </p>
<p><font size="2">文章转自:http://hi.baidu.com/tdskee/blog/item/6e631cf3866fb5cf0b46e073.html<br>
</font></p> <a href="http://hi.baidu.com/andy%5Ftj/blog/item/fd5d8a380b1bc4fbb211c707.html">阅读全文</a>
		
		<br/><b>类别：</b><a href="http://hi.baidu.com/andy%5Ftj/blog/category/Oracle">Oracle</a>&nbsp;<a href="http://hi.baidu.com/andy%5Ftj/blog/item/fd5d8a380b1bc4fbb211c707.html#comment">查看评论</a>]]></description>
        <pubDate>2009年07月06日 星期一  16:30</pubDate>
        <category><![CDATA[Oracle]]></category>
        <author><![CDATA[andy_tj]]></author>
		<guid>http://hi.baidu.com/andy%5Ftj/blog/item/fd5d8a380b1bc4fbb211c707.html</guid>
</item>

<item>
        <title><![CDATA[Oracle 安装以及相关知识的博客留着以后用到时查阅]]></title>
        <link><![CDATA[http://hi.baidu.com/andy%5Ftj/blog/item/42309055494cddcdb745ae05.html]]></link>
        <description><![CDATA[
		
		<a href="http://blog.chinaunix.net/u/rss.php?id=61812">http://blog.chinaunix.net/u/rss.php?id=61812</a># 
		
		<br/><b>类别：</b><a href="http://hi.baidu.com/andy%5Ftj/blog/category/Oracle">Oracle</a>&nbsp;<a href="http://hi.baidu.com/andy%5Ftj/blog/item/42309055494cddcdb745ae05.html#comment">查看评论</a>]]></description>
        <pubDate>2009年07月03日 星期五  10:02</pubDate>
        <category><![CDATA[Oracle]]></category>
        <author><![CDATA[andy_tj]]></author>
		<guid>http://hi.baidu.com/andy%5Ftj/blog/item/42309055494cddcdb745ae05.html</guid>
</item>

<item>
        <title><![CDATA[做真正的自己]]></title>
        <link><![CDATA[http://hi.baidu.com/andy%5Ftj/blog/item/59d16d03c583afe508fa9373.html]]></link>
        <description><![CDATA[
		
		<div style="font-size: 16px">1、永远不要向任何人解释你自己<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;  因为喜欢你的人不需要<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;  而不喜欢你的人不会相信<br>
<br>
<br>
<br>
2、别让某人成为你生命中的优先,当你只是他们生命中的一个选择时.<br>
<br>
&nbsp;&nbsp;  人与人之间的关系只有在彼此达到平衡时，运作的最恰当&nbsp;&nbsp;<br>
<br>
<br>
<br>
<br>
3、每天早上醒来时，我们可以有两个简单的选择<br>
<br>
&nbsp;&nbsp;  回头去睡，继续做梦<br>
<br>
&nbsp;&nbsp;  或者起身去追逐梦想<br>
<br>
&nbsp;&nbsp;  选择权在你手上<br>
<br>
<br>
<br>
4、我们总让在乎我们的人为我们哭泣<br>
<br>
&nbsp;&nbsp;  并总为那些永远不会在乎我们的人哭泣<br>
<br>
&nbsp;&nbsp;  且我们在意那些永远不会为我们哭泣的人<br>
<br>
&nbsp;&nbsp;  这是存在于生命的真实，奇怪却真实<br>
<br>
&nbsp;&nbsp;  一旦你了解了，改变不会太迟<br>
<br>
<br>
<br>
5、别在喜悦时许下承诺<br>
<br>
&nbsp;&nbsp;  别在忧伤时做出回答<br>
<br>
&nbsp;&nbsp;  别在愤怒时做下决定<br>
<br>
&nbsp;&nbsp;  三思而后行，做出睿智的行为<br>
<br>
<br>
<br>
6、时间就像流水<br>
<br>
&nbsp;&nbsp;  你永远无法触摸同样的流水两次<br>
<br>
&nbsp;&nbsp;  因为已经流逝的流水不会再来<br>
<br>
&nbsp;&nbsp;  享受生命的每个当下!<br>
<br>
<br>
<br>
7、当你持续的说你非常忙碌，就永远不会得到空间<br>
<br>
&nbsp;&nbsp;  当你持续的说你没有时间，就永远不会得到时间<br>
<br>
&nbsp;&nbsp;  当你持续的说这件事明天再做，你的明天就永远不会来 </div> <a href="http://hi.baidu.com/andy%5Ftj/blog/item/59d16d03c583afe508fa9373.html">阅读全文</a>
		
		<br/><b>类别：</b><a href="http://hi.baidu.com/andy%5Ftj/blog/category/%CB%E6%B1%CA">随笔</a>&nbsp;<a href="http://hi.baidu.com/andy%5Ftj/blog/item/59d16d03c583afe508fa9373.html#comment">查看评论</a>]]></description>
        <pubDate>2009年06月18日 星期四  17:56</pubDate>
        <category><![CDATA[随笔]]></category>
        <author><![CDATA[andy_tj]]></author>
		<guid>http://hi.baidu.com/andy%5Ftj/blog/item/59d16d03c583afe508fa9373.html</guid>
</item>

<item>
        <title><![CDATA[struts2多文件动态下载及中文解决方案]]></title>
        <link><![CDATA[http://hi.baidu.com/andy%5Ftj/blog/item/423090559481e2cdb745aec7.html]]></link>
        <description><![CDATA[
		
		<p>关于文件上传的例子，网上已经有很多，所以本文就不谈文件上传，重点是文件下载及文件名为中文的时候各个浏览器出现乱码的解决方案。</p>
<p>下面是jsp文件的代码：</p>
<ol class="hl-main ln-show" title="Double click to hide line number.">
    <li class="hl-firstline"><span style="color: olive">&lt;</span><span style="color: green">html</span><span style="color: olive">&gt;</span></li>
    <li><span style="color: gray">  </span><span style="color: olive">&lt;</span><span style="color: green">head</span><span style="color: olive">&gt;</span></li>
    <li><span style="color: gray">&nbsp;&nbsp;  </span><span style="color: olive">&lt;</span><span style="color: green">title</span><span style="color: olive">&gt;</span><span style="color: gray">download</span><span style="color: olive">&lt;/</span><span style="color: green">title</span><span style="color: olive">&gt;</span></li>
    <li><span style="color: gray">  </span><span style="color: olive">&lt;/</span><span style="color: green">head</span><span style="color: olive">&gt;</span></li>
    <li><span style="color: gray">  </span><span style="color: olive">&lt;</span><span style="color: green">body</span><span style="color: olive">&gt;</span></li>
    <li><span style="color: gray">&nbsp;&nbsp;  </span><span style="color: olive">&lt;</span><span style="color: gray">%</span></li>
    <li><span style="color: gray">    //取得服务器</span><span style="color: rgb(139,0,0)">&quot;</span><span style="color: red">/download/file</span><span style="color: rgb(139,0,0)">&quot;</span><span style="color: gray">目录的物理路径</span></li>
    <li><span style="color: gray">    </span><span style="color: rgb(0,0,139)">String</span><span style="color: gray"> </span><span style="color: rgb(0,0,139)">path</span><span style="color: gray"> = </span><span style="color: rgb(0,0,139)">request</span><span style="color: gray">.</span><span style="color: rgb(0,0,139)">getRealPath</span><span style="color: gray">(</span><span style="color: rgb(139,0,0)">&quot;</span><span style="color: red">/download/file</span><span style="color: rgb(139,0,0)">&quot;</span><span style="color: gray">);</span></li>
    <li><span style="color: gray">    //取得</span><span style="color: rgb(139,0,0)">&quot;</span><span style="color: red">/download/file</span><span style="color: rgb(139,0,0)">&quot;</span><span style="color: gray">目录的</span><span style="color: rgb(0,0,139)">file</span><span style="color: gray">对象</span></li>
    <li><span style="color: gray">    </span><span style="color: rgb(0,0,139)">File</span><span style="color: gray"> </span><span style="color: rgb(0,0,139)">file</span><span style="color: gray"> = </span><span style="color: rgb(0,0,139)">new</span><span style="color: gray"> </span><span style="color: rgb(0,0,139)">File</span><span style="color: gray">(</span><span style="color: rgb(0,0,139)">path</span><span style="color: gray">);</span></li>
    <li><span style="color: gray">    //取得</span><span style="color: rgb(0,0,139)">file</span><span style="color: gray">目录下所有文件</span></li>
    <li><span style="color: gray">    </span><span style="color: rgb(0,0,139)">File</span><span style="color: gray">[] </span><span style="color: rgb(0,0,139)">files</span><span style="color: gray"> = </span><span style="color: rgb(0,0,139)">file</span><span style="color: gray">.</span><span style="color: rgb(0,0,139)">listFiles</span><span style="color: gray">();</span></li>
    <li><span style="color: gray"> </span></li>
    <li><span style="color: gray">&nbsp;&nbsp;  </span><span style="color: rgb(0,0,139)">for</span><span style="color: gray"> (</span><span style="color: rgb(0,0,139)">int</span><span style="color: gray"> </span><span style="color: rgb(0,0,139)">i</span><span style="color: gray"> = </span><span style="color: rgb(0,0,139)">0</span><span style="color: gray">; </span><span style="color: rgb(0,0,139)">i</span><span style="color: gray"> &lt; </span><span style="color: rgb(0,0,139)">files</span><span style="color: gray">.</span><span style="color: rgb(0,0,139)">length</span><span style="color: gray">; </span><span style="color: rgb(0,0,139)">i</span><span style="color: gray">++) {</span></li>
    <li><span style="color: gray"> </span></li>
    <li><span style="color: gray">    </span><span style="color: rgb(0,0,139)">String</span><span style="color: gray"> </span><span style="color: rgb(0,0,139)">fname</span><span style="color: gray"> = </span><span style="color: rgb(0,0,139)">files</span><span style="color: gray">[</span><span style="color: rgb(0,0,139)">i</span><span style="color: gray">].</span><span style="color: rgb(0,0,139)">getName</span><span style="color: gray">();</span></li>
    <li><span style="color: gray"> </span></li>
    <li><span style="color: gray">    //对文件名进行</span><span style="color: rgb(0,0,139)">url</span><span style="color: gray">编码(</span><span style="color: rgb(0,0,139)">UTF-8</span><span style="color: gray">指明</span><span style="color: rgb(0,0,139)">fname</span><span style="color: gray">原来的编码，</span><span style="color: rgb(0,0,139)">UTF-8</span><span style="color: gray">一般由本地编码</span><span style="color: rgb(0,0,139)">GBK</span><span style="color: gray">代替)</span></li>
    <li><span style="color: gray">  &nbsp;&nbsp;  </span><span style="color: rgb(0,0,139)">fname</span><span style="color: gray"> = </span><span style="color: rgb(0,0,139)">java</span><span style="color: gray">.</span><span style="color: rgb(0,0,139)">net</span><span style="color: gray">.</span><span style="color: rgb(0,0,139)">URLEncoder</span><span style="color: gray">.</span><span style="color: rgb(0,0,139)">encode</span><span style="color: gray">(</span><span style="color: rgb(0,0,139)">fname</span><span style="color: gray">, </span><span style="color: rgb(139,0,0)">&quot;</span><span style="color: red">UTF-8</span><span style="color: rgb(139,0,0)">&quot;</span><span style="color: gray">);</span></li>
    <li><span style="color: gray"> </span></li>
    <li><span style="color: gray">    </span><span style="color: rgb(0,0,139)">out</span><span style="color: gray">.</span><span style="color: rgb(0,0,139)">println</span><span style="color: gray">(</span><span style="color: rgb(139,0,0)">&quot;</span><span style="color: red">&lt;a href=download.action?name=</span><span style="color: rgb(139,0,0)">&quot;</span><span style="color: gray"> + </span><span style="color: rgb(0,0,139)">fname</span><span style="color: gray"> + </span><span style="color: rgb(139,0,0)">&quot;</span><span style="color: red">&gt;</span><span style="color: rgb(139,0,0)">&quot;</span></li>
    <li><span style="color: gray">  &nbsp;&nbsp;  + </span><span style="color: rgb(0,0,139)">files</span><span style="color: gray">[</span><span style="color: rgb(0,0,139)">i</span><span style="color: gray">].</span><span style="color: rgb(0,0,139)">getName</span><span style="color: gray">() + </span><span style="color: rgb(139,0,0)">&quot;</span><span style="color: red">&lt;/a&gt;&lt;br&gt;</span><span style="color: rgb(139,0,0)">&quot;</span><span style="color: gray">);</span></li>
    <li><span style="color: gray">    }</span></li>
    <li><span style="color: gray">&nbsp;&nbsp;  %</span><span style="color: olive">&gt;</span></li>
    <li><span style="color: gray">  </span><span style="color: olive">&lt;/</span><span style="color: green">body</span><span style="color: olive">&gt;</span></li>
    <li><span style="color: gray"> </span><span style="color: olive">&lt;/</span><span style="color: green">html</span><span style="color: olive">&gt;</span></li>
</ol>
<p> </p>
<p>相应的DownloadAction.java的代码：<br>
 </p>
<ol class="hl-main ln-show" title="Double click to hide line number.">
    <li class="hl-firstline"><span style="color: green">package</span><span style="color: gray"> </span><span style="color: blue">com</span><span style="color: gray">.</span><span style="color: blue">test</span><span style="color: gray">.</span><span style="color: blue">action</span><span style="color: gray">;</span></li>
    <li><span style="color: gray"> </span></li>
    <li><span style="color: green">import</span><span style="color: gray"> </span><span style="color: blue">java</span><span style="color: gray">.</span><span style="color: blue">io</span><span style="color: gray">.</span><span style="color: blue">InputStream</span><span style="color: gray">;</span></li>
    <li><span style="color: gray"> </span><span style="color: green">import</span><span style="color: gray"> </span><span style="color: blue">java</span><span style="color: gray">.</span><span style="color: blue">io</span><span style="color: gray">.</span><span style="color: blue">UnsupportedEncodingException</span><span style="color: gray">;</span></li>
    <li><span style="color: gray"> </span><span style="color: green">import</span><span style="color: gray"> </span><span style="color: blue">com</span><span style="color: gray">.</span><span style="color: blue">opensymphony</span><span style="color: gray">.</span><span style="color: blue">xwork2</span><span style="color: gray">.</span><span style="color: blue">ActionSupport</span><span style="color: gray">;</span></li>
    <li><span style="color: gray"> </span><span style="color: green">import</span><span style="color: gray"> </span><span style="color: blue">org</span><span style="color: gray">.</span><span style="color: blue">apache</span><span style="color: gray">.</span><span style="color: blue">struts2</span><span style="color: gray">.</span><span style="color: blue">ServletActionContext</span><span style="color: gray">;</span></li>
    <li><span style="color: gray"> </span></li>
    <li><span style="color: green">public</span><span style="color: gray"> </span><span style="color: green">class</span><span style="color: gray"> </span><span style="color: blue">DownloadAction</span><span style="color: gray"> </span><span style="color: green">extends</span><span style="color: gray"> </span><span style="color: blue">ActionSupport</span><span style="color: gray"> </span><span style="color: olive">{</span></li>
    <li><span style="color: gray">  &nbsp;&nbsp;  </span><span style="color: green">private</span><span style="color: gray"> </span><span class="hl-types">static</span><span style="color: gray"> </span><span class="hl-types">final</span><span style="color: gray"> </span><span class="hl-types">long</span><span style="color: gray"> </span><span style="color: blue">serialVersionUID</span><span style="color: gray"> = </span><span style="color: maroon">6329383258366253255</span><span style="color: blue">L</span><span style="color: gray">;</span></li>
    <li><span style="color: gray">  </span></li>
    <li><span style="color: gray">  &nbsp;&nbsp;  </span><span style="color: green">private</span><span style="color: gray"> </span><span style="color: blue">String</span><span style="color: gray"> </span><span style="color: blue">fileName</span><span style="color: gray">;</span></li>
    <li><span style="color: gray">  </span></li>
    <li><span style="color: gray">  &nbsp;&nbsp;  </span><span style="color: green">public</span><span style="color: gray"> </span><span class="hl-types">void</span><span style="color: gray"> </span><span style="color: blue">setFileName</span><span style="color: olive">(){</span></li>
    <li><span style="color: gray">      &nbsp;&nbsp;  </span><span style="color: rgb(255,165,0)">//得到请求下载的文件名</span></li>
    <li><span style="color: gray">      &nbsp;&nbsp;  </span><span style="color: blue">String</span><span style="color: gray"> </span><span style="color: blue">fname</span><span style="color: gray">=</span><span style="color: blue">ServletActionContext</span><span style="color: gray">.</span><span style="color: blue">getRequest</span><span style="color: olive">()</span><span style="color: gray">.</span><span style="color: blue">getParameter</span><span style="color: olive">(</span><span style="color: rgb(139,0,0)">&quot;</span><span style="color: red">name</span><span style="color: rgb(139,0,0)">&quot;</span><span style="color: olive">)</span><span style="color: gray">;  </span></li>
    <li><span style="color: gray">      &nbsp;&nbsp;  </span><span style="color: green">try</span><span style="color: gray"> </span><span style="color: olive">{</span></li>
    <li><span style="color: gray">      &nbsp;&nbsp;  </span><span style="color: rgb(255,165,0)">/*</span></li>
    <li><span style="color: rgb(255,165,0)">          * 对fname参数进行UTF-8解码,注意:实际进行UTF-8解码时会使用本地编码，本机为GBK。</span></li>
    <li><span style="color: rgb(255,165,0)">          * 这里使用request.setCharacterEncoding解码无效.</span></li>
    <li><span style="color: rgb(255,165,0)">          * 只有解码了getDownloadFile()方法才能在下载目录下正确找到请求的文件</span></li>
    <li><span style="color: rgb(255,165,0)">          * */</span><span style="color: gray">&nbsp;&nbsp;  </span></li>
    <li><span style="color: gray">            &nbsp;&nbsp;  </span><span style="color: blue">fname</span><span style="color: gray"> = </span><span style="color: green">new</span><span style="color: gray"> </span><span style="color: blue">String</span><span style="color: olive">(</span><span style="color: blue">fname</span><span style="color: gray">.</span><span style="color: blue">getBytes</span><span style="color: olive">(</span><span style="color: rgb(139,0,0)">&quot;</span><span style="color: red">ISO-8859-1</span><span style="color: rgb(139,0,0)">&quot;</span><span style="color: olive">)</span><span style="color: gray">, </span><span style="color: rgb(139,0,0)">&quot;</span><span style="color: red">UTF-8</span><span style="color: rgb(139,0,0)">&quot;</span><span style="color: olive">)</span><span style="color: gray">;</span></li>
    <li><span style="color: gray"> </span></li>
    <li><span style="color: gray">    &nbsp;&nbsp;  </span><span style="color: olive">}</span><span style="color: gray"> </span><span style="color: green">catch</span><span style="color: gray"> </span><span style="color: olive">(</span><span style="color: blue">Exception</span><span style="color: gray"> </span><span style="color: blue">e</span><span style="color: olive">)</span><span style="color: gray"> </span><span style="color: olive">{</span></li>
    <li><span style="color: gray">          &nbsp;&nbsp;  </span><span style="color: blue">e</span><span style="color: gray">.</span><span style="color: blue">printStackTrace</span><span style="color: olive">()</span><span style="color: gray">;</span></li>
    <li><span style="color: gray">        </span><span style="color: olive">}</span><span style="color: gray">&nbsp;&nbsp;  </span></li>
    <li><span style="color: gray">        </span><span style="color: green">this</span><span style="color: gray">.</span><span style="color: blue">fileName</span><span style="color: gray">=</span><span style="color: blue">fname</span><span style="color: gray">;&nbsp;&nbsp;  </span></li>
    <li><span style="color: gray">        </span><span style="color: blue">System</span><span style="color: gray">.</span><span style="color: blue">out</span><span style="color: gray">.</span><span style="color: blue">println</span><span style="color: olive">(</span><span style="color: blue">fileName</span><span style="color: olive">)</span><span style="color: gray">;  </span></li>
    <li><span style="color: gray">    </span><span style="color: olive">}</span></li>
    <li><span style="color: gray">  </span></li>
    <li><span style="color: gray">    &nbsp;&nbsp;  </span><span style="color: rgb(255,165,0)">/*</span></li>
    <li><span style="color: rgb(255,165,0)">        *</span><span style="color: blue"> @getFileName</span></li>
    <li><span style="color: rgb(255,165,0)">        * 此方法对应的是struts.xml文件中的：</span></li>
    <li><span style="color: rgb(255,165,0)">        * &lt;param name=&quot;contentDisposition&quot;&gt;attachment;filename=&quot;${fileName}&quot;&lt;/param&gt;</span></li>
    <li><span style="color: rgb(255,165,0)">        * 这个属性设置的是下载工具下载文件时显示的文件名，</span></li>
    <li><span style="color: rgb(255,165,0)">        * 要想正确的显示中文文件名，我们需要对fileName再次编码</span></li>
    <li><span style="color: rgb(255,165,0)">        * 否则中文名文件将出现乱码，或无法下载的情况</span></li>
    <li><span style="color: rgb(255,165,0)">        * */</span></li>
    <li><span style="color: gray">      </span><span style="color: green">public</span><span style="color: gray"> </span><span style="color: blue">String</span><span style="color: gray"> </span><span style="color: blue">getFileName</span><span style="color: olive">()</span><span style="color: gray"> </span><span style="color: green">throws</span><span style="color: gray"> </span><span style="color: blue">UnsupportedEncodingException</span><span style="color: gray"> </span><span style="color: olive">{</span></li>
    <li><span style="color: gray">&nbsp;&nbsp;  </span></li>
    <li><span style="color: gray">          </span><span style="color: blue">fileName</span><span style="color: gray">=</span><span style="color: green">new</span><span style="color: gray"> </span><span style="color: blue">String</span><span style="color: olive">(</span><span style="color: blue">fileName</span><span style="color: gray">.</span><span style="color: blue">getBytes</span><span style="color: olive">()</span><span style="color: gray">,</span><span style="color: rgb(139,0,0)">&quot;</span><span style="color: red">ISO-8859-1</span><span style="color: rgb(139,0,0)">&quot;</span><span style="color: olive">)</span><span style="color: gray">;</span></li>
    <li><span style="color: gray">&nbsp;&nbsp;  </span></li>
    <li><span style="color: gray">          </span><span style="color: green">return</span><span style="color: gray"> </span><span style="color: blue">fileName</span><span style="color: gray">;</span></li>
    <li><span style="color: gray">      </span><span style="color: olive">}</span></li>
    <li><span style="color: gray"> </span></li>
    <li><span style="color: gray">  &nbsp;&nbsp;  </span><span style="color: rgb(255,165,0)">/*</span></li>
    <li><span style="color: rgb(255,165,0)">    &nbsp;&nbsp;  *</span><span style="color: blue"> @getDownloadFile</span></li>
    <li><span style="color: rgb(255,165,0)">    &nbsp;&nbsp;  * 此方法对应的是struts.xml文件中的：</span></li>
    <li><span style="color: rgb(255,165,0)">    &nbsp;&nbsp;  * &lt;param name=&quot;inputName&quot;&gt;downloadFile&lt;/param&gt;</span></li>
    <li><span style="color: rgb(255,165,0)">    &nbsp;&nbsp;  * 返回下载文件的流，可以参看struts2的源码</span></li>
    <li><span style="color: rgb(255,165,0)">    &nbsp;&nbsp;  * */</span></li>
    <li><span style="color: gray">      </span><span style="color: green">public</span><span style="color: gray"> </span><span style="color: blue">InputStream</span><span style="color: gray"> </span><span style="color: blue">getDownloadFile</span><span style="color: olive">()</span><span style="color: gray"> </span><span style="color: olive">{</span></li>
    <li><span style="color: gray">&nbsp;&nbsp;  </span></li>
    <li><span style="color: gray">      &nbsp;&nbsp;  </span><span style="color: green">this</span><span style="color: gray">.</span><span style="color: blue">setFileName</span><span style="color: olive">()</span><span style="color: gray">;</span></li>
    <li><span style="color: gray"> </span></li>
    <li><span style="color: gray">      &nbsp;&nbsp;  </span><span style="color: green">return</span><span style="color: gray"> </span><span style="color: blue">ServletActionContext</span><span style="color: gray">.</span><span style="color: blue">getServletContext</span><span style="color: olive">()</span><span style="color: gray">.</span><span style="color: blue">getResourceAsStream</span><span style="color: olive">(</span><span style="color: rgb(139,0,0)">&quot;</span><span style="color: red">/download/file/</span><span style="color: rgb(139,0,0)">&quot;</span><span style="color: gray"> + </span><span style="color: blue">fileName</span><span style="color: olive">)</span><span style="color: gray">;</span></li>
    <li><span style="color: gray">      </span><span style="color: olive">}</span></li>
    <li><span style="color: gray"> </span></li>
    <li><span style="color: gray">  &nbsp;&nbsp;  @</span><span style="color: blue">Override</span></li>
    <li><span style="color: gray">      </span><span style="color: green">public</span><span style="color: gray"> </span><span style="color: blue">String</span><span style="color: gray"> </span><span style="color: blue">execute</span><span style="color: olive">()</span><span style="color: gray"> </span><span style="color: green">throws</span><span style="color: gray"> </span><span style="color: blue">Exception</span><span style="color: gray"> </span><span style="color: olive">{</span></li>
    <li><span style="color: gray">          </span><span style="color: green">return</span><span style="color: gray"> </span><span style="color: blue">SUCCESS</span><span style="color: gray">;</span></li>
    <li><span style="color: gray">  &nbsp;&nbsp;  </span><span style="color: olive">}</span></li>
    <li><span style="color: gray"> </span><span style="color: olive">}</span></li>
</ol>
<p>struts.xml相应的Action配置：</p>
<ol class="hl-main ln-show" title="Double click to hide line number.">
    <li class="hl-firstline"><span style="color: olive">&lt;</span><span style="color: green">action</span><span style="color: gray"> </span><span style="color: rgb(0,0,139)">name</span><span style="color: gray">=</span><span style="color: rgb(139,0,0)">&quot;</span><span style="color: red">download</span><span style="color: rgb(139,0,0)">&quot;</span><span style="color: gray"> </span><span style="color: rgb(0,0,139)">class</span><span style="color: gray">=</span><span style="color: rgb(139,0,0)">&quot;</span><span style="color: red">com.test.action.DownloadAction</span><span style="color: rgb(139,0,0)">&quot;</span><span style="color: olive">&gt;</span></li>
    <li><span style="color: gray">      </span><span style="color: olive">&lt;</span><span style="color: green">result</span><span style="color: gray"> </span><span style="color: rgb(0,0,139)">name</span><span style="color: gray">=</span><span style="color: rgb(139,0,0)">&quot;</span><span style="color: red">success</span><span style="color: rgb(139,0,0)">&quot;</span><span style="color: gray"> </span><span style="color: rgb(0,0,139)">type</span><span style="color: gray">=</span><span style="color: rgb(139,0,0)">&quot;</span><span style="color: red">stream</span><span style="color: rgb(139,0,0)">&quot;</span><span style="color: olive">&gt;</span></li>
    <li><span style="color: gray">          </span><span style="color: olive">&lt;</span><span style="color: green">param</span><span style="color: gray"> </span><span style="color: rgb(0,0,139)">name</span><span style="color: gray">=</span><span style="color: rgb(139,0,0)">&quot;</span><span style="color: red">contentDisposition</span><span style="color: rgb(139,0,0)">&quot;</span><span style="color: olive">&gt;</span><span style="color: gray">attachment;filename=&quot;${fileName}&quot;</span><span style="color: olive">&lt;/</span><span style="color: green">param</span><span style="color: olive">&gt;</span><span style="color: gray"> </span></li>
    <li><span style="color: gray">          </span><span style="color: olive">&lt;</span><span style="color: green">param</span><span style="color: gray"> </span><span style="color: rgb(0,0,139)">name</span><span style="color: gray">=</span><span style="color: rgb(139,0,0)">&quot;</span><span style="color: red">inputName</span><span style="color: rgb(139,0,0)">&quot;</span><span style="color: olive">&gt;</span><span style="color: gray">downloadFile</span><span style="color: olive">&lt;/</span><span style="color: green">param</span><span style="color: olive">&gt;</span></li>
    <li><span style="color: gray">      </span><span style="color: olive">&lt;/</span><span style="color: green">result</span><span style="color: olive">&gt;</span></li>
    <li><span style="color: gray">&nbsp;&nbsp;  </span><span style="color: olive">&lt;/</span><span style="color: green">action</span><span style="color: olive">&gt;</span></li>
</ol>
<p>web.xml:</p>
<ol class="hl-main ln-show" title="Double click to hide line number.">
    <li class="hl-firstline"><span style="color: olive">&lt;</span><span style="color: green">filter</span><span style="color: olive">&gt;</span></li>
    <li><span style="color: gray">    </span><span style="color: olive">&lt;</span><span style="color: green">filter-name</span><span style="color: olive">&gt;</span><span style="color: gray">struts2</span><span style="color: olive">&lt;/</span><span style="color: green">filter-name</span><span style="color: olive">&gt;</span></li>
    <li><span style="color: gray">    </span><span style="color: olive">&lt;</span><span style="color: green">filter-class</span><span style="color: olive">&gt;</span><span style="color: gray">org.apache.struts2.dispatcher.FilterDispatcher</span><span style="color: olive">&lt;/</span><span style="color: green">filter-class</span><span style="color: olive">&gt;</span></li>
    <li><span style="color: gray"> </span><span style="color: olive">&lt;/</span><span style="color: green">filter</span><span style="color: olive">&gt;</span></li>
    <li><span style="color: gray">  </span><span style="color: olive">&lt;</span><span style="color: green">filter-mapping</span><span style="color: olive">&gt;</span></li>
    <li><span style="color: gray">    </span><span style="color: olive">&lt;</span><span style="color: green">filter-name</span><span style="color: olive">&gt;</span><span style="color: gray">struts2</span><span style="color: olive">&lt;/</span><span style="color: green">filter-name</span><span style="color: olive">&gt;</span></li>
    <li><span style="color: gray">    </span><span style="color: olive">&lt;</span><span style="color: green">url-pattern</span><span style="color: olive">&gt;</span><span style="color: gray">/*</span><span style="color: olive">&lt;/</span><span style="color: green">url-pattern</span><span style="color: olive">&gt;</span></li>
    <li><span style="color: gray">  </span><span style="color: olive">&lt;/</span><span style="color: green">filter-mapping</span><span style="color: olive">&gt;</span></li>
    <li><span style="color: gray">  </span></li>
    <li><span style="color: gray">  </span><span style="color: olive">&lt;</span><span style="color: green">welcome-file-list</span><span style="color: olive">&gt;</span></li>
    <li><span style="color: gray">    </span><span style="color: olive">&lt;</span><span style="color: green">welcome-file</span><span style="color: olive">&gt;</span><span style="color: gray">download.jsp</span><span style="color: olive">&lt;/</span><span style="color: green">welcome-file</span><span style="color: olive">&gt;</span></li>
    <li><span style="color: gray">  </span><span style="color: olive">&lt;/</span><span style="color: green">welcome-file-list</span><span style="color: olive">&gt;</span></li>
</ol>
<p><img height="141" alt="www.xileju.biz" src="http://www.xileju.biz/IMG/sjsp.jpg" width="224"></p>
<p><img height="188" alt="www.xileju.biz" src="http://www.xileju.biz/IMG/IEAct.jpg" width="413"></p>
<p><img height="236" alt="www.xileju.biz" src="http://www.xileju.biz/IMG/FFAct.jpg" width="424"></p>
<p><img height="262" alt="www.xileju.biz" src="http://www.xileju.biz/IMG/OPAct.jpg" width="504"></p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  本文的源代码在IE8.0Bate1、firefox3.0RC1、Opera下均测试通过，能够正常下载及正确显示中文文件名。</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  相对于文件上传来说，下载要相对简单的多，但是如何让浏览器下载窗口显示中文名却是一件头痛的事，我曾在execute方法里加上这样一段代码：</p>
<p>ServletActionContext.getResponse().setHeader(&quot;Cont ent-Disposition&quot;,&quot;attachment; filename=&quot;+ new String(this.getFileName().getBytes(&quot;GBK&quot;),&quot;ISO-8859-1&quot;));</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  这是由于比较固执的想法和观念没有改变造成的，总想着我要去设置setHeader，告诉浏览器这是一个下载文件并把文件名经过相应的编码给它，让它能正确显示。事实证明这样做会带来一件让人沮丧的事，就是不管你怎么设它，在firefox和Opera里面中文文件名它都是乱码，好不容易把它转成中文显示了，却发现文件的后缀名最后有一个英文的逗号，也就是说，用户在下载了相应的文件后要自己手动去改后缀名，才能正常使用这个文件，可想而知，这是不现实的。我曾想过去判断用户所使用的浏览器，如果不是IE的话，我就把最后那个逗号给截了。可谁知道要是换了别的应行环境它出现的是不是还是逗号，而且这个逗号是怎么来的，为什么是逗号，我一无所知，要是在别的环境下它出现的不是逗号，我是不是要去重新改代码，这更是一件不现实的事。还好最后我没这样做，要是这样做了，那真是傻得没药救了！</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  事实上struts2中很多功能都为我们封装得很好了，只要我们给它属性注入相应的值，程序就能正常的跑起来。文件的下载也不例外，我们找到这样一个类StreamResult，文件的下载由这个类全部为我们完成。其中有一个非常重要的属性contentDisposition，这个属性决定了下载窗口中显示的文件名，不用我们像上面一样去手动设置response的setHeader，我们只要给这个属性注入正确的值，一切就OK。</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  而这个值需要去struts.xml文件里相应的action里去配置，由于是动态决定下载的文件，这里使用了EL表达式，${fileName}，而fileName对应的则是DownloadAction里的getFileName()方法，只要在这里给fileName相应的编码，struts2会自动寻找这个方法，并把相应的值注入到xml文件中，这样浏览器的下载窗口中就能正常显示我们想要的中文名。</p> <a href="http://hi.baidu.com/andy%5Ftj/blog/item/423090559481e2cdb745aec7.html">阅读全文</a>
		
		<br/><b>类别：</b><a href="http://hi.baidu.com/andy%5Ftj/blog/category/Struts2">Struts2</a>&nbsp;<a href="http://hi.baidu.com/andy%5Ftj/blog/item/423090559481e2cdb745aec7.html#comment">查看评论</a>]]></description>
        <pubDate>2009年06月16日 星期二  16:40</pubDate>
        <category><![CDATA[Struts2]]></category>
        <author><![CDATA[andy_tj]]></author>
		<guid>http://hi.baidu.com/andy%5Ftj/blog/item/423090559481e2cdb745aec7.html</guid>
</item>

<item>
        <title><![CDATA[Flash 3D引擎全集【转】]]></title>
        <link><![CDATA[http://hi.baidu.com/andy%5Ftj/blog/item/40edcee7861c2927b93820bc.html]]></link>
        <description><![CDATA[
		
		<p>过去几个月中，大家发现每一天都有新的3D组件和框架发布到Flash社区。我每天跟踪大量文章，即便是这样，我仍然在大量资源和新信息中晕头转向。所以我决定列出这张清单，收集所有Flash的3D工作。如果我落下的什么，请给我留言，我很愿意继续完善这张清单。</p>
<p> </p>
<p><strong>2.5D AS3 Isometric Engines（这怎么翻？）</strong></p>
<ul>
    <li><a href="http://www.ffilmation.org/website/" target="_blank" jquery1227574880671="3">Ffilmation</a></li>
    <li><a href="http://blog.alternativaplatform.com/en/about/" target="_blank" jquery1227574880671="4">Alternativa Platform</a></li>
</ul>
<p><strong>3D 引擎<br>
</strong></p>
<ul>
    <li><a href="http://blog.papervision3d.org/" target="_blank" jquery1227574880671="5">Papervision 3D</a></li>
    <li><a href="http://www.flashsandy.org/" target="_blank" jquery1227574880671="6">Sandy 3D</a></li>
    <li><a href="http://away3d.com/" target="_blank" jquery1227574880671="7">Away 3D</a></li>
    <li><a href="http://osflash.org/we3d" target="_blank" jquery1227574880671="8">Wire Engine 3D</a></li>
    <li><a href="http://www.electricoyster.com/" target="_blank" jquery1227574880671="9">Electric 3D</a></li>
    <li><a href="http://blog.alternativaplatform.com/en/about/" target="_blank" jquery1227574880671="10">Alternativa Platform</a></li>
</ul>
<p><strong>3D 游戏引擎</strong></p>
<ul>
    <li><a href="http://paperworld3d.com/" target="_blank" jquery1227574880671="11">PaperWorld 3D</a></li>
    <li><a href="http://www.custommedia.co.nz/2008/04/01/im-giving-swfz-away/" target="_blank" jquery1227574880671="12">SWFZ</a></li>
</ul>
<p><strong>3D 矢量引擎</strong></p>
<ul>
    <li><a href="http://five3d.mathieu-badimon.com/" target="_blank" jquery1227574880671="13">Five 3D</a></li>
</ul>
<p><strong>3D 物理引擎（提供很好的碰撞等物理效果支持）</strong></p>
<ul>
    <li><a href="http://seraf.mediabox.fr/wow-engine/" jquery1227574880671="14">WOW Engine</a></li>
</ul>
<p><strong>3D Flash 组件</strong></p>
<ul>
    <li><a href="http://www.freespin3d.com/" target="_blank" jquery1227574880671="15">FreeSpin 3D</a></li>
    <li><a title="Permalink for Papervision3D CS3 Component Update v1.5" href="http://www.rockonflash.com/blog/?p=60" jquery1227574880671="16">Papervision3D CS3 Component</a></li>
</ul>
<p><strong>3D 动画框架</strong></p>
<ul>
    <li><a href="http://www.cast3d.com/" target="_blank" jquery1227574880671="17">Cast 3D</a></li>
</ul>
<p><strong>3D 建模器</strong></p>
<ul>
    <li><a href="http://www.g-nero.com/" target="_blank" jquery1227574880671="18">G-Nero</a></li>
</ul>
<p>文章转自：<a href="http://hi.baidu.com/sxy366/blog/item/d66c16393f8303f43b87ce2f.html">http://hi.baidu.com/sxy366/blog/item/d66c16393f8303f43b87ce2f.html</a></p> <a href="http://hi.baidu.com/andy%5Ftj/blog/item/40edcee7861c2927b93820bc.html">阅读全文</a>
		
		<br/><b>类别：</b><a href="http://hi.baidu.com/andy%5Ftj/blog/category/3d%D4%AD%C0%ED">3d原理</a>&nbsp;<a href="http://hi.baidu.com/andy%5Ftj/blog/item/40edcee7861c2927b93820bc.html#comment">查看评论</a>]]></description>
        <pubDate>2009年06月15日 星期一  15:23</pubDate>
        <category><![CDATA[3d原理]]></category>
        <author><![CDATA[andy_tj]]></author>
		<guid>http://hi.baidu.com/andy%5Ftj/blog/item/40edcee7861c2927b93820bc.html</guid>
</item>

<item>
        <title><![CDATA[三维图形成象的基本原理【转】]]></title>
        <link><![CDATA[http://hi.baidu.com/andy%5Ftj/blog/item/ddcce18980d7f3bb0f2444f4.html]]></link>
        <description><![CDATA[
		
		一个三维模型/场景要成像和运动在屏幕上，至少需要下面的要素。数学苦手或者完全没接触过的朋友不用怕，了解一下先，具体的计算法我们会在以后的教程中一一说明。
<p><strong>模型和贴图： </strong><br>
三个点连接成一个三角形，很多三角形组成一个模型。<br>
贴图就是模型的每个点(x,y,z)对应的一个平面的(u,v)，u,v也就是平面位图的x,y，只不过点用了x,y了，怕重复而已。<br>
Flash3d里面的贴图就是根据每个三角形的不同斜度，和每个点对应的UV计算出beginBitmapFill的第二个矩阵参数（matrix）来用位图填充三角形。<br>
<img height="311" src="http://www.flab3d.com/tutorialfile/t02/tutorial03_02.jpg" width="400"></p>
<p><strong>运动： </strong><br>
对于初接触图形数学的朋友，下面的道理（二维，三维图形都是这样的道理，只不过三维多一个Z轴）一定会让你吃一惊。<br>
所有我们以为在动的点/模型其实都没有动（相对坐标系），运动的只是坐标系而已。移动，旋转，放大，透视全是同一个原理，不过是在移动，旋转，放大，透视这些点/模型所在的坐标系而已。<br>
所谓摄像机的各种运动根本就是浮云。摄像机绕Y顺时针拍摄，只不过是模型的坐标系在绕Y逆时针转而已。<br>
<br>
所有点的任何变动都是一个点（x,y,z）乘以一个矩阵得到的。就这么简单。<br>
千万不要听到这个就吓跑了，我们不需要去仔细研究什么是矩阵，我们只要知道怎么用就行了。而且也根本不需要我们自己去计算，数学算法类flash3d的引擎都是写好了的。<br>
一个东西要动，不管是二维还是三维，就必须得要它的每个点都乘以某个矩阵，这是逃不掉的。<br>
<img height="311" src="http://www.flab3d.com/tutorialfile/t02/tutorial03_01.jpg" width="400"></p>
<p><strong>&lsquo;投射&rsquo;在屏幕上 </strong><br>
虽说是&lsquo;三维&rsquo;，但实际上我们还是从二维平面的屏幕上观看的。所以我们必须要把三维的点(x,y,z)，变成只有（x,y）的点显示在平面的电脑屏幕上。形象一点可以说三维点的显示就是这个点&lsquo;投影&rsquo;在平面的画布上。<br>
有些朋友会说，我直接把x,y,z的z值去掉不就行了。是的，直接去掉我们就能得到一个（x,y）的点，但是这样投影下来图形没有近大远小的变化，看起来稍稍有点奇怪。<br>
于是我们就有了&lsquo;透视投影&rsquo;，算法是用x，y除以某个和Z有关的值w来得到一个近大远小的透视后的（x,y），这才是我们平常看到最正常近大远小的三维图像。<br>
<img height="311" src="http://www.flab3d.com/tutorialfile/t02/tutorial03_03.jpg" width="400"></p>
<p>图形学的原理是读懂flash3d各种引擎核心内容的基础的基础，只有了解这样的知识后，读引擎源代码才有意义，以后才能慢慢加入写引擎代码的行列，否则只会迷失在代码的海洋中（有时会吐=A=）&#65377; 让我们一起迈出这第一步吧，加油！</p>
<p>文章转自：<a href="http://www.flab3d.com/">http://www.flab3d.com/</a></p> <a href="http://hi.baidu.com/andy%5Ftj/blog/item/ddcce18980d7f3bb0f2444f4.html">阅读全文</a>
		
		<br/><b>类别：</b><a href="http://hi.baidu.com/andy%5Ftj/blog/category/3d%D4%AD%C0%ED">3d原理</a>&nbsp;<a href="http://hi.baidu.com/andy%5Ftj/blog/item/ddcce18980d7f3bb0f2444f4.html#comment">查看评论</a>]]></description>
        <pubDate>2009年06月11日 星期四  17:14</pubDate>
        <category><![CDATA[3d原理]]></category>
        <author><![CDATA[andy_tj]]></author>
		<guid>http://hi.baidu.com/andy%5Ftj/blog/item/ddcce18980d7f3bb0f2444f4.html</guid>
</item>

<item>
        <title><![CDATA[图形学原理 矩阵变换【转】]]></title>
        <link><![CDATA[http://hi.baidu.com/andy%5Ftj/blog/item/31542919dd664c4d43a9adc9.html]]></link>
        <description><![CDATA[
		
		<p>空间中的某个点（x,y,z）的任何移动，旋转，缩放的变换，都是用这个点乘以某个一个矩阵而得到。那么模型是由一个个(x,y,z)的点组成，模型整个要变换，就是让每个点乘以某个矩阵。这个我们在<a class="s2" href="http://www.flab3d.com/tutorials_02_graphicenginebasic.php">《三维成像基本原理里》</a>提到过。<br>
这是三维引擎开发，和引擎代码阅读的必备的基础常识。<br>
Flash3d的引擎里给我们提供了很丰富的运算类。（详细我们在《pv3d, sandy, away3d的三维数学运算类》介绍）<br>
由于（x,y,z）乘以3*3矩阵可以达到旋转和缩放的目的，但是无法表示移动，所以为了统一，我们通常是采用乘以一个4行4列的矩阵。我们flash3d的引擎也都是为我们准备的4*4/4*3矩阵有关的算法。也就是说所有变换方法，都是用如下公式：<br>
变换后点的（x&rsquo;,y&rsquo;,z&rsquo;）=原来的（x,y,z） 乘以 4*4矩阵M<br>
如果使用pv3d的数学类，写法如下：<br>
<br>
var 点:number3D=new Number3D(x的值,y的值,z的值); //原来的点<br>
var 数组:Array=[n11,n12,n13, 0,<br>
                  n21,n22,n23, 0,<br>
                  n31,n32,n33, 0,<br>
                  nx , ny, nz, 1]; //构造矩阵内每个值，需要一个数组，我们通常都是以这种格式书写<br>
var 矩阵: Matrix3D=new Matrix3D(数组); //构造矩阵<br>
Matrix3D.multiplyVector4x4(矩阵,点); //点的x,y,z数据直接就更新为相乘后的数据了。<br>
<br>
那么具体是用哪个矩阵M呢？下面我们就列出来：<br>
（本教程的公式图，来自Skyman君的博客<a href="http://www.cnblogs.com/skyman/">http://www.cnblogs.com/skyman/</a>）<br>
<br>
<strong>旋转</strong><br>
旋转在三维里应该是最麻烦的东西，因为人类对旋转的描述是很有限。光靠矩阵控制旋转很多情况是非常复杂和不形象的，所以我们还发明了优拉角和四元数这些对旋转的控制更优良的办法，这些我们以后会讲到。<br>
<br>
角度θ表示的是延某轴旋转的角度。<br>
下面三个矩阵分别表示了点绕x轴，y轴，z轴的旋转矩阵。<br>
<img height="73" src="http://www.flab3d.com/tutorialfile/t11/rotate.jpg" width="477"><br>
<br>
<strong>移动</strong><br>
从公式我们很容易能看出，第4行1，2，3列的数，分别控制着点在x,y,z方向上的移动。<br>
<img height="66" src="http://www.flab3d.com/tutorialfile/t11/trans.jpg" width="217"><br>
<br>
<strong>缩放</strong><br>
从公式我们很容易能看出，对角线上的n11,n22,n33，分别控制着点在x,y,z方向上的缩放。<br>
<img height="66" src="http://www.flab3d.com/tutorialfile/t11/scale.jpg" width="217"><br>
<br>
<br>
这些就是最简单的变换矩阵，熟悉了这些，我们就又向前迈进了一步。<br>
图形学应该是一个很有趣的东西，并非像很多学校和学生教授的的那种痛苦不堪的东西。其实道理非常简单，如果自己再具备一点编程知识，很容易就能做出自己的成像程序。</p>
<p>转自：<a href="http://www.flab3d.com/">www.flab3d.com</a></p> <a href="http://hi.baidu.com/andy%5Ftj/blog/item/31542919dd664c4d43a9adc9.html">阅读全文</a>
		
		<br/><b>类别：</b><a href="http://hi.baidu.com/andy%5Ftj/blog/category/3d%D4%AD%C0%ED">3d原理</a>&nbsp;<a href="http://hi.baidu.com/andy%5Ftj/blog/item/31542919dd664c4d43a9adc9.html#comment">查看评论</a>]]></description>
        <pubDate>2009年06月11日 星期四  11:10</pubDate>
        <category><![CDATA[3d原理]]></category>
        <author><![CDATA[andy_tj]]></author>
		<guid>http://hi.baidu.com/andy%5Ftj/blog/item/31542919dd664c4d43a9adc9.html</guid>
</item>


</channel>
</rss>