﻿<?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-关注技术，关注生活-文章分类-Flex</title><link>http://www.blogjava.net/errorfun/category/39695.html</link><description>任何事情只要开始去做，永远不会太迟。</description><language>zh-cn</language><lastBuildDate>Wed, 20 May 2009 14:46:38 GMT</lastBuildDate><pubDate>Wed, 20 May 2009 14:46:38 GMT</pubDate><ttl>60</ttl><item><title>[转]AS3中的强制类型转换</title><link>http://www.blogjava.net/errorfun/articles/271727.html</link><dc:creator>errorfun</dc:creator><author>errorfun</author><pubDate>Wed, 20 May 2009 07:18:00 GMT</pubDate><guid>http://www.blogjava.net/errorfun/articles/271727.html</guid><wfw:comment>http://www.blogjava.net/errorfun/comments/271727.html</wfw:comment><comments>http://www.blogjava.net/errorfun/articles/271727.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/errorfun/comments/commentRss/271727.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/errorfun/services/trackbacks/271727.html</trackback:ping><description><![CDATA[<p>每一种编程语言都提供强制类型转换，允许你将某一种数据类型转换成另一种数据类型，AS3自然也不例外。但是虽然我编写了不少Flex程序，对AS3中的强制类型转换还是不太清楚，以前AS中是这样进行强制类型转换的：假设有一个类叫做Class1，我们声明了一个它的对象 c1，如果想要将它转换成Class2类型，只要这样写：</p>
<p>Class2(c1);<br />
<br />
在AS3中你依然可以这样写，但是AS3 中提供了一个新的操作符： as ，并且推荐使用as 进行强制转换，上述的例子用 as 操作符实现就是这样：</p>
<p>c1 as Class2;</p>
<p>使用 as 操作符有几个好处：</p>
<p>1.它的效果和第一种方法是一样的。<br />
2.如果类型不兼容无法转换，就会返回null，而不是出错。这样你就可以自定义错误的时候该做什么。<br />
3.没有运行时错误（Run Time Error）提示。</p>
<p>不过有些时候我在使用 as 的时候并不能达到强制转换的目的，而使用第一种方法则可以。为什么 as 操作符有时候会不好用呢？这个问题困扰了我很久，知道昨天在MXNA上发现了<a href="http://raghuonflex.wordpress.com/2007/07/27/casting-vs-the-as-operator/" target="_blank">一篇日志</a>，才恍然大悟：原来在AS3.0类库中最高层类（Top Level classes，所有Top Level classes的列表<a href="http://livedocs.adobe.com/flex/2/langref/package-detail.html" target="_blank">请看这里</a>）之间进行强制转换时， as 操作符是不起作用的。比如，假如你想要将一个String 类型的字符串 str 转换成 Number 类型的数字 num 时，可能想要这样写：</p>
<p>num = str as Number;</p>
<p>这样写是没有用的，你只能通过第一种方法来达到强制转换的目的：</p>
<p>num = Number(str);</p>
<p>特别感谢<a href="http://raghuonflex.wordpress.com" target="_blank">raghuonflex</a>对此做了说明，也希望这些对学习Flex的人有些提示。</p>
<p>注：以上技巧我只在Flex 中验证过，本人对Flash一窍不通，不保证也适用于 Flash中的 AS3.0 。</p><img src ="http://www.blogjava.net/errorfun/aggbug/271727.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/errorfun/" target="_blank">errorfun</a> 2009-05-20 15:18 <a href="http://www.blogjava.net/errorfun/articles/271727.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>