<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss 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/" version="2.0">

<channel>
	<title>ActionScript 3 Lover</title>
	
	<link>http://as3blog.com</link>
	<description>Focus on ActionScript 3</description>
	<pubDate>Sun, 12 Jul 2009 02:26:29 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.7.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" href="http://feeds.feedburner.com/as3" type="application/rss+xml" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com" /><item>
		<title>已开始盈利项目寻ActionScript3高手合伙人，限北京地区</title>
		<link>http://as3blog.com/uncategorized/%e5%b7%b2%e5%bc%80%e5%a7%8b%e7%9b%88%e5%88%a9%e9%a1%b9%e7%9b%ae%e5%af%bbactionscript3%e9%ab%98%e6%89%8b%e5%90%88%e4%bc%99%e4%ba%ba%ef%bc%8c%e9%99%90%e5%8c%97%e4%ba%ac%e5%9c%b0%e5%8c%ba/</link>
		<comments>http://as3blog.com/uncategorized/%e5%b7%b2%e5%bc%80%e5%a7%8b%e7%9b%88%e5%88%a9%e9%a1%b9%e7%9b%ae%e5%af%bbactionscript3%e9%ab%98%e6%89%8b%e5%90%88%e4%bc%99%e4%ba%ba%ef%bc%8c%e9%99%90%e5%8c%97%e4%ba%ac%e5%9c%b0%e5%8c%ba/#comments</comments>
		<pubDate>Sun, 12 Jul 2009 02:26:29 +0000</pubDate>
		<dc:creator>Aw</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://as3blog.com/?p=95</guid>
		<description><![CDATA[已开始盈利项目寻ActionScript3高手合伙人，限北京地区。有兴趣者可联系我gmail： awflasher AT gmail DOT com
（本消息8月1日失效）
]]></description>
			<content:encoded><![CDATA[<p>已开始盈利项目寻ActionScript3高手合伙人，限北京地区。有兴趣者可联系我gmail： awflasher AT gmail DOT com</p>
<p>（本消息8月1日失效）</p>

<p><a href="http://feedads.g.doubleclick.net/~a/8bYK-pUoUf5HtsVvsz4yE736fMc/0/da"><img src="http://feedads.g.doubleclick.net/~a/8bYK-pUoUf5HtsVvsz4yE736fMc/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/8bYK-pUoUf5HtsVvsz4yE736fMc/1/da"><img src="http://feedads.g.doubleclick.net/~a/8bYK-pUoUf5HtsVvsz4yE736fMc/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/as3?a=kAs0YJ3FYn4:USSNykUdjQs:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/as3?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/as3?a=kAs0YJ3FYn4:USSNykUdjQs:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/as3?i=kAs0YJ3FYn4:USSNykUdjQs:D7DqB2pKExk" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://as3blog.com/uncategorized/%e5%b7%b2%e5%bc%80%e5%a7%8b%e7%9b%88%e5%88%a9%e9%a1%b9%e7%9b%ae%e5%af%bbactionscript3%e9%ab%98%e6%89%8b%e5%90%88%e4%bc%99%e4%ba%ba%ef%bc%8c%e9%99%90%e5%8c%97%e4%ba%ac%e5%9c%b0%e5%8c%ba/feed/</wfw:commentRss>
		</item>
		<item>
		<title>我认为一个优秀的ActionScript程序员应该具备的特殊技能</title>
		<link>http://as3blog.com/as3/extra-as3-coder-skills/</link>
		<comments>http://as3blog.com/as3/extra-as3-coder-skills/#comments</comments>
		<pubDate>Fri, 29 May 2009 15:01:21 +0000</pubDate>
		<dc:creator>Aw</dc:creator>
		
		<category><![CDATA[ActionScript3]]></category>

		<category><![CDATA[actionscript3]]></category>

		<category><![CDATA[flash]]></category>

		<category><![CDATA[jsfl]]></category>

		<guid isPermaLink="false">http://as3blog.com/as3/extra-as3-coder-skills/</guid>
		<description><![CDATA[除了一些基本的OOP思想之外，我认为一个优秀的ActionScript程序员还应该具备：

JSFL的编写能力 - 如果要你把300个类元件绑定好相应类文件输出，你难道会一个一个去改Linkage？ 
正则表达式的运用 - 无论是查代码还是实现功能，正则太重要！ 
支持宏的文本编辑器的使用 - ActionScript代码的整齐性非常好，这给宏提供了极大的用武之地 
熟练使用Flash Authoring Tool - 有些事情用Shape画不如用Flash画。 
知道Refactor - 命名规范不行的开发者更要善用Refactor 
知道Reference - 知道你的类或者对象都在哪
SVN - 一个人做项目用SVN也是有必要的。
较好与人沟通的能力 - AS3和AS1、2不同，讲究合作和谐，而不是单兵作战。

]]></description>
			<content:encoded><![CDATA[<p>除了一些基本的OOP思想之外，我认为一个优秀的ActionScript程序员还应该具备：</p>
<ol>
<li><a title="JSFL" href="http://www.awflasher.com/blog/tag/jsfl" target="_blank">JSFL</a>的编写能力 - 如果要你把300个类元件绑定好相应类文件输出，你难道会一个一个去改Linkage？ </li>
<li><a title="正则表达式" href="http://www.awflasher.com/blog/archives/1244" target="_blank">正则表达式</a>的运用 - 无论是查代码还是实现功能，正则太重要！ </li>
<li>支持宏的文本编辑器的使用 - ActionScript代码的整齐性非常好，这给宏提供了极大的用武之地 </li>
<li>熟练使用Flash Authoring Tool - 有些事情用Shape画不如用Flash画。 </li>
<li>知道Refactor - 命名规范不行的开发者更要善用Refactor </li>
<li>知道Reference - 知道你的类或者对象都在哪</li>
<li>SVN - 一个人做项目用SVN也是有必要的。</li>
<li>较好与人沟通的能力 - AS3和AS1、2不同，讲究合作和谐，而不是单兵作战。</li>
</ol>

<p><a href="http://feedads.g.doubleclick.net/~a/96HxbomsKioiCu0eWq7duCCDvK0/0/da"><img src="http://feedads.g.doubleclick.net/~a/96HxbomsKioiCu0eWq7duCCDvK0/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/96HxbomsKioiCu0eWq7duCCDvK0/1/da"><img src="http://feedads.g.doubleclick.net/~a/96HxbomsKioiCu0eWq7duCCDvK0/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/as3?a=WeFq-5HW8vg:MefZhT_FKQM:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/as3?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/as3?a=WeFq-5HW8vg:MefZhT_FKQM:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/as3?i=WeFq-5HW8vg:MefZhT_FKQM:D7DqB2pKExk" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://as3blog.com/as3/extra-as3-coder-skills/feed/</wfw:commentRss>
		</item>
		<item>
		<title>一个用于检测FPS和内存占用的小玩意</title>
		<link>http://as3blog.com/as3/fps-memory-leak-monitor-of-as3/</link>
		<comments>http://as3blog.com/as3/fps-memory-leak-monitor-of-as3/#comments</comments>
		<pubDate>Sun, 12 Apr 2009 13:44:12 +0000</pubDate>
		<dc:creator>Aw</dc:creator>
		
		<category><![CDATA[ActionScript3]]></category>

		<category><![CDATA[debug]]></category>

		<category><![CDATA[fps]]></category>

		<category><![CDATA[memory leak]]></category>

		<guid isPermaLink="false">http://as3blog.com/as3/a-fps-memory-leak-monitor-of-as3/</guid>
		<description><![CDATA[最近为CPU和内存占用的细节努力不少，自己也折腾出了一个检测器，用于实时检测FPS（实际上可以算是检测CPU）和内存占用情况。
使用方法，在application的Document Class（或者Application Class）上构建一个检测器实例（MonitorKit）并addChild即可，所含参数比较简单，不再一一赘述：
var monitor:MonitorKit = new MonitorKit(MonitorKit.MKMODE_T);
addChild(monitor);

效果图如下：
 
MonitorKit类如下：

package com.as3blog.utils{
  import flash.display.Sprite;
  import flash.display.Stage;
  import flash.events.Event;
  import flash.system.System;
  import flash.text.TextField;
  import flash.text.TextFieldAutoSize;
  import flash.text.TextFormat;
  import flash.utils.getTimer;

  public class MonitorKit extends Sprite{
    public static const MKMODE_T:String = &#34;MKMODE_T&#34;;
    public static const MKMODE_B:String [...]]]></description>
			<content:encoded><![CDATA[<p>最近为CPU和内存占用的细节努力不少，自己也折腾出了一个检测器，用于实时检测FPS（实际上可以算是检测CPU）和内存占用情况。</p>
<p>使用方法，在application的Document Class（或者Application Class）上构建一个检测器实例（MonitorKit）并addChild即可，所含参数比较简单，不再一一赘述：</p>
<blockquote><pre>var monitor:MonitorKit = new MonitorKit(MonitorKit.MKMODE_T);
addChild(monitor);</pre>
</blockquote>
<p>效果图如下：</p>
<p><img src="http://pic.yupoo.com/awflasher/180917456579/futqmw43.jpg" /> </p>
<p>MonitorKit类如下：</p>
<blockquote>
<pre>package com.as3blog.utils{
  import flash.display.Sprite;
  import flash.display.Stage;
  import flash.events.Event;
  import flash.system.System;
  import flash.text.TextField;
  import flash.text.TextFieldAutoSize;
  import flash.text.TextFormat;
  import flash.utils.getTimer;

  public class MonitorKit extends Sprite{
    public static const MKMODE_T:String = &quot;MKMODE_T&quot;;
    public static const MKMODE_B:String = &quot;MKMODE_B&quot;;
    public static const MKMODE_L:String = &quot;MKMODE_L&quot;;
    public static const MKMODE_R:String = &quot;MKMODE_R&quot;;
    public static const MKMODE_TL:String = &quot;MKMODE_TL&quot;;
    public static const MKMODE_TR:String = &quot;MKMODE_TR&quot;;
    public static const MKMODE_BL:String = &quot;MKMODE_BL&quot;;
    public static const MKMODE_BR:String = &quot;MKMODE_BR&quot;;

    private static var stageInstance:Stage;

    private var lastTime:uint = getTimer();
    private var frames:Number = 0;
    private var monitorKitTextField:TextField;
    private var mode:String;
    private var textColor:uint;
    private var backgroundColor:uint;
    private var transparent:Boolean;
    public static var delay:Number = 0;
    public function MonitorKit(_mode:String = MKMODE_T,
        _transparent:Boolean = true,
        _textColor:uint=0xffffff,
        _backgroundColor:uint=0x000000) {
      mode = _mode;
      transparent = _transparent;
      textColor = _textColor;
      backgroundColor = _backgroundColor;
      // Initialize it when rendered on the stage.
      addEventListener(Event.ADDED_TO_STAGE, initMonitorHandler);
    }

    private function initMonitorHandler(event:Event):void {
      // Unregister the event handler
      removeEventListener(Event.ADDED_TO_STAGE, initMonitorHandler);
      stageInstance = this.stage;
      monitorKitTextField = new TextField();
      monitorKitTextField.selectable = false;
      monitorKitTextField.background = transparent;
      monitorKitTextField.textColor = textColor;
      monitorKitTextField.backgroundColor = backgroundColor;
      monitorKitTextField.autoSize = TextFieldAutoSize.LEFT;
      var format:TextFormat = new TextFormat();
      format.font = &quot;Courier New&quot;;
      format.size = 15;
      monitorKitTextField.setTextFormat(format);
      monitorKitTextField.defaultTextFormat = format;
      monitorKitTextField.text = &quot;[ Loading... ]&quot;;
      addChild(monitorKitTextField);
      stageInstance.addEventListener(Event.ENTER_FRAME, enterFrameHandler);
    }

    public function enterFrameHandler(evt:Event):void {
      frames++;
      var currentTime:uint = getTimer();
      var deltaTime:uint = currentTime - lastTime;
      var fps:Number = frames / deltaTime * 1000;
      monitorKitTextField.text = &quot;FPS: &quot; + fps.toFixed(1);
      monitorKitTextField.appendText(&quot;\nMem: &quot; + Number(System.totalMemory/1024/1024).toFixed(3)+&quot;(M)&quot;);
      frames = 0;
      lastTime = currentTime;
      // Replace the monitor object
      switch (mode) {
        case MKMODE_T:
          monitorKitTextField.x = stageInstance.stageWidth / 2 - monitorKitTextField.width / 2;
          monitorKitTextField.y = 0;
          break;
        case MKMODE_B:
          monitorKitTextField.x = stageInstance.stageWidth / 2 - monitorKitTextField.width / 2;
          monitorKitTextField.y = stageInstance.stageHeight - monitorKitTextField.height;
          break;
        case MKMODE_L:
          monitorKitTextField.x = 0;
          monitorKitTextField.y = stageInstance.stageHeight / 2 - monitorKitTextField.height / 2;
          break;
        case MKMODE_R:
          monitorKitTextField.x = stageInstance.stageWidth - monitorKitTextField.width;
          monitorKitTextField.y = stageInstance.stageHeight / 2 - monitorKitTextField.height / 2;
          break;
        case MKMODE_TL:
          monitorKitTextField.x = 0;
          monitorKitTextField.y = 0;
          break;
        case MKMODE_TR:
          monitorKitTextField.x = stageInstance.stageWidth - monitorKitTextField.width;
          monitorKitTextField.y = 0;
          break;
        case MKMODE_BL:
          monitorKitTextField.x = 0;
          monitorKitTextField.y = stageInstance.stageHeight - monitorKitTextField.height;
          break;
        case MKMODE_BR:
          monitorKitTextField.x = stageInstance.stageWidth - monitorKitTextField.width;
          monitorKitTextField.y = stageInstance.stageHeight - monitorKitTextField.height;
          break;
        default:
        break;
      }
    }
  }
}</pre>
</blockquote>

<p><a href="http://feedads.g.doubleclick.net/~a/7lccU__4KyZhZSUh5WoeKrby-Ys/0/da"><img src="http://feedads.g.doubleclick.net/~a/7lccU__4KyZhZSUh5WoeKrby-Ys/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/7lccU__4KyZhZSUh5WoeKrby-Ys/1/da"><img src="http://feedads.g.doubleclick.net/~a/7lccU__4KyZhZSUh5WoeKrby-Ys/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/as3?a=xXgmM0ASQJU:LHBwrU3eKhc:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/as3?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/as3?a=xXgmM0ASQJU:LHBwrU3eKhc:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/as3?i=xXgmM0ASQJU:LHBwrU3eKhc:D7DqB2pKExk" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://as3blog.com/as3/fps-memory-leak-monitor-of-as3/feed/</wfw:commentRss>
		</item>
		<item>
		<title>建立了一个关于AS3的Google Group，欢迎GMail用户加入</title>
		<link>http://as3blog.com/as3/as3-google-group-in-chinese/</link>
		<comments>http://as3blog.com/as3/as3-google-group-in-chinese/#comments</comments>
		<pubDate>Wed, 01 Apr 2009 02:18:45 +0000</pubDate>
		<dc:creator>Aw</dc:creator>
		
		<category><![CDATA[ActionScript3]]></category>

		<category><![CDATA[Resources]]></category>

		<category><![CDATA[google group]]></category>

		<guid isPermaLink="false">http://as3blog.com/as3/as3-google-group-in-chinese/</guid>
		<description><![CDATA[Google Group配合GMail可以十分方便、高效地讨论技术问题，为此，建立了一个AS3的邮件组交流技术问题。欢迎喜欢使用GMail的朋友们加入。
web地址：
http://groups.google.com/group/as3-discussion

邮件列表地址：
as3-discussion@googlegroups.com

需要加入者请联系这个邮箱，目前需要邀请才可以加入：
awflasher+urgent.as3@gmail.com

]]></description>
			<content:encoded><![CDATA[<p>Google Group配合GMail可以十分方便、高效地讨论技术问题，为此，建立了一个AS3的邮件组交流技术问题。欢迎喜欢使用GMail的朋友们加入。</p>
<p>web地址：</p>
<blockquote><p><a href="http://groups.google.com/group/as3-discussion">http://groups.google.com/group/<b>as3-discussion</b></a></p>
</blockquote>
<p>邮件列表地址：</p>
<blockquote><p><a href="mailto:as3-discussion@googlegroups.com"><b>as3-discussion</b>@googlegroups.com</a></p>
</blockquote>
<p>需要加入者请联系这个邮箱，目前需要邀请才可以加入：</p>
<blockquote><p><a href="mailto:awflasher+urgent.as3@gmail.com">awflasher+urgent.as3@gmail.com</a></p>
</blockquote>

<p><a href="http://feedads.g.doubleclick.net/~a/WwO9OC7bTvdteSijbPmXg45Fykk/0/da"><img src="http://feedads.g.doubleclick.net/~a/WwO9OC7bTvdteSijbPmXg45Fykk/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/WwO9OC7bTvdteSijbPmXg45Fykk/1/da"><img src="http://feedads.g.doubleclick.net/~a/WwO9OC7bTvdteSijbPmXg45Fykk/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/as3?a=U7fol2p26CI:371L-SwXo9A:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/as3?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/as3?a=U7fol2p26CI:371L-SwXo9A:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/as3?i=U7fol2p26CI:371L-SwXo9A:D7DqB2pKExk" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://as3blog.com/as3/as3-google-group-in-chinese/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Adobe携手Facebook推出官方AS3库</title>
		<link>http://as3blog.com/news/adobe-facebook-as3-client-api-library/</link>
		<comments>http://as3blog.com/news/adobe-facebook-as3-client-api-library/#comments</comments>
		<pubDate>Tue, 31 Mar 2009 10:37:05 +0000</pubDate>
		<dc:creator>Aw</dc:creator>
		
		<category><![CDATA[News]]></category>

		<category><![CDATA[api]]></category>

		<category><![CDATA[facebook]]></category>

		<category><![CDATA[library]]></category>

		<guid isPermaLink="false">http://as3blog.com/news/adobe-facebook-as3-client-api-library/</guid>
		<description><![CDATA[http://code.google.com/p/facebook-actionscript-api/
消息来自7yue。
我看了一下，这个库最初由Jason Crist创立，之后Adobe参与联手开发。直接看看源码，很靠谱。
]]></description>
			<content:encoded><![CDATA[<p><a href="http://code.google.com/p/facebook-actionscript-api/">http://code.google.com/p/facebook-actionscript-api/</a></p>
<p>消息来自<a href="http://7yue.com">7yue</a>。</p>
<p>我看了一下，这个库最初由<a href="http://pbking.com/">Jason Crist</a>创立，之后Adobe参与联手开发。直接看看<a href="http://code.google.com/p/facebook-actionscript-api/source/browse/">源码</a>，很靠谱。</p>

<p><a href="http://feedads.g.doubleclick.net/~a/giQq7TkLsNN_Q5KK4TtWEMDPhYw/0/da"><img src="http://feedads.g.doubleclick.net/~a/giQq7TkLsNN_Q5KK4TtWEMDPhYw/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/giQq7TkLsNN_Q5KK4TtWEMDPhYw/1/da"><img src="http://feedads.g.doubleclick.net/~a/giQq7TkLsNN_Q5KK4TtWEMDPhYw/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/as3?a=JA6WLAYsVsI:XK2f0x_-AMY:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/as3?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/as3?a=JA6WLAYsVsI:XK2f0x_-AMY:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/as3?i=JA6WLAYsVsI:XK2f0x_-AMY:D7DqB2pKExk" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://as3blog.com/news/adobe-facebook-as3-client-api-library/feed/</wfw:commentRss>
		</item>
		<item>
		<title>一些结论，松散地记录一下</title>
		<link>http://as3blog.com/as3/flashplayer9-memory-leak-betterin-flashplayer10/</link>
		<comments>http://as3blog.com/as3/flashplayer9-memory-leak-betterin-flashplayer10/#comments</comments>
		<pubDate>Wed, 11 Mar 2009 09:02:11 +0000</pubDate>
		<dc:creator>Aw</dc:creator>
		
		<category><![CDATA[ActionScript3]]></category>

		<category><![CDATA[flashplayer]]></category>

		<category><![CDATA[flashplayer9]]></category>

		<category><![CDATA[garbage collection]]></category>

		<category><![CDATA[memory leak]]></category>

		<guid isPermaLink="false">http://as3blog.com/as3/flashplayer9-memory-leak-betterin-flashplayer10/</guid>
		<description><![CDATA[
FlashPlayer9内存管理方面比如FlashPlayer10好，尤其是在一些cacheAsBitmap属性为true的复杂图形进行一定幅度的缩放时（即重绘区域足够大） 
FlashPlayer10在性能和内存管理方面均优于FlashPlayer9 
对于大量复杂的矢量动画，可以采用动态切换stage.quailty的做法让性能缓解（节约CPU占用） 
看到我这篇博客的读者，如果你认识我一段时间（并认为彼此性格相符）并有兴趣与我合作一个项目，可以看看这篇文章；

]]></description>
			<content:encoded><![CDATA[<ul>
<li>FlashPlayer9内存管理方面比如FlashPlayer10好，尤其是在一些cacheAsBitmap属性为true的复杂图形进行一定幅度的缩放时（即重绘区域足够大） </li>
<li>FlashPlayer10在性能和内存管理方面均优于FlashPlayer9 </li>
<li>对于大量复杂的矢量动画，可以采用动态切换stage.quailty的做法让性能缓解（节约CPU占用） </li>
<li>看到我这篇博客的读者，如果你认识我一段时间（并认为彼此性格相符）并有兴趣与我合作一个项目，可以看看<a title="Looking for Flash Developers" href="http://www.awflasher.com/blog/archives/1712">这篇文章</a>；</li>
</ul>

<p><a href="http://feedads.g.doubleclick.net/~a/HnaCOPshzHINuV7bm93O7gi-43w/0/da"><img src="http://feedads.g.doubleclick.net/~a/HnaCOPshzHINuV7bm93O7gi-43w/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/HnaCOPshzHINuV7bm93O7gi-43w/1/da"><img src="http://feedads.g.doubleclick.net/~a/HnaCOPshzHINuV7bm93O7gi-43w/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/as3?a=DFJKx_gCNnA:Hy9w2MyiPDk:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/as3?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/as3?a=DFJKx_gCNnA:Hy9w2MyiPDk:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/as3?i=DFJKx_gCNnA:Hy9w2MyiPDk:D7DqB2pKExk" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://as3blog.com/as3/flashplayer9-memory-leak-betterin-flashplayer10/feed/</wfw:commentRss>
		</item>
		<item>
		<title>闲话Flash中对小数坐标处理的问题</title>
		<link>http://as3blog.com/as3/fix-decimal-fraction-position-in-actionscript/</link>
		<comments>http://as3blog.com/as3/fix-decimal-fraction-position-in-actionscript/#comments</comments>
		<pubDate>Sat, 14 Feb 2009 04:28:41 +0000</pubDate>
		<dc:creator>Aw</dc:creator>
		
		<category><![CDATA[ActionScript3]]></category>

		<category><![CDATA[Decimal Fraction]]></category>

		<category><![CDATA[position]]></category>

		<guid isPermaLink="false">http://as3blog.com/as3/fix-decimal-fraction-position-in-actionscript/</guid>
		<description><![CDATA[Update: 具体项目中，其实可以用扩展Sprite类并建立setter和getter来实现，不再赘述了。
一个头痛了几天的bug终于fixed……我真的是太迟钝了。
最近，遇到这样一个案例，需要以非常缓慢的速度移动某几个物体，而且，这些物体之间还会发生“无损弹性碰撞”（修正主义万恶的高中课本翻译的是“完全弹性碰撞”，我个人觉得Perfect Collision应该为“无损”更易理解吧？）
总之，这些物体的速度（即位移增量）可能灰常灰常小。小到什么程度呢？这么说吧，由于所有的值都是根据动量守恒定律和能量守恒定律（还记得这俩公式的同学你们可以去解放美帝国主义了）算出来的，因为难免出现某一个物体从某一个角度撞击另一个物体之后，两者中某一物体的某一方向（x或者y）上的速度被“中和”掉了。
刚才提到，在计算机语言中，速度即位移增量。ActoinScript的写法则是：

fuckCERNET.x += fuckCERNET.vx; //fuckCERNET is an instance of some dynamic class

当fuckCERNET.vx &#60; 1/20时，Flash则不再渲染。这是根据FlashPlayer万恶的内部机制来实现的。根据我和一些美帝国主义的Flasher讨论，发现，FlashPlayer对物体x、y属性是有保护的：

Implementation
  public function get x():Number
  public function set x(value:Number):void

为什么要有这个保护呢，也不难理解：肯定是因为你直接让一个物体移动到0.001的位置上后计算机（FlashPlayer）不知道怎么去显示它：计算机是根据像素组成的，例如我们通常所说的1024&#215;768：即便你的影片再高清再无码，你放到80&#215;60的显示器上还是只能显示4800个点。
虽然“万恶”，但不得不承认FlashPlayer很聪明地回避了这样的问题，甚至，很优雅地通过一个setter来解决了问题，我们可以想象这个setter可能会是：

public function set x(value:Number):void {
  if (value &#60; 0.05) value = 0;
  // blah .. blah
}

好的，知道这个之后，就好办了。每次速度改变（即碰撞的时候）做一次“最低值判断”：当速度标量（即不考虑方向）不为0（实际上这种情况很小）但小于0.05时，让速度等于0.05就好，可以用我写的这个函数来修正：

private function fixDecimalFractionPosition(value:Number):Number {
  if (Math.abs(value) &#60; .05) {
    return [...]]]></description>
			<content:encoded><![CDATA[<p>Update: 具体项目中，其实可以用扩展Sprite类并建立setter和getter来实现，不再赘述了。</p>
<p>一个头痛了几天的bug终于fixed……我真的是太迟钝了。</p>
<p>最近，遇到这样一个案例，需要以非常缓慢的速度移动某几个物体，而且，这些物体之间还会发生“无损弹性碰撞”（修正主义万恶的高中课本翻译的是“完全弹性碰撞”，我个人觉得Perfect Collision应该为“无损”更易理解吧？）</p>
<p>总之，这些物体的速度（即位移增量）可能灰常灰常小。小到什么程度呢？这么说吧，由于所有的值都是根据动量守恒定律和能量守恒定律（还记得这俩公式的同学你们可以去解放美帝国主义了）算出来的，因为难免出现某一个物体从某一个角度撞击另一个物体之后，两者中某一物体的某一方向（x或者y）上的速度被“中和”掉了。</p>
<p>刚才提到，在计算机语言中，速度即位移增量。ActoinScript的写法则是：</p>
<blockquote>
<pre>fuckCERNET.x += fuckCERNET.vx; //fuckCERNET is an instance of some dynamic class</pre>
</blockquote>
<p>当fuckCERNET.vx &lt; 1/20时，Flash则不再渲染。这是根据FlashPlayer万恶的内部机制来实现的。根据我和一些美帝国主义的Flasher讨论，发现，FlashPlayer对物体x、y属性是有保护的：</p>
<blockquote>
<pre>Implementation
  public function get x():Number
  public function set x(value:Number):void</pre>
</blockquote>
<p>为什么要有这个保护呢，也不难理解：肯定是因为你直接让一个物体移动到0.001的位置上后计算机（FlashPlayer）不知道怎么去显示它：计算机是根据像素组成的，例如我们通常所说的1024&#215;768：即便你的影片再高清再无码，你放到80&#215;60的显示器上还是只能显示4800个点。</p>
<p>虽然“万恶”，但不得不承认FlashPlayer很聪明地回避了这样的问题，甚至，很优雅地通过一个setter来解决了问题，我们可以想象这个setter可能会是：</p>
<blockquote>
<pre>public function set x(value:Number):void {
  if (value &lt; 0.05) value = 0;
  // blah .. blah
}</pre>
</blockquote>
<p>好的，知道这个之后，就好办了。每次速度改变（即碰撞的时候）做一次“最低值判断”：当速度标量（即不考虑方向）不为0（实际上这种情况很小）但小于0.05时，让速度等于0.05就好，可以用我写的这个函数来修正：</p>
<blockquote>
<pre>private function fixDecimalFractionPosition(value:Number):Number {
  if (Math.abs(value) &lt; .05) {
    return (value &gt; 0) ? .05 : -.05;
  }
  return value;
}</pre>
</blockquote>

<p><a href="http://feedads.g.doubleclick.net/~a/0wHGIrZtafO4MvlTFsRypeXWb94/0/da"><img src="http://feedads.g.doubleclick.net/~a/0wHGIrZtafO4MvlTFsRypeXWb94/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/0wHGIrZtafO4MvlTFsRypeXWb94/1/da"><img src="http://feedads.g.doubleclick.net/~a/0wHGIrZtafO4MvlTFsRypeXWb94/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~f/as3?a=ryX7B0oX"><img src="http://feeds.feedburner.com/~f/as3?d=41" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/as3?a=HKUgfUO4"><img src="http://feeds.feedburner.com/~f/as3?i=HKUgfUO4" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://as3blog.com/as3/fix-decimal-fraction-position-in-actionscript/feed/</wfw:commentRss>
		</item>
		<item>
		<title>什么时候该用cacheAsBitmap，什么时候不该用</title>
		<link>http://as3blog.com/as3/when-and-how-to-use-cacheasbitmap/</link>
		<comments>http://as3blog.com/as3/when-and-how-to-use-cacheasbitmap/#comments</comments>
		<pubDate>Fri, 13 Feb 2009 07:25:07 +0000</pubDate>
		<dc:creator>Aw</dc:creator>
		
		<category><![CDATA[ActionScript3]]></category>

		<category><![CDATA[cacheasbitmap]]></category>

		<guid isPermaLink="false">http://as3blog.com/as3/when-and-how-to-use-cacheasbitmap/</guid>
		<description><![CDATA[根据官方的说明，结合我自己的经验，分享一下：
该用cacheAsBitmap的时候：

在一个复杂的矢量化背景图片上存在大量动画；
滚动文本区域；
基于窗口的应用（你经常会拖拽整块区域）
透明遮罩（必须强制使用，否则失效）

不应该用cacheAsBitmap的时候：

不要滥用，cacheAsBitamp十分消耗内存，一块250&#215;250像素的矩形进行cache之后可能占掉250kb的内存！
目标元素缩放的时候不要使用。
目标元素本身最好是静态的，或者不要经常发生翻转、缩放这样的动画
不要把矢量图和cache的位图一起混用。

]]></description>
			<content:encoded><![CDATA[<p>根据官方的说明，结合我自己的经验，分享一下：</p>
<p>该用cacheAsBitmap的时候：</p>
<ol>
<li>在一个复杂的矢量化背景图片上存在大量动画；</li>
<li>滚动文本区域；</li>
<li>基于窗口的应用（你经常会拖拽整块区域）</li>
<li>透明遮罩（必须强制使用，否则失效）</li>
</ol>
<p>不应该用cacheAsBitmap的时候：</p>
<ol>
<li>不要滥用，cacheAsBitamp十分消耗内存，一块250&#215;250像素的矩形进行cache之后可能占掉250kb的内存！</li>
<li>目标元素缩放的时候不要使用。</li>
<li>目标元素本身最好是静态的，或者不要经常发生翻转、缩放这样的动画</li>
<li>不要把矢量图和cache的位图一起混用。</li>
</ol>

<p><a href="http://feedads.g.doubleclick.net/~a/KoMWsG3D_u5OTuf5dP-GIppjsss/0/da"><img src="http://feedads.g.doubleclick.net/~a/KoMWsG3D_u5OTuf5dP-GIppjsss/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/KoMWsG3D_u5OTuf5dP-GIppjsss/1/da"><img src="http://feedads.g.doubleclick.net/~a/KoMWsG3D_u5OTuf5dP-GIppjsss/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~f/as3?a=3iYGHzug"><img src="http://feeds.feedburner.com/~f/as3?d=41" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/as3?a=z0dyMdsn"><img src="http://feeds.feedburner.com/~f/as3?i=z0dyMdsn" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://as3blog.com/as3/when-and-how-to-use-cacheasbitmap/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Flex Builder编译错误An internal build error has occurred的解决方法</title>
		<link>http://as3blog.com/resources/an-internal-build-error-has-occurred-solution/</link>
		<comments>http://as3blog.com/resources/an-internal-build-error-has-occurred-solution/#comments</comments>
		<pubDate>Wed, 11 Feb 2009 07:38:46 +0000</pubDate>
		<dc:creator>Aw</dc:creator>
		
		<category><![CDATA[Resources]]></category>

		<category><![CDATA[flex]]></category>

		<category><![CDATA[internal build error]]></category>

		<guid isPermaLink="false">http://as3blog.com/resources/an-internal-build-error-has-occurred-solution/</guid>
		<description><![CDATA[在Flex Builder调试ActoinScript项目时，偶尔会出现这种奇怪错误。原因主要是快速编译造成的：
Severity and Description&#160;&#160;&#160; Path&#160;&#160;&#160; Resource&#160;&#160;&#160; Location&#160;&#160;&#160; Creation Time&#160;&#160;&#160; Id      An internal build error has occurred. Right-click for more information.&#160;&#160;&#160;&#160;&#160;&#160;&#160; ****** Unknown

解决方法很简单，按如下步骤：
Help &#62; Product Details. 点击 Configuration Details 按钮, 点击 View Error Log 按钮.
一般地，我们会找到这样的错误：
java.io.FileNotFoundException: D:\projects\google\MyProject.swf (The process cannot access the file because it is being used by another process)
at java.io.FileOutputStream.open(Native [...]]]></description>
			<content:encoded><![CDATA[<p>在Flex Builder调试ActoinScript项目时，偶尔会出现这种奇怪错误。原因主要是快速编译造成的：</p>
<blockquote><p>Severity and Description&#160;&#160;&#160; Path&#160;&#160;&#160; Resource&#160;&#160;&#160; Location&#160;&#160;&#160; Creation Time&#160;&#160;&#160; Id      <br />An internal build error has occurred. Right-click for more information.&#160;&#160;&#160;&#160;&#160;&#160;&#160; ****** Unknown</p>
</blockquote>
<p>解决方法很简单，按如下步骤：</p>
<p>Help &gt; Product Details. 点击 Configuration Details 按钮, 点击 View Error Log 按钮.</p>
<p>一般地，我们会找到这样的错误：</p>
<blockquote style="color: #aaa"><p>java.io.FileNotFoundException: <strong style="color: #000"><u>D:\projects\google\MyProject.swf</u></strong> (The process cannot access the file because it is being used by another process)</p>
<p>at java.io.FileOutputStream.open(Native Method)      <br />at java.io.FileOutputStream.&lt;init&gt;(Unknown Source)       <br />at java.io.FileOutputStream.&lt;init&gt;(Unknown Source)       <br />at com.adobe.flexbuilder.multisdk.compiler.internal.ASApplicationBuilder$MyBuilder.mybuild(ASApplicationBuilder.java:282)       <br />at com.adobe.flexbuilder.multisdk.compiler.internal.ASApplicationBuilder.build(ASApplicationBuilder.java:122)       <br />at com.adobe.flexbuilder.multisdk.compiler.internal.ASBuilder.build(ASBuilder.java:139)       <br />at com.adobe.flexbuilder.multisdk.compiler.internal.ASItemBuilder.build(ASItemBuilder.java:73)       <br />at com.adobe.flexbuilder.project.compiler.internal.FlexProjectBuilder.buildItem(Unknown Source)       <br />at com.adobe.flexbuilder.project.compiler.internal.FlexProjectBuilder.build(Unknown Source)       <br />at com.adobe.flexbuilder.project.compiler.internal.FlexIncrementalBuilder.build(Unknown Source)       <br />at org.eclipse.core.internal.events.BuildManager$2.run(BuildManager.java:624)       <br />at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:37)       <br />at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:166)       <br />at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:197)       <br />at org.eclipse.core.internal.events.BuildManager$1.run(BuildManager.java:246)       <br />at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:37)       <br />at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:249)       <br />at org.eclipse.core.internal.events.BuildManager.basicBuildLoop(BuildManager.java:302)       <br />at org.eclipse.core.internal.events.BuildManager.build(BuildManager.java:334)       <br />at org.eclipse.core.internal.events.AutoBuildJob.doBuild(AutoBuildJob.java:137)       <br />at org.eclipse.core.internal.events.AutoBuildJob.run(AutoBuildJob.java:235)       <br />at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55)</p>
</blockquote>
<p>原因就是表黑的那个文件被FlashPlayer.exe进程打开但没有关闭，因此Flex编译好的新文件无法覆盖这个文件。解决方法非常容易，打开Taskmgr，找到FlashPlayer.exe干掉就好了：）</p>

<p><a href="http://feedads.g.doubleclick.net/~a/w2la_Al9AnWjHgg6DlgTRwKrO_c/0/da"><img src="http://feedads.g.doubleclick.net/~a/w2la_Al9AnWjHgg6DlgTRwKrO_c/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/w2la_Al9AnWjHgg6DlgTRwKrO_c/1/da"><img src="http://feedads.g.doubleclick.net/~a/w2la_Al9AnWjHgg6DlgTRwKrO_c/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~f/as3?a=lZ1Ee29i"><img src="http://feeds.feedburner.com/~f/as3?d=41" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/as3?a=VUfB7jKt"><img src="http://feeds.feedburner.com/~f/as3?i=VUfB7jKt" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://as3blog.com/resources/an-internal-build-error-has-occurred-solution/feed/</wfw:commentRss>
		</item>
		<item>
		<title>如何在Flex Builder中使用Flash CS3组件</title>
		<link>http://as3blog.com/as3/how-to-compile-v3-in-flex-without-fla-files/</link>
		<comments>http://as3blog.com/as3/how-to-compile-v3-in-flex-without-fla-files/#comments</comments>
		<pubDate>Fri, 06 Feb 2009 11:35:36 +0000</pubDate>
		<dc:creator>Aw</dc:creator>
		
		<category><![CDATA[ActionScript3]]></category>

		<category><![CDATA[component]]></category>

		<category><![CDATA[flash cs3]]></category>

		<category><![CDATA[flex builder]]></category>

		<guid isPermaLink="false">http://as3blog.com/as3/how-to-compile-v3-in-flex-without-fla-files/</guid>
		<description><![CDATA[经过我的多次测试，发现直接引用Flash的SWC包只能获得相应的代码提示，并不能完全解决纯Flex Builder编译的问题。因此，如果你想彻底抛弃FLA，又希望能用Flash CS3的组件，必须先在Flash CS3中导出一个SWC，再将这个SWC引入到Flex的Library Path中。这种解决方案来自大名鼎鼎的moockblog同学：）
As a simple example, let&#8217;s assume we want to use the V3 TextArea component in Flex Builder. Here&#8217;s the general process we follow:
1) Create a .swc file containing the desired V3 components.      2) Add the .swc file from Step 1 to the Flex Builder project&#8217;s Library [...]]]></description>
			<content:encoded><![CDATA[<p>经过我的多次测试，发现直接引用Flash的SWC包只能获得相应的代码提示，并不能完全解决纯Flex Builder编译的问题。因此，如果你想彻底抛弃FLA，又希望能用Flash CS3的组件，必须先在Flash CS3中导出一个SWC，再将这个SWC引入到Flex的Library Path中。这种解决方案来自大名鼎鼎的<a href="http://www.moock.org/blog/">moockblog</a>同学：）</p>
<blockquote><p>As a simple example, let&#8217;s assume we want to use the V3 TextArea component in Flex Builder. Here&#8217;s the general process we follow:</p>
<p>1) Create a .swc file containing the desired V3 components.      <br />2) Add the .swc file from Step 1 to the Flex Builder project&#8217;s Library path.       <br />3) Import and use the component classes.</p>
<p>To generate the .swc file in Flash CS3, we follow these steps:</p>
<p>1) Make a new Flash CS3 ActionScript 3.0 .fla file.      <br />2) Drag the desired component(s) to the Library. In this example, we&#8217;ll drag the TextArea component to the Library.       <br />3) Choose File &gt; Export &gt; Export Movie.       <br />4) For File name, enter v3components.swf. (We don&#8217;t even want the generated .swf, but there&#8217;s no other way to get the .swc to compile.)       <br />5) Select a folder in which to save the .swf file.       <br />6) Click Save.       <br />7) In the Export Flash Player dialog, check Export SWC.       <br /> <img src='http://as3blog.com/wp-includes/images/smilies/icon_cool.gif' alt='8)' class='wp-smiley' /> Click OK.</p>
<p>The preceding steps generate two files, v3components.swf and v3components.swc, both of which are placed in the folder selected in Step 5.</p>
<p>Now let&#8217;s use v3components.swc in a Flex Builder project. Follow these steps:</p>
<p>1) In Flex Builder, select File &gt; New &gt; ActionScript Project.      <br />2) For Project name, enter &quot;V3Test.as&quot;.       <br />3) Click Next.       <br />4) For Main source folder, enter &quot;src&quot;.       <br />5) For Main application file, enter &quot;V3Test.as&quot;.       <br />6) On the Library path tab, click Add SWC.       <br />7) Browse to the v3components.swc file from the preceding procedure.       <br /> <img src='http://as3blog.com/wp-includes/images/smilies/icon_cool.gif' alt='8)' class='wp-smiley' /> Click Finish.       <br />9) Update the code in V3Test.as so it looks like this:</p>
<pre>package {
  import flash.display.Sprite;
  import fl.controls.TextArea;
  public class V3Test extends Sprite {
    public function V3Test() {
      var t:TextArea = new TextArea();
      t.text = &quot;You're not cookin'&quot;;
      addChild(t);
    }
  }
}</pre>
<p>10) Run the project.</p>
</blockquote>

<p><a href="http://feedads.g.doubleclick.net/~a/QtfDCTZXijKtbNr-1ALQlWKe6hQ/0/da"><img src="http://feedads.g.doubleclick.net/~a/QtfDCTZXijKtbNr-1ALQlWKe6hQ/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/QtfDCTZXijKtbNr-1ALQlWKe6hQ/1/da"><img src="http://feedads.g.doubleclick.net/~a/QtfDCTZXijKtbNr-1ALQlWKe6hQ/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~f/as3?a=bJM6Cj0K"><img src="http://feeds.feedburner.com/~f/as3?d=41" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/as3?a=hSpbdYDh"><img src="http://feeds.feedburner.com/~f/as3?i=hSpbdYDh" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://as3blog.com/as3/how-to-compile-v3-in-flex-without-fla-files/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
