<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>飞扬轻狂&#039;s blog &#187; ActionScript</title>
	<atom:link href="http://blog.fallseir.com/tag/actionscript/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.fallseir.com</link>
	<description>我心飞扬 我意轻狂</description>
	<lastBuildDate>Thu, 06 May 2010 07:13:50 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
<atom:link rel="hub" href="http://pubsubhubbub.appspot.com"/><atom:link rel="hub" href="http://superfeedr.com/hubbub"/><cloud domain='blog.fallseir.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
		<item>
		<title>在ActionScript 3 中动态加载一个类</title>
		<link>http://blog.fallseir.com/2008/02/as3_getdefinition/</link>
		<comments>http://blog.fallseir.com/2008/02/as3_getdefinition/#comments</comments>
		<pubDate>Tue, 26 Feb 2008 06:30:12 +0000</pubDate>
		<dc:creator>飞扬轻狂</dc:creator>
				<category><![CDATA[笔记]]></category>
		<category><![CDATA[ActionScript]]></category>

		<guid isPermaLink="false">http://blog.fallseir.com/2008/02/%e5%9c%a8actionscript-3-%e4%b8%ad%e5%8a%a8%e6%80%81%e5%8a%a0%e8%bd%bd%e4%b8%80%e4%b8%aa%e7%b1%bb/</guid>
		<description><![CDATA[在ActionScript 3 中动态加载一个类 &#8211;Script segment for UIComponent 找了好久的AS3中的反射，终于在这个 UIComponent 中找到了关键字： 反射、动态加载、getDefinitionByName、applicationDomain.getDefinition 关键点： 1. skin is Class 类可以当作变量的值传递 2. new skin() 变量可以用于new方法 用于构建变量的值的实例 3. getDefinitionByName(skin.toString()) 可以通过类名获取类声明，也就是类变量 4. loaderInfo.applicationDomain.getDefinition(skin.toString()) 应用程序域内声明的类不能通过普通的 getDefinitionByName 的方式获取，比如在swf中为miveclip声明的类 /** * @private (protected) * * @langversion 3.0 * @playerversion Flash 9.0.28.0 */ protected function getDisplayObjectInstance( skin:Object):DisplayObject { var classDef:Object = null; if (skin is [...]]]></description>
			<content:encoded><![CDATA[<p>在ActionScript 3 中动态加载一个类<br />
 &#8211;<a href="http://www.fallseir.com/wiki/Script_segment_for_UIComponent.as.html">Script segment for UIComponent</a></p>
<p>找了好久的AS3中的反射，终于在这个 UIComponent 中找到了关键字：</p>
<p>反射、动态加载、getDefinitionByName、applicationDomain.getDefinition</p>
<p>关键点：</p>
<p>   1. skin is Class 类可以当作变量的值传递<br />
   2. new skin() 变量可以用于new方法 用于构建变量的值的实例<br />
   3. getDefinitionByName(skin.toString()) 可以通过类名获取类声明，也就是类变量<br />
   4. loaderInfo.applicationDomain.getDefinition(skin.toString()) 应用程序域内声明的类不能通过普通的 getDefinitionByName 的方式获取，比如在swf中为miveclip声明的类 </p>
<p><code><br />
/**<br />
 * @private (protected)<br />
 *<br />
 * @langversion 3.0<br />
 * @playerversion Flash 9.0.28.0<br />
 */<br />
protected function getDisplayObjectInstance(<br />
  skin:Object):DisplayObject {<br />
  var classDef:Object = null;<br />
  if (skin is Class) {<br />
    return (new skin()) as DisplayObject;<br />
  } else if (skin is DisplayObject) {<br />
    (skin as DisplayObject).x = 0;<br />
    (skin as DisplayObject).y = 0;<br />
    return skin as DisplayObject;<br />
  }<br />
  try {<br />
    classDef = getDefinitionByName(skin.toString());<br />
  } catch(e:Error) {<br />
    try {<br />
      classDef = loaderInfo.applicationDomain<br />
         .getDefinition(skin.toString()) as Object;<br />
    } catch (e:Error) {<br />
      // Nothing<br />
    }<br />
  }<br />
  if (classDef == null) {<br />
    return null;<br />
  }<br />
  return (new classDef()) as DisplayObject;<br />
}<br />
</code><br />
by fallseir http://fallseir.com fallseir[at]gmail[dot]com 20080226 转载请保留 </p>
]]></content:encoded>
			<wfw:commentRss>http://blog.fallseir.com/2008/02/as3_getdefinition/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>
