<?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>ActionScript 3 Lover &#187; ActionScript3</title>
	<atom:link href="http://as3blog.com/tag/as3/feed/" rel="self" type="application/rss+xml" />
	<link>http://as3blog.com</link>
	<description>Focus on ActionScript 3</description>
	<lastBuildDate>Thu, 19 Nov 2009 04:51:08 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.6</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>利用Socket解析HTTP头</title>
		<link>http://as3blog.com/as3/get-http-headers-with-actionscript3/</link>
		<comments>http://as3blog.com/as3/get-http-headers-with-actionscript3/#comments</comments>
		<pubDate>Thu, 19 Nov 2009 04:50:32 +0000</pubDate>
		<dc:creator>Aw</dc:creator>
				<category><![CDATA[ActionScript3]]></category>
		<category><![CDATA[http header]]></category>
		<category><![CDATA[socket]]></category>

		<guid isPermaLink="false">http://as3blog.com/as3/get-http-headers-with-actionscript3/</guid>
		<description><![CDATA[这个问题我好奇了很久都没有结果，尝试搜索了大量类似“Flash解析HTTP头”、“AS3解析HTTP Header”、&#34;Use AS3 to read/get HTTP Header&#34;的关键词，大多数文章都是讲述如何构造HTTP头（我认为大概是为了用Flash模拟一些类似文件上传的请求来改善用户体验）。但是，利用Flash（AS）解析HTTP头，还真没想到啥好办法。
今天中午终于意识到，这个问题应该用Socket……这真的是一个“意识”的问题，太惭愧了！
当然，过程也稍微复杂一点，先要构造一个请求头，然后解析返回信息。不过可以将这些操作封装成一个类似load的public function出来，日后使用则如同URLLoader那样方便。
授人以鱼不如授人以渔，具体细节我就不赘述了，有兴趣的朋友们可以制作一个给我用，哈哈！
]]></description>
			<content:encoded><![CDATA[<p>这个问题我好奇了很久都没有结果，尝试搜索了大量类似“Flash解析HTTP头”、“AS3解析HTTP Header”、&quot;Use AS3 to read/get HTTP Header&quot;的关键词，大多数文章都是讲述如何构造HTTP头（我认为大概是为了用Flash模拟一些类似文件上传的请求来改善用户体验）。但是，利用Flash（AS）解析HTTP头，还真没想到啥好办法。</p>
<p>今天中午终于意识到，这个问题应该用Socket……这真的是一个“意识”的问题，太惭愧了！</p>
<p>当然，过程也稍微复杂一点，先要构造一个请求头，然后解析返回信息。不过可以将这些操作封装成一个类似load的public function出来，日后使用则如同URLLoader那样方便。</p>
<p>授人以鱼不如授人以渔，具体细节我就不赘述了，有兴趣的朋友们可以制作一个给我用，哈哈！</p>
]]></content:encoded>
			<wfw:commentRss>http://as3blog.com/as3/get-http-headers-with-actionscript3/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>C/C++ on FlashPlayer10 （炼金术）</title>
		<link>http://as3blog.com/news/c-cplusplus-on-actionscript-flashplayer10/</link>
		<comments>http://as3blog.com/news/c-cplusplus-on-actionscript-flashplayer10/#comments</comments>
		<pubDate>Thu, 20 Nov 2008 03:28:06 +0000</pubDate>
		<dc:creator>Aw</dc:creator>
				<category><![CDATA[News]]></category>
		<category><![CDATA[ActionScript3]]></category>
		<category><![CDATA[c]]></category>
		<category><![CDATA[cplusplus]]></category>

		<guid isPermaLink="false">http://as3blog.com/news/c-c-plusplus-on-actionscript-flashplayer/</guid>
		<description><![CDATA[啥也不说了，去这里看视频：http://brajeshwar.com/2008/cc-to-actionscript-compiler/
一旦网络游戏开始基于ActionScript技术，Adobe的市场前景将不可限量。
资源：
一些测试类库：
http://labs.adobe.com/wiki/index.php/Alchemy:Libraries
Alchemy（炼金术）简介：
http://labs.adobe.com/technologies/alchemy/
相关下载：
http://labs.adobe.com/downloads/alchemy.html
相关论坛：
http://www.adobe.com/cfusion/webforums/forum/categories.cfm?forumid=72&#38;catid=755&#38;entercat=y
]]></description>
			<content:encoded><![CDATA[<p>啥也不说了，去这里看视频：<a href="http://brajeshwar.com/2008/cc-to-actionscript-compiler/">http://brajeshwar.com/2008/cc-to-actionscript-compiler/</a></p>
<p>一旦网络游戏开始基于ActionScript技术，Adobe的市场前景将不可限量。</p>
<p>资源：</p>
<p>一些测试类库：</p>
<p><a href="http://labs.adobe.com/wiki/index.php/Alchemy:Libraries">http://labs.adobe.com/wiki/index.php/Alchemy:Libraries</a></p>
<p>Alchemy（炼金术）简介：</p>
<p><a href="http://labs.adobe.com/technologies/alchemy/">http://labs.adobe.com/technologies/alchemy/</a></p>
<p>相关下载：</p>
<p><a href="http://labs.adobe.com/downloads/alchemy.html">http://labs.adobe.com/downloads/alchemy.html</a></p>
<p>相关论坛：</p>
<p><a href="http://www.adobe.com/cfusion/webforums/forum/categories.cfm?forumid=72&amp;catid=755&amp;entercat=y">http://www.adobe.com/cfusion/webforums/forum/categories.cfm?forumid=72&amp;catid=755&amp;entercat=y</a></p>
]]></content:encoded>
			<wfw:commentRss>http://as3blog.com/news/c-cplusplus-on-actionscript-flashplayer10/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>继承时事件（Event）的一些表现</title>
		<link>http://as3blog.com/as3/how-is-addeventlistener-working-in-inheritance/</link>
		<comments>http://as3blog.com/as3/how-is-addeventlistener-working-in-inheritance/#comments</comments>
		<pubDate>Mon, 27 Oct 2008 14:18:42 +0000</pubDate>
		<dc:creator>Aw</dc:creator>
				<category><![CDATA[ActionScript3]]></category>
		<category><![CDATA[inheritance]]></category>
		<category><![CDATA[override]]></category>

		<guid isPermaLink="false">http://as3blog.com/as3/how-is-addeventlistener-working-in-inheritance/</guid>
		<description><![CDATA[由于事件（Event）的特殊性，在继承（inheritance）中，往往容易被我们所误用。
一个简单的例子：
某类A继承自Sprite
package      {       &#160;&#160;&#160; import flash.display.Sprite;       &#160;&#160;&#160; import flash.events.Event;       &#160;&#160;&#160; public class A extends Sprite       &#160;&#160;&#160; {       &#160;&#160;&#160;&#160;&#160;&#160;&#160; function A(a:String = [...]]]></description>
			<content:encoded><![CDATA[<p>由于事件（Event）的特殊性，在继承（<a title="inheritance" href="http://as3blog.com/tag/inheritance">inheritance</a>）中，往往容易被我们所误用。</p>
<p>一个简单的例子：</p>
<p>某类A继承自Sprite</p>
<blockquote><p>package      <br />{       <br />&#160;&#160;&#160; import flash.display.Sprite;       <br />&#160;&#160;&#160; import flash.events.Event;       <br />&#160;&#160;&#160; public class A extends Sprite       <br />&#160;&#160;&#160; {       <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; function A(a:String = &quot;t&quot;)       <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; {       <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; super();       <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; trace(a);       <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; this.addEventListener(Event.ADDED_TO_STAGE, init);       <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; }       <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; protected function init(e:Event):void       <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; {       <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; trace(&quot;A added!&quot;);       <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; }       <br />&#160;&#160;&#160; }       <br />}</p>
</blockquote>
<p>某类B，继承自A</p>
<blockquote><p>package      <br />{       <br />&#160;&#160;&#160; import flash.display.Sprite;       <br />&#160;&#160;&#160; import flash.events.Event;       <br />&#160;&#160;&#160; public class B extends A       <br />&#160;&#160;&#160; {       <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; function B()       <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; {       <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; super(&#8217;x');       <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; trace(&quot;B&quot;);       <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; //this.addEventListener(Event.ADDED_TO_STAGE, init);       <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; }       <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; protected override function init(e:Event):void       <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; {       <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; super.init(e);       <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; trace(&quot;B added!&quot;);       <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; }       <br />&#160;&#160;&#160; }       <br />}</p>
</blockquote>
<p>文档类代码：</p>
<blockquote><p>var b:B = new B();      <br />addChild(b);</p>
</blockquote>
<p>可以看到，最优雅的方式是：</p>
<ol>
<li>在子类B中，如果继承自父类的函数已经添加了侦听器（这里是构造器），那么事件是会有响应的，不必再添加侦听器</li>
<li>如果子类B中没有init，那么将执行父类的init回调函数（callback Handler）</li>
<li>如果子类B中有init，那么有两种可能：一种是把A、B两个类的init全部写为private的，与上面一样，B的init不会被事件触发。不过，这种需求很少遇到</li>
<li>我们经常遇到的需求是，需要B执行回调函数，但有一些特定的功能。就如同我们常用的override一样，因此，我们把A、B的init都定为protected的；注意，B的init前面要加修饰符override</li>
<li>然后，在B的init里面，用super.init()调用父类的init函数，剩下的部分写入B需要的逻辑即可。</li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://as3blog.com/as3/how-is-addeventlistener-working-in-inheritance/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>全面放弃Flash IDE，采用mxmlc编译时的一些经验分享</title>
		<link>http://as3blog.com/as3/use-mxmlc-instead-of-flash-ide/</link>
		<comments>http://as3blog.com/as3/use-mxmlc-instead-of-flash-ide/#comments</comments>
		<pubDate>Wed, 22 Oct 2008 14:51:32 +0000</pubDate>
		<dc:creator>Aw</dc:creator>
				<category><![CDATA[ActionScript3]]></category>
		<category><![CDATA[actionscript3]]></category>
		<category><![CDATA[编译]]></category>
		<category><![CDATA[调试]]></category>
		<category><![CDATA[flash IDE]]></category>
		<category><![CDATA[mxmlc]]></category>

		<guid isPermaLink="false">http://as3blog.com/as3/use-mxmlc-instead-of-flash-ide/</guid>
		<description><![CDATA[有一些项目由于参与人数多，维护周期长，如果采用Flash Authoring Tool（即FlashIDE，也就是我们传统意义上的Flash制作工具）来编译SWF，会在项目后期造成极大的麻烦。缺点如下：

FLA不是文本文件，无法参与版本管理
FLA与Flash编辑工具的版本相关，兼容性不好
Flash IDE不是免费的

因此，我们需要采用免费的mxmlc等其他编译工具。
一些经验如下：

失去了宝刀trace之后，mxmlc的调试起初会令人很不适应。这时候我建议用Firebug配合调试。在Flash中建立一个类，并设置静态方法，如下：      internal class Debugger      {      &#160;&#160;&#160; import flash.external.ExternalInterface      &#160;&#160;&#160; public static function echo(info:String):void      &#160;&#160;&#160; {      &#160;&#160;&#160;&#160;&#160;&#160;&#160; try{ExternalInterface.call(&#34;console.info&#34;,info);}catch(e:Error){}      [...]]]></description>
			<content:encoded><![CDATA[<p>有一些项目由于参与人数多，维护周期长，如果采用Flash Authoring Tool（即FlashIDE，也就是我们传统意义上的Flash制作工具）来编译SWF，会在项目后期造成极大的麻烦。缺点如下：</p>
<ol>
<li>FLA不是文本文件，无法参与版本管理</li>
<li>FLA与Flash编辑工具的版本相关，兼容性不好</li>
<li>Flash IDE不是免费的</li>
</ol>
<p>因此，我们需要采用免费的<a title="mxmlc" href="http://as3blog.com/tag/mxmlc">mxmlc</a>等其他编译工具。</p>
<p>一些经验如下：</p>
<ol>
<li>失去了宝刀trace之后，mxmlc的调试起初会令人很不适应。这时候我建议用<a title="Firebug" href="http://www.awflasher.com/blog/tag/firebug">Firebug</a>配合调试。在Flash中建立一个类，并设置静态方法，如下：      <br />internal class Debugger      <br />{      <br />&#160;&#160;&#160; import flash.external.ExternalInterface      <br />&#160;&#160;&#160; public static function echo(info:String):void      <br />&#160;&#160;&#160; {      <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; try{ExternalInterface.call(&quot;console.info&quot;,info);}catch(e:Error){}      <br />&#160;&#160;&#160; }       <br />}      <br />我这里是一个internal类，你也可以重新建立一个debug的package，看个人习惯了。      <br />目的就是通过ExternalInterface来将需要输出的参数输出给Firebug的console panel。最大的好处就是，避免了非DisplayObject无法跟踪文本编辑框的麻烦。我个人是非常推崇这种做法的</li>
<li>Embed外部资源是摒弃Flash编辑环境后最重要的一个“标签”。由于不再有Flash方便的类绑定，因此要采用这种一开始我们不太习惯的绑定方式：     <br />[Embed(source=&quot;/www/projects/google/TEST/assets/TEST.png&quot;)]      <br />public static var cursorBitmap:Class;      <br />注意，路径一定要指向相应的文件，建议采用绝对路径以避免不同的package中相对路径不统一的麻烦</li>
<li>由于项目需要，我最近才开始接触mxmlc和Linux下的编译，欢迎诸位高手与我分享经验：）</li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://as3blog.com/as3/use-mxmlc-instead-of-flash-ide/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>对文本框进行大量+=操作时可以用appendText()方法替代</title>
		<link>http://as3blog.com/as3/use-appendtext-method-instead-of-simply-add-the-string/</link>
		<comments>http://as3blog.com/as3/use-appendtext-method-instead-of-simply-add-the-string/#comments</comments>
		<pubDate>Tue, 21 Oct 2008 05:43:30 +0000</pubDate>
		<dc:creator>Aw</dc:creator>
				<category><![CDATA[ActionScript3]]></category>
		<category><![CDATA[appendText]]></category>
		<category><![CDATA[TextField]]></category>

		<guid isPermaLink="false">http://as3blog.com/as3/use-appendtext-method-instead-of-simply-add-the-string/</guid>
		<description><![CDATA[代号为3551的警告也许是我最喜欢的一条警告了，它告诉我们，使用appendText方法可以大幅度提高效率。
原文：
Warning: 3551: Appending text to a TextField using += is many times slower than using the TextField.appendText() method.

我这里做了一个测试：
var allFonts:Array = Font.enumerateFonts(true);     var d = new Date().getTime();      for (var i:Number=0;i&#60;allFonts.length;i++)      {      &#160;&#160;&#160; var _f:Font = allFonts[i] as [...]]]></description>
			<content:encoded><![CDATA[<p>代号为3551的警告也许是我最喜欢的一条警告了，它告诉我们，使用appendText方法可以大幅度提高效率。</p>
<p>原文：</p>
<blockquote><p>Warning: 3551: Appending text to a TextField using += is many times slower than using the TextField.appendText() method.</p>
</blockquote>
<p>我这里做了一个测试：</p>
<blockquote><p>var allFonts:Array = Font.enumerateFonts(true);     <br />var d = new Date().getTime();      <br />for (var i:Number=0;i&lt;allFonts.length;i++)      <br />{      <br />&#160;&#160;&#160; var _f:Font = allFonts[i] as Font;      <br />&#160;&#160;&#160; //a.text+=_f.fontName;      <br />&#160;&#160;&#160; a.appendText(_f.fontName);      <br />}      <br />trace(new Date().getTime() &#8211; d);</p>
</blockquote>
<p>更改将注释符号，得到的结果是，使用+=需要花费700多毫秒，而使用appendText方法，则把时间消耗控制在了100毫秒之内。</p>
]]></content:encoded>
			<wfw:commentRss>http://as3blog.com/as3/use-appendtext-method-instead-of-simply-add-the-string/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>并不是每一次addEventListener都要设置为弱引用</title>
		<link>http://as3blog.com/as3/addeventlistener-as3-weakreference-false/</link>
		<comments>http://as3blog.com/as3/addeventlistener-as3-weakreference-false/#comments</comments>
		<pubDate>Sun, 31 Aug 2008 13:49:10 +0000</pubDate>
		<dc:creator>Aw</dc:creator>
				<category><![CDATA[ActionScript3]]></category>
		<category><![CDATA[addEventListener]]></category>
		<category><![CDATA[useWeakReference]]></category>

		<guid isPermaLink="false">http://as3blog.com/as3/addeventlistener-as3-weakreference-false/</guid>
		<description><![CDATA[之前Flash业界大牛Gskinner曾呼吁大家节约内存使用，多采用弱引用方式。然而，今天发现一味地使用弱引用并不是一条捷径。经过观察发现，一些stage事件和timer事件如果设置为弱引用则会出问题。例如，Timer事件设置弱引用后，只能响应第一次。
仔细、深入了解事件机制，比“全部都用……”要更有效果。
]]></description>
			<content:encoded><![CDATA[<p>之前Flash业界大牛Gskinner曾呼吁大家节约内存使用，多采用弱引用方式。然而，今天发现一味地使用弱引用并不是一条捷径。经过观察发现，一些stage事件和timer事件如果设置为弱引用则会出问题。例如，Timer事件设置弱引用后，只能响应第一次。</p>
<p>仔细、深入了解事件机制，比“全部都用……”要更有效果。</p>
]]></content:encoded>
			<wfw:commentRss>http://as3blog.com/as3/addeventlistener-as3-weakreference-false/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>AS3项目遇到的两个问题，共勉</title>
		<link>http://as3blog.com/as3/some-as3-tips/</link>
		<comments>http://as3blog.com/as3/some-as3-tips/#comments</comments>
		<pubDate>Tue, 05 Aug 2008 16:46:03 +0000</pubDate>
		<dc:creator>Aw</dc:creator>
				<category><![CDATA[ActionScript3]]></category>
		<category><![CDATA[super]]></category>

		<guid isPermaLink="false">http://as3blog.com/as3/as3%e9%a1%b9%e7%9b%ae%e9%81%87%e5%88%b0%e7%9a%84%e4%b8%a4%e4%b8%aa%e9%97%ae%e9%a2%98%ef%bc%8c%e5%85%b1%e5%8b%89/</guid>
		<description><![CDATA[今天在www.awflasher.com/和某公司合作时遇到的问题：

无法用 try &#8230; catch 来捕捉 object as CustomClass 不匹配的“错误”，ActionScript3会默认返回一个null给这个object，只能通过判断它是否为null来鉴别。 
若在Flash CS3中某自定义类继承自flash.display.MovieClip或者flash.display.Sprite，最好在进行任何操作之前先调用一次super构造函数，否则无法使用舞台上的元素，狂汗！ 

转载请保留：http://as3blog.com
]]></description>
			<content:encoded><![CDATA[<p>今天在<a href="http://www.awflasher.com/blog/">www.awflasher.com/</a>和某公司合作时遇到的问题：</p>
<ol>
<li>无法用 try &#8230; catch 来捕捉 object as CustomClass 不匹配的“错误”，ActionScript3会默认返回一个null给这个object，只能通过判断它是否为null来鉴别。 </li>
<li>若在Flash CS3中某自定义类继承自flash.display.MovieClip或者flash.display.Sprite，最好在进行任何操作之前先调用一次super构造函数，否则无法使用舞台上的元素，狂汗！ </li>
</ol>
<p>转载请保留：<a href="http://as3blog.com">http://as3blog.com</a></p>
]]></content:encoded>
			<wfw:commentRss>http://as3blog.com/as3/some-as3-tips/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>非常强大的一款AS3 3D引擎</title>
		<link>http://as3blog.com/news/an-awesome-3d-presentation/</link>
		<comments>http://as3blog.com/news/an-awesome-3d-presentation/#comments</comments>
		<pubDate>Mon, 23 Jun 2008 12:16:27 +0000</pubDate>
		<dc:creator>Aw</dc:creator>
				<category><![CDATA[News]]></category>
		<category><![CDATA[3d]]></category>
		<category><![CDATA[ActionScript3]]></category>

		<guid isPermaLink="false">http://as3blog.com/news/an-awesome-3d-presentation/</guid>
		<description><![CDATA[在Adobe MAX日本的展示：
http://temp.roxik.com/datas/max2007/index.html
自己去看吧。
日本人做的。
]]></description>
			<content:encoded><![CDATA[<p>在Adobe MAX日本的展示：</p>
<p><a title="http://temp.roxik.com/datas/max2007/index.html" href="http://temp.roxik.com/datas/max2007/index.html">http://temp.roxik.com/datas/max2007/index.html</a></p>
<p>自己去看吧。</p>
<p>日本人做的。</p>
]]></content:encoded>
			<wfw:commentRss>http://as3blog.com/news/an-awesome-3d-presentation/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

