<?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>flash风</title>
	<atom:link href="http://flash.moligu.com/feed" rel="self" type="application/rss+xml" />
	<link>http://flash.moligu.com</link>
	<description>风总是刮个不停</description>
	<lastBuildDate>Tue, 30 Mar 2010 14:00:15 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Adobe Flash Builder 4和Adobe Flex 4相关资料</title>
		<link>http://flash.moligu.com/110</link>
		<comments>http://flash.moligu.com/110#comments</comments>
		<pubDate>Tue, 30 Mar 2010 14:00:15 +0000</pubDate>
		<dc:creator>电介质</dc:creator>
				<category><![CDATA[AS3]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[flash]]></category>
		<category><![CDATA[FlashBuilder]]></category>

		<guid isPermaLink="false">http://flash.moligu.com/?p=110</guid>
		<description><![CDATA[Adobe Flash Builder 4 在线帮助
Adobe® Flex® 4 Beta 语言参考
使用 Flex 4
使用 Flex 访问数据
]]></description>
			<content:encoded><![CDATA[<p><a title="Adobe Flash Builder 4 在线帮助" href="http://help.adobe.com/zh_CN/Flex/4.0/UsingFlashBuilder/WS4bebcd66a74275c3-7b87aa3b123721bbef2-8000.html" target="_blank">Adobe Flash Builder 4 在线帮助</a></p>
<p><a title="Adobe® Flex® 4 Beta 语言参考" href="http://help.adobe.com/zh_CN/AS3LCR/Flex_4.0/index.html" target="_blank">Adobe® Flex® 4 Beta 语言参考</a></p>
<p><a id="ygtvlabelel82" onclick="return YAHOO.widget.TreeView.getNode('booklist1',82).onLabelClick(YAHOO.widget.TreeView.getNode('booklist1',82))" href="http://help.adobe.com/zh_CN/Flex/4.0/UsingSDK/index.html" target="_self">使用 Flex 4</a></p>
<p><a id="ygtvlabelel83" onclick="return YAHOO.widget.TreeView.getNode('booklist1',83).onLabelClick(YAHOO.widget.TreeView.getNode('booklist1',83))" href="http://help.adobe.com/zh_CN/Flex/4.0/AccessingData/index.html" target="_self">使用 Flex 访问数据</a></p>
]]></content:encoded>
			<wfw:commentRss>http://flash.moligu.com/110/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>发现个好东西Flex 3 Posters</title>
		<link>http://flash.moligu.com/101</link>
		<comments>http://flash.moligu.com/101#comments</comments>
		<pubDate>Mon, 28 Dec 2009 03:41:25 +0000</pubDate>
		<dc:creator>电介质</dc:creator>
				<category><![CDATA[AIR]]></category>
		<category><![CDATA[AS3]]></category>
		<category><![CDATA[Flex]]></category>

		<guid isPermaLink="false">http://flash.moligu.com/101</guid>
		<description><![CDATA[As3,Flex3的类图Poster，来源Flex 3 Posters
转载如下：
Poster 1 :&#160; 13MB     

Poster 2 :&#160; 17MB     

Poster 3 : 18.7MB     

Poster 4 :&#160; 13.0MB     

Poster 5 :&#160; 13.8MB     

]]></description>
			<content:encoded><![CDATA[<h3>As3,Flex3的类图Poster，来源<a href="http://arunbluebrain.wordpress.com/2009/08/12/flex-3-posters/" target="_blank">Flex 3 Posters</a></h3>
<h4><strong>转载如下：</strong></h4>
<p><strong>Poster 1 :&#160; 13MB</strong><strong>     <br /></strong></p>
<p><a href="http://go2.wordpress.com/?id=725X1342&amp;site=arunbluebrain.wordpress.com&amp;url=http%3A%2F%2Fcid-996eb7e8e54131c3.skydrive.live.com%2Fself.aspx%2FPublic%2FFlex%25203%2520Posters%2F1%2520AS3%2520Class%2520Diagram.zip"><img title="Actionscript 3 class diagram" height="43" alt="Actionscript 3 class diagram" src="http://arunbluebrain.files.wordpress.com/2009/08/1.png?w=480&amp;h=43" width="480" /></a></p>
<p><strong>Poster 2 :&#160; 17MB</strong><strong>     <br /></strong></p>
<p><a href="http://cid-996eb7e8e54131c3.skydrive.live.com/self.aspx/Public/Flex%203%20Posters/2%20Flex%203%20Additional%20Classes.zip"><img title="Flex Framework 3 Additional Classes" height="37" alt="Flex Framework 3 Additional Classes" src="http://arunbluebrain.files.wordpress.com/2009/08/2.png?w=480&amp;h=37" width="480" /></a></p>
<p><strong>Poster 3 : 18.7MB</strong><strong>     <br /></strong></p>
<p><a href="http://cid-996eb7e8e54131c3.skydrive.live.com/self.aspx/Public/Flex%203%20Posters/3%20Flex%203%20Advanced%20Classes.zip"><img title="Flex 3 Advanced Classes" height="36" alt="Flex 3 Advanced Classes" src="http://arunbluebrain.files.wordpress.com/2009/08/3.png?w=480&amp;h=36" width="480" /></a></p>
<p><strong>Poster 4 :&#160; 13.0MB</strong><strong>     <br /></strong></p>
<p><a href="http://cid-996eb7e8e54131c3.skydrive.live.com/self.aspx/Public/Flex%203%20Posters/4%20Flex%203%20Core%20Classes.zip"><img title="Flex 3 Core Classes : Part 1" height="35" alt="Flex 3 Core Classes : Part 1" src="http://arunbluebrain.files.wordpress.com/2009/08/4.png?w=480&amp;h=35" width="480" /></a></p>
<p><strong>Poster 5 :&#160; 13.8MB</strong><strong>     <br /></strong></p>
<p><a href="http://go2.wordpress.com/?id=725X1342&amp;site=arunbluebrain.wordpress.com&amp;url=http%3A%2F%2Fcid-996eb7e8e54131c3.skydrive.live.com%2Fself.aspx%2FPublic%2FFlex%25203%2520Posters%2F5%2520Flex%25203%2520Core%2520Classes.zip"><img title="Flex 3 Core Classes : Part 2" height="35" alt="Flex 3 Core Classes : Part 2" src="http://arunbluebrain.files.wordpress.com/2009/08/5.png?w=480&amp;h=35" width="480" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://flash.moligu.com/101/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>AS3动态获得类名及类的方法</title>
		<link>http://flash.moligu.com/98</link>
		<comments>http://flash.moligu.com/98#comments</comments>
		<pubDate>Fri, 12 Jun 2009 08:19:26 +0000</pubDate>
		<dc:creator>电介质</dc:creator>
				<category><![CDATA[AS3]]></category>

		<guid isPermaLink="false">http://flash.moligu.com/98</guid>
		<description><![CDATA[获得某个实例对象的类：
实例名["constructor"];
实例名.constructor;
获得某个实例对象的类名：
getQualifiedClassName (对象实例名)
进一步解释如下
getQualifiedClassName (value:*)
参数value手册上说：可以将任何 ActionScript 值传递给此方法，包括所有可用的 ActionScript 类型、对象实例、原始类型（如 uint）和类对象。示例如下：
trace(getQualifiedClassName(&#8220;abc&#8221;));   //输出 String
trace(getQualifiedClassName(1));     //输出 int
trace(getQualifiedClassName(int));     //输出 int
trace(getQualifiedClassName(Sprite)); //输出 flash.display::Sprite
trace(getQualifiedClassName(自定义的类));//输出 带包路径的自定义类，类似上句输出，如果是在根包，或fla的库里定义的类，则因为在根路径则直接输出自定义类名，类似ActionScript的原始类型
trace(getQualifiedClassName(对象实例名));//参数可以是任何实例名，包括自定义类的实例，输出同上
trace(getQualifiedClassName(方法或函数名));//输出类似Function-20,builtin.as$0::MethodClosure
根据类名获得类： 
getDefinitionByName(完全限定类名称的字符串表达式);
注意，这里的类名称需要有包路径的限定，如&#8221;flash.display.Sprite&#8221;，也可以这样写&#8221;flash.display::Sprite&#8221;，自定义的类也一样，当然如果自定义的类在根包，或是在fla的库里定义的类，或者是ActionScript的原始类型，则可以直接写类名字符串。
用得到的类实例化对象：
一般中间要用一个无类型变量传递类，进行实例化；
如:
var i=0;
var c:*=getDefinitionByName(&#8220;MyClass&#8221;+i);
var myClass:*=new c();


]]></description>
			<content:encoded><![CDATA[<p><strong>获得某个实例对象的类：</strong></p>
<p>实例名["constructor"];</p>
<p>实例名.constructor;</p>
<p><strong>获得某个实例对象的类名：</strong></p>
<p>getQualifiedClassName (对象实例名)</p>
<p>进一步解释如下</p>
<p>getQualifiedClassName (value:<a href="http://help.adobe.com/zh_CN/AS3LCR/Flash_10.0/specialTypes.html#*">*</a>)</p>
<p>参数value手册上说：可以将任何 ActionScript 值传递给此方法，包括所有可用的 ActionScript 类型、对象实例、原始类型（如 uint）和类对象。示例如下：</p>
<p>trace(getQualifiedClassName(&#8220;abc&#8221;));   //输出 String</p>
<p>trace(getQualifiedClassName(1));     //输出 int</p>
<div>trace(getQualifiedClassName(int));     //输出 int</div>
<div>trace(getQualifiedClassName(Sprite)); //输出 flash.display::Sprite</div>
<div id="_mcePaste">trace(getQualifiedClassName(自定义的类));//输出 带包路径的自定义类，类似上句输出，如果是在根包，或fla的库里定义的类，则因为在根路径则直接输出自定义类名，类似ActionScript的原始类型</div>
<div id="_mcePaste">trace(getQualifiedClassName(对象实例名));//参数可以是任何实例名，包括自定义类的实例，输出同上</div>
<div id="_mcePaste">trace(getQualifiedClassName(方法或函数名));//输出类似Function-20,builtin.as$0::MethodClosure</div>
<p><strong>根据类名获得类： </strong></p>
<p>getDefinitionByName(<span style="font-family: Tahoma, Verdana, Arial, Helvetica, sans-serif; line-height: normal;">完全限定<span style="font-family: Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif; line-height: 19px;"><span style="font-family: Tahoma, Verdana, Arial, Helvetica, sans-serif; line-height: normal;">类名称的字符串表达式</span>);</span></span></p>
<p>注意，这里的类名称需要有包路径的限定，如&#8221;flash.display.Sprite&#8221;，也可以这样写&#8221;flash.display::Sprite&#8221;，自定义的类也一样，当然如果自定义的类在根包，或是在fla的库里定义的类，或者是ActionScript的原始类型，则可以直接写类名字符串。</p>
<p><strong>用得到的类实例化对象：</strong></p>
<p>一般中间要用一个无类型变量传递类，进行实例化；</p>
<p>如:</p>
<p>var i=0;</p>
<p>var c:*=getDefinitionByName(&#8220;MyClass&#8221;+i);</p>
<p>var myClass:*=new c();</p>
<div><span style="font-family: Tahoma, Verdana, Arial, Helvetica, sans-serif;"><span style="line-height: normal;"><br />
</span></span></div>
]]></content:encoded>
			<wfw:commentRss>http://flash.moligu.com/98/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Adobe AIR应用之帝国cms计划任务助手</title>
		<link>http://flash.moligu.com/94</link>
		<comments>http://flash.moligu.com/94#comments</comments>
		<pubDate>Mon, 08 Jun 2009 07:32:30 +0000</pubDate>
		<dc:creator>电介质</dc:creator>
				<category><![CDATA[AIR]]></category>
		<category><![CDATA[Air应用]]></category>
		<category><![CDATA[帝国CMS]]></category>

		<guid isPermaLink="false">http://flash.moligu.com/?p=94</guid>
		<description><![CDATA[Please upgrade your Flash Player This is the content that would be shown if the user does not have Flash Player 9.0.115 or higher installed.



帝国CMS有个计划任务功能，可以设置一些需要定时自动执行的任务，因为不能在后台直接运行，所以每天都要在浏览器里，登录打开运行计划任务，感觉比较繁琐，顺手用Adobe AIR做了个，只要设置好用户名，密码，和cms登录地址如“http://youcms/e/admin”,设置好运行起止区间，点登录运行即可；
另外还可以选中，每次启动系统自动运行；这样每次开机它会自动检测是否在计划的时间段内，然后自动运行，到时间就自动退出，如果不关机，到第二天还会按计划自动运行。
如果断网了，它也会在网络恢复后自动按计划运行。
东西很简单，没有做什么界面设计，只是实现了功能。有使用帝国cms计划任务的，可以试试，当然 基于Adobe air的应用都是跨平台的了（mac，windows，linux）。
]]></description>
			<content:encoded><![CDATA[<p><div id="flashcontent1119" style="width:215px; height:180px;"><strong>Please upgrade your Flash Player</strong> This is the content that would be shown if the user does not have Flash Player 9.0.115 or higher installed.</div><script type="text/javascript">
<!-- // <![CDATA[
var so = new SWFObject("http://flash.moligu.com/wp-content/plugins/air-badge/AIRInstallBadge.swf", "Badge", "215", "180", "9.0.115", "#FFFFFF");
so.useExpressInstall("http://flash.moligu.com/wp-content/plugins/air-badge/expressinstall.swf");
so.addVariable("airversion", "1.0");
so.addVariable("appname", "cmsAutoTask");
so.addVariable("appurl", "http://air.moligu.com/ecms/cmsAutoTask.air");
so.addVariable("appid", "com.moligu.air.cmsAutoTask");
so.addVariable("pubid", "B8DEC67DD00442455FF56DCEB0D5AC3F742DEF8C.1");
so.addVariable("appversion", "v1.0");
so.addVariable("imageurl", "");
so.addVariable("appinstallarg", "installed from web");
so.addVariable("applauncharg", "launched from web");
so.addVariable("helpurl", "help.html");
so.addVariable("hidehelp", "true");
so.addVariable("skiptransition", "false");
so.addVariable("titlecolor", "#00AAFF");
so.addVariable("buttonlabelcolor", "#00AAFF");
so.addVariable("appnamecolor", "#00AAFF");
so.addVariable("str_err_airswf", "<u>Running locally?</u><br/><br/>The AIR proxy swf won't load properly when this is run from the local file system.");
so.write("flashcontent1119");
// ]]&gt; -->
</script>
<br />
帝国CMS有个计划任务功能，可以设置一些需要定时自动执行的任务，因为不能在后台直接运行，所以每天都要在浏览器里，登录打开运行计划任务，感觉比较繁琐，顺手用Adobe AIR做了个，只要设置好用户名，密码，和cms登录地址如“http://youcms/e/admin”,设置好运行起止区间，点登录运行即可；<br />
另外还可以选中，每次启动系统自动运行；这样每次开机它会自动检测是否在计划的时间段内，然后自动运行，到时间就自动退出，如果不关机，到第二天还会按计划自动运行。<br />
如果断网了，它也会在网络恢复后自动按计划运行。<br />
东西很简单，没有做什么界面设计，只是实现了功能。有使用帝国cms计划任务的，可以试试，当然 基于Adobe air的应用都是跨平台的了（mac，windows，linux）。<img src="http://bbs.phome.net/ebb_data/tran/2009-06/1244453642.gif" alt="截图" /></p>
]]></content:encoded>
			<wfw:commentRss>http://flash.moligu.com/94/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Adobe AIR监测网络链接状态</title>
		<link>http://flash.moligu.com/92</link>
		<comments>http://flash.moligu.com/92#comments</comments>
		<pubDate>Fri, 05 Jun 2009 10:45:44 +0000</pubDate>
		<dc:creator>电介质</dc:creator>
				<category><![CDATA[AIR]]></category>

		<guid isPermaLink="false">http://flash.moligu.com/92</guid>
		<description><![CDATA[Adobe AIR应用程序要实现根据网络是否连接，来处理相应的操作，查了下官方文档和手册，发现相关的内容如下：
检测网络连接更改
监听事件方法
NativeApplication.nativeApplication.addEventListener(Event.NETWORK_CHANGE, onNetworkChange);
此事件只是确定网络连接的状态发生改变，而不能告诉你网络是否可用。要进一步确定网络的可用性还需要下面的类。
检测 HTTP 连接
实现方法
var monitor:URLMonitor;
monitor = new URLMonitor(new URLRequest(&#8216;http://www.adobe.com&#8217;));
monitor.addEventListener(StatusEvent.STATUS, announceStatus);
monitor.start();
function announceStatus(e:StatusEvent):void {
&#160;&#160;&#160; trace(&#34;Status change. Current status: &#34; + monitor.available);
}
用于确定http链接是否可用，实际中还可以把URLRequest的请求方法设为HEAD，以避免下载整个页面。
通过实验发现，实际情况和文档里说的不一样，文档里说URLMonitor的pollInterval属性为0时（默认为0），则不定期轮询服务器，而仅在调用 start() 后和网络状态发生更改时立即轮询。但实际测试结果，当网络状态发生改变时，并不能触发状态改变事件，什么原因还不清楚。
最后的解决办法是，在上面的检测网络连接更改事件中创建URLMonitor实例并监听状态改变事件，然后调用start()方法，在状态改变事件里判断链接是否可用，进一步处理相关操作。实现代码如下：
private var monitor:URLMonitor;
NativeApplication.nativeApplication.addEventListener(Event.NETWORK_CHANGE, onNetworkChange);
public function onNetworkChange(event:Event):void{
trace(&#34;网络连接发生改变&#34;);
//监视网络状态
var url:URLRequest=new URLRequest(“要监测的网络地址”);
url.method = &#34;HEAD&#34;;
monitor = new URLMonitor(url);
monitor.addEventListener(StatusEvent.STATUS, onMonitor);
monitor.start();
} 
private function onMonitor(event:Event):void   &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; {    &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; monitor.removeEventListener(StatusEvent.STATUS, onMonitor);    &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; trace(&#34;连接&#34;+monitor.available);   [...]]]></description>
			<content:encoded><![CDATA[<p>Adobe AIR应用程序要实现根据网络是否连接，来处理相应的操作，查了下官方文档和手册，发现相关的内容如下：</p>
<p><strong>检测网络连接更改</strong></p>
<p>监听事件方法</p>
<p>NativeApplication.nativeApplication.addEventListener(Event.NETWORK_CHANGE, onNetworkChange);</p>
<p>此事件只是确定网络连接的状态发生改变，而不能告诉你网络是否可用。要进一步确定网络的可用性还需要下面的类。</p>
<p><strong>检测 HTTP 连接</strong></p>
<p>实现方法</p>
<p>var monitor:URLMonitor;</p>
<p>monitor = new URLMonitor(new URLRequest(&#8216;<a href="http://www.adobe.com'));">http://www.adobe.com&#8217;));</a></p>
<p>monitor.addEventListener(StatusEvent.STATUS, announceStatus);</p>
<p>monitor.start();</p>
<p>function announceStatus(e:StatusEvent):void {</p>
<p>&#160;&#160;&#160; trace(&quot;Status change. Current status: &quot; + monitor.available);</p>
<p>}</p>
<p>用于确定http链接是否可用，实际中还可以把URLRequest的请求方法设为HEAD，以避免下载整个页面。</p>
<p>通过实验发现，实际情况和文档里说的不一样，文档里说URLMonitor的pollInterval属性为0时（默认为0），则不定期轮询服务器，而仅在调用 start() 后和网络状态发生更改时立即轮询。但实际测试结果，当网络状态发生改变时，并不能触发状态改变事件，什么原因还不清楚。</p>
<p>最后的解决办法是，在上面的<strong>检测网络连接更改</strong>事件中创建URLMonitor实例并监听状态改变事件，然后调用start()方法，在状态改变事件里判断链接是否可用，进一步处理相关操作。实现代码如下：</p>
<p>private var monitor:URLMonitor;</p>
<p>NativeApplication.nativeApplication.addEventListener(Event.NETWORK_CHANGE, onNetworkChange);</p>
<p>public function onNetworkChange(event:Event):void{</p>
<p>trace(&quot;网络连接发生改变&quot;);</p>
<p>//监视网络状态</p>
<p>var url:URLRequest=new URLRequest(“要监测的网络地址”);</p>
<p>url.method = &quot;HEAD&quot;;</p>
<p>monitor = new URLMonitor(url);</p>
<p>monitor.addEventListener(StatusEvent.STATUS, onMonitor);</p>
<p>monitor.start();</p>
<p>} </p>
<p>private function onMonitor(event:Event):void   <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; {    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; monitor.removeEventListener(StatusEvent.STATUS, onMonitor);    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; trace(&quot;连接&quot;+monitor.available);    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; if(monitor.available){//网络连接可用</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; //处理联网操作   <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; }    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; else    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; {    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; //网络连接不可用，相关处理    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; }    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; }</p>
<p><strong>检测套接字连接</strong></p>
<p>实现方法</p>
<p>socketMonitor = new SocketMonitor(&#8216;www.adobe.com&#8217;,6667);</p>
<p>socketMonitor.addEventListener(StatusEvent.STATUS,socketStatusChange);</p>
<p>socketMonitor.start();</p>
<p>function announceStatus(e:StatusEvent):void {</p>
<p>&#160;&#160; trace(&quot;Status change. Current status: &quot; + socketMonitor.available);</p>
<p>}</p>
<p>没有实验。</p>
]]></content:encoded>
			<wfw:commentRss>http://flash.moligu.com/92/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>flash的坐标系</title>
		<link>http://flash.moligu.com/91</link>
		<comments>http://flash.moligu.com/91#comments</comments>
		<pubDate>Thu, 14 May 2009 12:09:36 +0000</pubDate>
		<dc:creator>电介质</dc:creator>
				<category><![CDATA[未分类]]></category>

		<guid isPermaLink="false">http://flash.moligu.com/91</guid>
		<description><![CDATA[对于习惯于中学数学坐标系的AS3编程者来说，flash的坐标系总是个令人头疼的问题，player10带来的第三轴z，更把事情搅和的让人头晕，前两天把它整理了一下，绘了图示如下，箭头方向都为正向，包括旋转方向。
 
仔细思考可以发现旋转方向，适用于右手法则，既大拇指代表要旋转的坐标轴方向，四个手指代表旋转的正向，这个图也适合于每个显示对象和显示容器自身的坐标系统。
对于角度还有一个要人头疼的问题，就是零度是从哪里开始的，同样绘了一张图如下。 
可以看到在不同的平面中，零度的起始坐标轴是不同的，xy轴平面，是x轴，yz平面是y轴，zx平面是z轴，可谓风水轮流转明年到我家，每个轴都是平等的，都有做起点的机会。
]]></description>
			<content:encoded><![CDATA[<p>对于习惯于中学数学坐标系的AS3编程者来说，flash的坐标系总是个令人头疼的问题，player10带来的第三轴z，更把事情搅和的让人头晕，前两天把它整理了一下，绘了图示如下，箭头方向都为正向，包括旋转方向。</p>
<p><a href="http://flash.moligu.com/wp-content/uploads/2009/05/flashcoordinate.gif"><img title="flash-coordinate" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="283" alt="flash-coordinate" src="http://flash.moligu.com/wp-content/uploads/2009/05/flashcoordinate-thumb.gif" width="365" border="0" /></a> </p>
<p>仔细思考可以发现旋转方向，适用于右手法则，既大拇指代表要旋转的坐标轴方向，四个手指代表旋转的正向，这个图也适合于每个显示对象和显示容器自身的坐标系统。</p>
<p>对于角度还有一个要人头疼的问题，就是零度是从哪里开始的，同样绘了一张图如下。<a href="http://flash.moligu.com/wp-content/uploads/2009/05/flashcoordinatea.gif"><img title="flash-coordinate-a" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="297" alt="flash-coordinate-a" src="http://flash.moligu.com/wp-content/uploads/2009/05/flashcoordinatea-thumb.gif" width="405" border="0" /></a> </p>
<p>可以看到在不同的平面中，零度的起始坐标轴是不同的，xy轴平面，是x轴，yz平面是y轴，zx平面是z轴，可谓风水轮流转明年到我家，每个轴都是平等的，都有做起点的机会。</p>
]]></content:encoded>
			<wfw:commentRss>http://flash.moligu.com/91/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>flash10中3D特性之PerspectiveProjection属性设置</title>
		<link>http://flash.moligu.com/85</link>
		<comments>http://flash.moligu.com/85#comments</comments>
		<pubDate>Wed, 08 Apr 2009 06:23:00 +0000</pubDate>
		<dc:creator>电介质</dc:creator>
				<category><![CDATA[AS3]]></category>
		<category><![CDATA[flash]]></category>

		<guid isPermaLink="false">http://flash.moligu.com/85</guid>
		<description><![CDATA[PerspectiveProjection类提供了一种在 3D 空间中移动显示对象时应用基本透视的简单方式，它有下列三个主要属性：
fieldOfView 视野属性
projectionCenter 投影中心属性
focalLength 焦距属性
默认的 PerspectiveProjection 对象是基于视野和舞台的高宽比（尺寸）为 root 对象的透视转换定义的框架。要改变透视投影设置，可以通过对root 对象的DisplayObject.transform 属性来更改。但在编程时要改变这些属性，在文档类的构造函数中直接设置是不起作用的，因为这时swf文件还没有完全载入，也就是root显示对象还未完全载入完成，所以要通过this.loaderInfo.addEventListener (Event.COMPLETE, init)方式监听载入完成事件，在swf载入完成后按如下方式来设置：
this.transform.perspectiveProjection.projectionCenter = new Point(0,0);
注：类似的与根显示对象相关的部分其他基本属性的获取和修改都有这个问题需要注意。
要为其他显示对象设置这些透视属性，不能直接用类似上面的DisplayObject.transform.perspectiveProjection.projectionCenter = new Point(0,0)这种直接赋值方式，因为DisplayObject.transform.perspectiveProjection为空，包括root显示对象在内的其他显示对象的透视属性设置可以通过如下方式设置：
var p=new PerspectiveProjection();    &#160;&#160;&#160;&#160;&#160; p.projectionCenter = new Point(0,0);     &#160;&#160;&#160;&#160;&#160; p.fieldOfView=55;     &#160;&#160;&#160;&#160;&#160; DisplayObject.transform.perspectiveProjection=p;
这样你可以为不同的显示对象设置不同的透视投影设置。
]]></description>
			<content:encoded><![CDATA[<p>PerspectiveProjection类提供了一种在 3D 空间中移动显示对象时应用基本透视的简单方式，它有下列三个主要属性：</p>
<p>fieldOfView 视野属性</p>
<p>projectionCenter 投影中心属性</p>
<p>focalLength 焦距属性</p>
<p>默认的 PerspectiveProjection 对象是基于视野和舞台的高宽比（尺寸）为 root 对象的透视转换定义的框架。<code>要改变</code>透视投影设置，可以通过对<code>root</code> 对象的<code>DisplayObject.transform</code> 属性来更改。但在编程时要改变这些属性，在文档类的构造函数中直接设置是不起作用的，因为这时swf文件还没有完全载入，也就是root显示对象还未完全载入完成，所以要通过this.loaderInfo.addEventListener (Event.COMPLETE, init)方式监听载入完成事件，在swf载入完成后按如下方式来设置：</p>
<p>this.transform.perspectiveProjection.projectionCenter = new Point(0,0);</p>
<p>注：类似的与根显示对象相关的部分其他基本属性的获取和修改都有这个问题需要注意。</p>
<p>要为其他显示对象设置这些透视属性，不能直接用类似上面的DisplayObject.transform.perspectiveProjection.projectionCenter = new Point(0,0)这种直接赋值方式，因为DisplayObject.transform.perspectiveProjection为空，包括root显示对象在内的其他显示对象的透视属性设置可以通过如下方式设置：</p>
<p>var p=new PerspectiveProjection();    <br />&#160;&#160;&#160;&#160;&#160; p.projectionCenter = new Point(0,0);     <br />&#160;&#160;&#160;&#160;&#160; p.fieldOfView=55;     <br />&#160;&#160;&#160;&#160;&#160; DisplayObject.transform.perspectiveProjection=p;</p>
<p>这样你可以为不同的显示对象设置不同的透视投影设置。</p>
]]></content:encoded>
			<wfw:commentRss>http://flash.moligu.com/85/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Adobe AIR 1.5.1新特性</title>
		<link>http://flash.moligu.com/83</link>
		<comments>http://flash.moligu.com/83#comments</comments>
		<pubDate>Fri, 20 Mar 2009 02:36:18 +0000</pubDate>
		<dc:creator>电介质</dc:creator>
				<category><![CDATA[AIR]]></category>

		<guid isPermaLink="false">http://flash.moligu.com/83</guid>
		<description><![CDATA[AIR1.5.1已经出来有些时间了，这里有一篇新特性的介绍。
关于使用InvokeEvent.reason大概意思如下：
Adobe AIR应用程序已经可以确定是如何被调用的，通过监听被NativeApplication发布的InvokeEvent 事件，InvokeEvent 事件类包含了一个新的属性reason，此属性指示：应用程序是由用户手动启动，还是在登录时自动启动。这样应用程序就可以在启动时判断是否显示界面窗口，比如在系统登录时自动启动时不打开窗口，而用户自己启动时打开窗口。
当然要使用这个新的API，需要更新应用程序的描述文件为1.5.1的命名空间。
]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.adobe.com/support/documentation/cn/air/1_5_1/releasenotes_developers.html" target="_blank">AIR1.5.1</a>已经出来有些时间了，这里有一篇<a href="http://blogs.adobe.com/simplicity/2009/02/invokeevent_reason_in_air_1_5_1.html" target="_blank">新特性的介绍</a>。</p>
<p>关于使用InvokeEvent.reason大概意思如下：</p>
<p>Adobe AIR应用程序已经可以确定是如何被调用的，通过监听被NativeApplication发布的InvokeEvent 事件，InvokeEvent 事件类包含了一个新的属性reason，此属性指示：应用程序是由用户手动启动，还是在登录时自动启动。这样应用程序就可以在启动时判断是否显示界面窗口，比如在系统登录时自动启动时不打开窗口，而用户自己启动时打开窗口。</p>
<p>当然要使用这个新的API，需要更新应用程序的描述文件为1.5.1的命名空间。</p>
]]></content:encoded>
			<wfw:commentRss>http://flash.moligu.com/83/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>关于AS3中预载问题的解决方案</title>
		<link>http://flash.moligu.com/82</link>
		<comments>http://flash.moligu.com/82#comments</comments>
		<pubDate>Sun, 01 Mar 2009 05:14:42 +0000</pubDate>
		<dc:creator>电介质</dc:creator>
				<category><![CDATA[AS3]]></category>
		<category><![CDATA[flash]]></category>
		<category><![CDATA[as3预载]]></category>
		<category><![CDATA[preload]]></category>

		<guid isPermaLink="false">http://flash.moligu.com/82</guid>
		<description><![CDATA[最近在做的一个Flash web交互应用中，所有的交互操作都是由代码控制，元件都是动态的从库中加载到场景中实现的，整个flash场景只有一帧，所有代码都在外部.as文件中，时间轴上无一句代码，虽然最后生成的文件不是很大，但swf预载还是需要实现的，查看了网上关于AS3应用开发中的预载实现，发现大多都不是很完美，有些需要在时间轴的第一帧上加入预载代码，有些用flash隐藏的功能，动态的在第一帧加入代码，而库元件的问题，有些是把在第一帧导入去掉，而在第二帧中隐藏加入所有用到的库元件在场景中…
经过分析和测试，找到一种比较完美的解决方案：
1、将场景分成两帧
2、在发布设置里的flash的脚本设置中，设置类导出在第2帧
3、在文档类的构造函数中写预载代码，类似下例：
this.stop ();//在第一帧停止
loaderInfo.addEventListener (ProgressEvent.PROGRESS, loadProgress);
loaderInfo.addEventListener (Event.COMPLETE, loadComplete);
function loadProgress (event:ProgressEvent):void{ 
&#160;&#160;&#160; var percentLoaded:Number = event.bytesLoaded / event.bytesTotal;
&#160;&#160;&#160; trace(&#34;载入&#34;+ percentLoaded*100 + &#34;%&#34;);//可以显示载入进度操作
}
function loadComplete (event:Event):void{
&#160;&#160;&#160; loaderInfo.removeEventListener (ProgressEvent.PROGRESS,loadComplete);    &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; gotoAndStop (2);//载入完成跳到第二帧停止     &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; init ();//进行初始化
} 
这样时间轴上不用写任何代码，包括stop()等，所有代码都在外部as文件中，而且由于库元件都在第2帧导入，所以第一帧很小。
注意事项：因为库元件都在第2帧导入，而文档类在第一帧就开始构造了，所以在预加载完成前，不要实例化库中的类，如 new 库元件类()，否则不能正确建立类实例；但可以声明库元件的类变量。
带预载入代码的完整的文档类文件结构如下：
package {
&#160;&#160;&#160;&#160; public class 类名 extends MovieClip{
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; 类属性变量声明;//注意不要在这里实例化库中的类，但可以声明库类型的变量
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; public function 类名(){
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; stop();
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; 预载处理代码;
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; 预载完成后可以进行库类的实例化操作，或调用应用的初始化方法;
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; }
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; 其他方法定义;
&#160;&#160;&#160;&#160; [...]]]></description>
			<content:encoded><![CDATA[<p>最近在做的一个Flash web交互应用中，所有的交互操作都是由代码控制，元件都是动态的从库中加载到场景中实现的，整个flash场景只有一帧，所有代码都在外部.as文件中，时间轴上无一句代码，虽然最后生成的文件不是很大，但swf预载还是需要实现的，查看了网上关于AS3应用开发中的预载实现，发现大多都不是很完美，有些需要在时间轴的第一帧上加入预载代码，有些用flash隐藏的功能，动态的在第一帧加入代码，而库元件的问题，有些是把在第一帧导入去掉，而在第二帧中隐藏加入所有用到的库元件在场景中…</p>
<p>经过分析和测试，找到一种比较完美的解决方案：</p>
<p><strong>1、将场景分成两帧</strong></p>
<p><strong>2、在发布设置里的flash的脚本设置中，设置类导出在第2帧</strong></p>
<p><strong>3、在文档类的构造函数中写预载代码，类似下例：</strong></p>
<p>this.stop ();//在第一帧停止</p>
<p>loaderInfo.addEventListener (ProgressEvent.PROGRESS, loadProgress);</p>
<p>loaderInfo.addEventListener (Event.COMPLETE, loadComplete);</p>
<p>function loadProgress (event:ProgressEvent):void{ </p>
<p>&#160;&#160;&#160; var percentLoaded:Number = event.bytesLoaded / event.bytesTotal;</p>
<p>&#160;&#160;&#160; trace(&quot;载入&quot;+ percentLoaded*100 + &quot;%&quot;);//可以显示载入进度操作</p>
<p>}</p>
<p>function loadComplete (event:Event):void{</p>
<p>&#160;&#160;&#160; loaderInfo.removeEventListener (ProgressEvent.PROGRESS,loadComplete);    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; gotoAndStop (2);//载入完成跳到第二帧停止     <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; init ();//进行初始化</p>
<p>} </p>
<p>这样时间轴上不用写任何代码，包括stop()等，所有代码都在外部as文件中，而且由于库元件都在第2帧导入，所以第一帧很小。</p>
<p><strong>注意事项：</strong>因为库元件都在第2帧导入，而文档类在第一帧就开始构造了，所以在预加载完成前，不要实例化库中的类，如 new 库元件类()，否则不能正确建立类实例；但可以声明库元件的类变量。</p>
<p>带预载入代码的完整的文档类文件结构如下：</p>
<p>package {</p>
<p>&#160;&#160;&#160;&#160; public class 类名 extends MovieClip{</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; 类属性变量声明;//注意不要在这里实例化库中的类，但可以声明库类型的变量</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; public function 类名(){</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; stop();</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; 预载处理代码;</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; 预载完成后可以进行库类的实例化操作，或调用应用的初始化方法;</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; }</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; 其他方法定义;</p>
<p>&#160;&#160;&#160;&#160; }</p>
<p>}</p>
]]></content:encoded>
			<wfw:commentRss>http://flash.moligu.com/82/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>关于Adobe AIR应用开发的一些问题</title>
		<link>http://flash.moligu.com/77</link>
		<comments>http://flash.moligu.com/77#comments</comments>
		<pubDate>Sun, 18 Jan 2009 09:31:13 +0000</pubDate>
		<dc:creator>电介质</dc:creator>
				<category><![CDATA[AIR]]></category>

		<guid isPermaLink="false">http://flash.moligu.com/77</guid>
		<description><![CDATA[今天收到朋友nick的一个mail，就AIR 的尝试这篇文章中提到的一些AIR开发应用中存在的问题，问道“占用内存的问题，不知道是他开发的问题，还是air的通病？”回复mail后感觉这是个常见的疑问，所以把回复整理了一下发上来与同道探讨分享。
1、关于AIR应用占用内存的问题
就realazy开发的这个爱饭Adobe AIR应用，他是用HTML,CSS和javascript方式开发的，这种方式是基于air内嵌的webkit 引擎的（谷歌浏览器和苹果上web浏览器使用的web引擎），所以即使什么都不做，用这种方式开发就相当于打开了一个基于webkit引擎的web浏览器；
另外即使使用Flash AS方式和Flex方式开发，只要在应用中使用了html特性的功能就一样相当于打开了webkit浏览器。
2、三种Adobe AIR应用开发方式中，对内存资源消耗的大小顺序
由小到大的顺序是：单纯使用flash AS3开发（不使用html特性）&#60;单纯使用FLex开发（不使用html特性）&#60;使用html特性的开发：有三种情况HTML+CSS+JAVASCRIPT方式，使用flash as3和flex开发方式中包括html特性的开发）
Flex开发方式中因为使用Flex的框架极大的提高了开发效率和开发的协作性，但Flex框架中的各类组件本身却也事实上使编译结果文件更大，占用计算机的资源也更多，所以这种方式比单纯用flash AS3方式开发要消耗过更多的系统资源。
3、Adobe AIR跨平台开发的透明性
Adobe AIR程序可以跨平台运行的特性，是其优势之一，目前Adobe AIR1.5已经能支持Mac、windows上，和linux环境。
对于开发者来说，跨平台开发的代码透明是最理想的了，但是由于操作系统的管理方式的差异，要做到完全透明是不易的甚至有时是不可能的，具体参看关于Adobe AIR跨平台的透明开发问题。
就realazy开发的这个爱饭Adobe AIR应用在linux下无法给窗口加阴影的问题，那不是Adobe AIR的问题，而是linux显示模式的问题，具体可以看我的这篇文章关于Adobe AIR 1.1 for Linux beta；只要在Adobe AIR应用开发中做些平台能力判断，做差异性处理就可以是Adobe AIR应用的跨平台开发更完美些了。
]]></description>
			<content:encoded><![CDATA[<p>今天收到朋友nick的一个mail，就<a href="http://realazy.org/blog/2009/01/11/ifan-on-air/" target="_blank">AIR 的尝试</a>这篇文章中提到的一些AIR开发应用中存在的问题，问道“占用内存的问题，不知道是他开发的问题，还是air的通病？”回复mail后感觉这是个常见的疑问，所以把回复整理了一下发上来与同道探讨分享。</p>
<p><strong>1、关于AIR应用占用内存的问题</strong></p>
<p>就realazy开发的这个爱饭Adobe AIR应用，他是用HTML,CSS和javascript方式开发的，这种方式是基于air内嵌的webkit 引擎的（谷歌浏览器和苹果上web浏览器使用的web引擎），所以即使什么都不做，用这种方式开发就相当于打开了一个基于webkit引擎的web浏览器；</p>
<p>另外即使使用Flash AS方式和Flex方式开发，只要在应用中使用了html特性的功能就一样相当于打开了webkit浏览器。</p>
<p><strong>2、三种Adobe AIR应用开发方式中，对内存资源消耗的大小顺序</strong></p>
<p>由小到大的顺序是：单纯使用flash AS3开发（不使用html特性）&lt;单纯使用FLex开发（不使用html特性）&lt;使用html特性的开发：有三种情况HTML+CSS+JAVASCRIPT方式，使用flash as3和flex开发方式中包括html特性的开发）</p>
<p>Flex开发方式中因为使用Flex的框架极大的提高了开发效率和开发的协作性，但Flex框架中的各类组件本身却也事实上使编译结果文件更大，占用计算机的资源也更多，所以这种方式比单纯用flash AS3方式开发要消耗过更多的系统资源。</p>
<p><strong>3、Adobe AIR跨平台开发的透明性</strong></p>
<p>Adobe AIR程序可以跨平台运行的特性，是其优势之一，目前Adobe AIR1.5已经能支持Mac、windows上，和linux环境。</p>
<p>对于开发者来说，跨平台开发的代码透明是最理想的了，但是由于操作系统的管理方式的差异，要做到完全透明是不易的甚至有时是不可能的，具体参看<a href="http://flash.moligu.com/24" target="_blank">关于Adobe AIR跨平台的透明开发问题</a>。</p>
<p>就realazy开发的这个爱饭Adobe AIR应用在linux下无法给窗口加阴影的问题，那不是Adobe AIR的问题，而是linux显示模式的问题，具体可以看我的这篇文章<a href="http://flash.moligu.com/43" target="_blank">关于Adobe AIR 1.1 for Linux beta</a>；只要在Adobe AIR应用开发中做些平台能力判断，做差异性处理就可以是Adobe AIR应用的跨平台开发更完美些了。</p>
]]></content:encoded>
			<wfw:commentRss>http://flash.moligu.com/77/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
