<?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/"
	>

<channel>
	<title>RYAN IS A GOOD MAN</title>
	<atom:link href="http://www.ryan-liu.com/blog/Index.php?feed=rss2" rel="self" type="application/rss+xml" />
	<link>http://www.ryan-liu.com/blog</link>
	<description></description>
	<pubDate>Mon, 31 May 2010 04:16:22 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.7</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Flare3D，又一强力3D引擎</title>
		<link>http://www.ryan-liu.com/blog/?p=952</link>
		<comments>http://www.ryan-liu.com/blog/?p=952#comments</comments>
		<pubDate>Mon, 31 May 2010 04:16:22 +0000</pubDate>
		<dc:creator>Ryan Liu</dc:creator>
		
		<category><![CDATA[Cool]]></category>

		<category><![CDATA[Flare3D]]></category>

		<guid isPermaLink="false">http://www.ryan-liu.com/blog/?p=952</guid>
		<description><![CDATA[http://www.flare3d.com Flare3D带有3DMax的专用插件，除了输出，还可以在3DMax里预览FlashPlayer的效果。感兴趣的同学可以先看看这里的教程。

]]></description>
			<content:encoded><![CDATA[<p>http://www.flare3d.com Flare3D带有3DMax的专用插件，除了输出，还可以在3DMax里预览FlashPlayer的效果。感兴趣的同学可以先看看<a href="http://www.flare3d.com/tutorials" target="_blank">这里</a>的教程。</p>
<p><a href="http://www.flare3d.com/showcase"><img class="size-full wp-image-953 alignnone" title="Flare3D" src="http://www.ryan-liu.com/blog/wp-content/uploads/2010/05/thumbnail_flare3d.jpg" alt="Flare3D" width="297" height="117" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.ryan-liu.com/blog/?feed=rss2&amp;p=952</wfw:commentRss>
		</item>
		<item>
		<title>HTML5的Quake2</title>
		<link>http://www.ryan-liu.com/blog/?p=946</link>
		<comments>http://www.ryan-liu.com/blog/?p=946#comments</comments>
		<pubDate>Tue, 06 Apr 2010 07:02:55 +0000</pubDate>
		<dc:creator>Ryan Liu</dc:creator>
		
		<category><![CDATA[未分类]]></category>

		<category><![CDATA[html5]]></category>

		<guid isPermaLink="false">http://www.ryan-liu.com/blog/?p=946</guid>
		<description><![CDATA[
The Quake II GWT port brings the 3d gaming experience of Quake II to the browser.
In the port, we use WebGL, the Canvas API, HTML 5 &#60;audio&#62; elements, the local storage API, and WebSockets to demonstrate the possibilities of pure web applications in modern browsers such as Safari and Chrome.
The port is based on the [...]]]></description>
			<content:encoded><![CDATA[<p><object width="480" height="400" data="http://player.youku.com/player.php/sid/XMTYyMTc0MjE2/v.swf" type="application/x-shockwave-flash"><param name="align" value="middle" /><param name="src" value="http://player.youku.com/player.php/sid/XMTYyMTc0MjE2/v.swf" /><param name="quality" value="high" /></object></p>
<p>The Quake II GWT port brings the 3d gaming experience of Quake II to the browser.</p>
<p>In the port, we use WebGL, the Canvas API, HTML 5 &lt;audio&gt; elements, the local storage API, and WebSockets to demonstrate the possibilities of pure web applications in modern browsers such as Safari and Chrome.</p>
<p>The port is based on the Jake2 project, compiled to Javascript using the Google Web Toolkit (GWT). Jake 2 is a Java port of the original Quake II source code, which was open sourced by id software.</p>
<p><a href="http://code.google.com/p/quake2-gwt-port/" target="_blank">Read more and check out the source&#8230;</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.ryan-liu.com/blog/?feed=rss2&amp;p=946</wfw:commentRss>
		</item>
		<item>
		<title>Flashplayer10.1也将支持HTML5</title>
		<link>http://www.ryan-liu.com/blog/?p=942</link>
		<comments>http://www.ryan-liu.com/blog/?p=942#comments</comments>
		<pubDate>Thu, 01 Apr 2010 03:13:31 +0000</pubDate>
		<dc:creator>Ryan Liu</dc:creator>
		
		<category><![CDATA[News]]></category>

		<category><![CDATA[flashplayer10.1]]></category>

		<category><![CDATA[html5]]></category>

		<guid isPermaLink="false">http://www.ryan-liu.com/blog/?p=942</guid>
		<description><![CDATA[就在CS5即将发布之前，Adobe宣布Flashplayer10.1将支持至少部分HTML5功能，但仅限于TextField中的HTML5标签，还不能像XML一样在ActionScript中inline书写。目前还不得知FP对HTML5的支持是否与浏览器有关。(发于4月1日^_^)
]]></description>
			<content:encoded><![CDATA[<p>就在CS5即将发布之前，Adobe宣布Flashplayer10.1将支持至少部分HTML5功能，但仅限于TextField中的HTML5标签，还不能像XML一样在ActionScript中inline书写。目前还不得知FP对HTML5的支持是否与浏览器有关。(发于4月1日^_^)</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ryan-liu.com/blog/?feed=rss2&amp;p=942</wfw:commentRss>
		</item>
		<item>
		<title>AS3的iPhone UI组件</title>
		<link>http://www.ryan-liu.com/blog/?p=938</link>
		<comments>http://www.ryan-liu.com/blog/?p=938#comments</comments>
		<pubDate>Wed, 31 Mar 2010 06:26:46 +0000</pubDate>
		<dc:creator>Ryan Liu</dc:creator>
		
		<category><![CDATA[Actionscript]]></category>

		<category><![CDATA[Cool]]></category>

		<category><![CDATA[CS5]]></category>

		<category><![CDATA[iPhone]]></category>

		<guid isPermaLink="false">http://www.ryan-liu.com/blog/?p=938</guid>
		<description><![CDATA[CS5就要发布，大家做好准备。

]]></description>
			<content:encoded><![CDATA[<p>CS5就要发布，大家做好<a href="http://nrftw.net/as3/iphone/" target="_blank">准备</a>。</p>
<p><a href="http://nrftw.net/as3/iphone/" target="_blank"><img class="alignnone size-full wp-image-939" title="as3 iPhone UI Component" src="http://www.ryan-liu.com/blog/wp-content/uploads/2010/03/as3_iphone_ui.gif" alt="as3 iPhone UI Component" width="530" height="370" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.ryan-liu.com/blog/?feed=rss2&amp;p=938</wfw:commentRss>
		</item>
		<item>
		<title>Flashplayer10.1和AIR2.0的新玩意儿</title>
		<link>http://www.ryan-liu.com/blog/?p=933</link>
		<comments>http://www.ryan-liu.com/blog/?p=933#comments</comments>
		<pubDate>Fri, 26 Feb 2010 10:12:37 +0000</pubDate>
		<dc:creator>Ryan Liu</dc:creator>
		
		<category><![CDATA[Flash]]></category>

		<category><![CDATA[AIR]]></category>

		<category><![CDATA[Flashplayer]]></category>

		<guid isPermaLink="false">http://www.ryan-liu.com/blog/?p=933</guid>
		<description><![CDATA[
What&#39;s new in Flash Player 10.1 and AIR 2
View more presentations from Serge Jespers.

]]></description>
			<content:encoded><![CDATA[<p><img style="visibility:hidden;width:0px;height:0px;" border=0 width=0 height=0 src="http://counters.gigya.com/wildfire/IMP/CXNID=2000002.0NXC/bT*xJmx*PTEyNjcxNzkwMzA2OTcmcHQ9MTI2NzE3OTA4MjYxOSZwPTEwMTkxJmQ9c3NfZW1iZWQmZz*yJm89ODgyZjFlYzk5NWM4/NDc2MjgyMjczZjFlZjQ5NDA4ZDAmb2Y9MA==.gif" />
<div style="width:425px" id="__ss_3263362"><strong style="display:block;margin:12px 0 4px"><a href="http://www.slideshare.net/sjespers/whats-new-in-flash-player-101-and-air-2" title="What&#39;s new in Flash Player 10.1 and AIR 2">What&#39;s new in Flash Player 10.1 and AIR 2</a></strong><object width="425" height="355"><param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=whatsnewfp101air2-100224040907-phpapp01&#038;stripped_title=whats-new-in-flash-player-101-and-air-2" /><param name="allowFullScreen" value="true"/><param name="allowScriptAccess" value="always"/><embed src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=whatsnewfp101air2-100224040907-phpapp01&#038;stripped_title=whats-new-in-flash-player-101-and-air-2" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"></embed></object>
<div style="padding:5px 0 12px">View more <a href="http://www.slideshare.net/">presentations</a> from <a href="http://www.slideshare.net/sjespers">Serge Jespers</a>.</div>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.ryan-liu.com/blog/?feed=rss2&amp;p=933</wfw:commentRss>
		</item>
		<item>
		<title>阿迪达斯-BE Originals</title>
		<link>http://www.ryan-liu.com/blog/?p=929</link>
		<comments>http://www.ryan-liu.com/blog/?p=929#comments</comments>
		<pubDate>Fri, 26 Feb 2010 04:49:56 +0000</pubDate>
		<dc:creator>Ryan Liu</dc:creator>
		
		<category><![CDATA[Cool]]></category>

		<category><![CDATA[adidas]]></category>

		<guid isPermaLink="false">http://www.ryan-liu.com/blog/?p=929</guid>
		<description><![CDATA[你所看得到的，也能听得到
http://adidas-originals2010.jp

]]></description>
			<content:encoded><![CDATA[<p>你所看得到的，也能听得到<br />
<a href="http://adidas-originals2010.jp">http://adidas-originals2010.jp</a></p>
<p><a href="http://adidas-originals2010.jp"><img class="alignnone size-full wp-image-930" title="originals" src="http://www.ryan-liu.com/blog/wp-content/uploads/2010/02/thumbnail_adioriginals.jpg" alt="originals" width="530" height="180" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.ryan-liu.com/blog/?feed=rss2&amp;p=929</wfw:commentRss>
		</item>
		<item>
		<title>iPhone App:Voice Band(你自己的乐队)</title>
		<link>http://www.ryan-liu.com/blog/?p=926</link>
		<comments>http://www.ryan-liu.com/blog/?p=926#comments</comments>
		<pubDate>Fri, 29 Jan 2010 04:19:25 +0000</pubDate>
		<dc:creator>Ryan Liu</dc:creator>
		
		<category><![CDATA[Cool]]></category>

		<category><![CDATA[iPhone]]></category>

		<guid isPermaLink="false">http://www.ryan-liu.com/blog/?p=926</guid>
		<description><![CDATA[
]]></description>
			<content:encoded><![CDATA[<p><embed src="http://player.youku.com/player.php/sid/37183888/v.swf" quality="high" width="480" height="400" align="middle" allowScriptAccess="sameDomain" type="application/x-shockwave-flash"></embed></p>
]]></content:encoded>
			<wfw:commentRss>http://www.ryan-liu.com/blog/?feed=rss2&amp;p=926</wfw:commentRss>
		</item>
		<item>
		<title>Flash CS5的多点触摸实例</title>
		<link>http://www.ryan-liu.com/blog/?p=924</link>
		<comments>http://www.ryan-liu.com/blog/?p=924#comments</comments>
		<pubDate>Wed, 13 Jan 2010 03:29:09 +0000</pubDate>
		<dc:creator>Ryan Liu</dc:creator>
		
		<category><![CDATA[News]]></category>

		<category><![CDATA[Flash CS5]]></category>

		<guid isPermaLink="false">http://www.ryan-liu.com/blog/?p=924</guid>
		<description><![CDATA[个人电脑多点触摸实例
iPhone多点触摸实例
]]></description>
			<content:encoded><![CDATA[<p><a href="http://theflashblog.com/?p=1666" target="_blank">个人电脑多点触摸实例</a></p>
<p><a href="http://theflashblog.com/?p=1672" target="_blank">iPhone多点触摸实例</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.ryan-liu.com/blog/?feed=rss2&amp;p=924</wfw:commentRss>
		</item>
		<item>
		<title>《Flash ActionScript 3.0 动画高级教程》中文版即将出版</title>
		<link>http://www.ryan-liu.com/blog/?p=916</link>
		<comments>http://www.ryan-liu.com/blog/?p=916#comments</comments>
		<pubDate>Thu, 31 Dec 2009 04:34:43 +0000</pubDate>
		<dc:creator>Ryan Liu</dc:creator>
		
		<category><![CDATA[Flash]]></category>

		<category><![CDATA[Actionscript]]></category>

		<category><![CDATA[Keith Peters]]></category>

		<guid isPermaLink="false">http://www.ryan-liu.com/blog/?p=916</guid>
		<description><![CDATA[与前一本《Flash ActionScript3.0 动画教程》一样，《Flash ActionScript 3.0 动画高级教程》是一本绝对值得学习的重磅好书，。作者Keith Peters在Flash相关行业有多年的经验，在书中以最实际的应用着手，由浅入深的讲解技术关键点。不管你是用Flash做创意网站，游戏还是互动程序，相信本书都会令你获益匪浅。与前一本相比，本书涉及的内容更加深入，更有针对性，如寻路算法的讲解。如果你是初学者，我还是建议你先从第一本读起，把基础知识掌握熟练。
本书目录（个人翻译版&#8230;）
1.高级碰撞检测
2.转向行为
3.无透视（Isometric）3D投影
4.寻路算法
5.不同的交互输入：摄像头与麦克风
6.高级物理：数值积分
7.Flash10的3D
8.Flash10的绘图功能
9.Pixel Bender
10.运动引擎
Riabook在其网站上放出了中文版的样章。图灵的质量一向是不错。我已经读过英文版，中文版保留作者原汁原文的风趣诙谐，技术语言也比较准确。但一些专业词汇的翻译，我个人感觉还是不能尽如人意。比如第七章的“没影点”，英文是“Vanishing Point”，设计与美术的惯用词汇为“灭点”，Flash CS4中文版的翻译为“消失点”。相比而言，“没影点”看起来稍显晦涩。而关键问题在于，这也造成了中文专业词汇的不统一，间接的给专业知识的沟通造成了不便。希望未来的图书翻译中能更少的出现类似情况。
再一个，本书原版的出版时间是2008年底，而中文版却在2010年初才能跟读者见面。技术书不像文学书，什么时候读都不晚。对于出版社来说，一本书什么时候销售也都不算晚。但我们行业的学习和进步却很可能晚了很多，又很可能因此造成了与国外同行之间的差距。Riabook采取了很好的行动，上半年自发的组织了本书的翻译，并免费放在网上供大家学习阅读。但同时Riabook分享诸多资源的同时，也面临着各种问题，如版权，如翻译质量。希望未来，图灵或其他出版机构能更早的更快的引进国外优秀图书，或能与Riabook这样的团体展开合作，使广大读者能更快的学习到最新的技术和知识。从另外一个角度，也建议广大读者，爱好者，从业者，尽可能的阅读原版图书，而能够在第一时间获得知识。: )
略表感想，并以此文参加Riabook书评活动。
]]></description>
			<content:encoded><![CDATA[<p>与前一本<a href="http://www.amazon.cn/mn/detailApp/ref=sr_1_1?_encoding=UTF8&amp;s=books&amp;qid=1262233867&amp;asin=B00163HNXM&amp;sr=8-1" target="_blank">《Flash ActionScript3.0 动画教程》</a>一样，<a href="http://product.dangdang.com/product.aspx?product_id=20750184" target="_blank">《Flash ActionScript 3.0 动画高级教程》</a>是一本绝对值得学习的重磅好书，。作者<a href="http://www.bit-101.com/" target="_blank">Keith Peters</a>在Flash相关行业有多年的经验，在书中以最实际的应用着手，由浅入深的讲解技术关键点。不管你是用Flash做创意网站，游戏还是互动程序，相信本书都会令你获益匪浅。与前一本相比，本书涉及的内容更加深入，更有针对性，如寻路算法的讲解。如果你是初学者，我还是建议你先从第一本读起，把基础知识掌握熟练。</p>
<p>本书目录（个人翻译版&#8230;）<br />
1.高级碰撞检测<br />
2.转向行为<br />
3.无透视（Isometric）3D投影<br />
4.寻路算法<br />
5.不同的交互输入：摄像头与麦克风<br />
6.高级物理：数值积分<br />
7.Flash10的3D<br />
8.Flash10的绘图功能<br />
9.Pixel Bender<br />
10.运动引擎</p>
<p><a href="http://www.riabook.cn">Riabook</a>在其网站上放出了中文版的<a href="http://www.riabook.cn/riabook/111.htm" target="_blank">样章</a>。图灵的质量一向是不错。我已经读过英文版，中文版保留作者原汁原文的风趣诙谐，技术语言也比较准确。但一些专业词汇的翻译，我个人感觉还是不能尽如人意。比如第七章的“没影点”，英文是“Vanishing Point”，设计与美术的惯用词汇为“灭点”，Flash CS4中文版的翻译为“消失点”。相比而言，“没影点”看起来稍显晦涩。而关键问题在于，这也造成了中文专业词汇的不统一，间接的给专业知识的沟通造成了不便。希望未来的图书翻译中能更少的出现类似情况。</p>
<p>再一个，本书原版的出版时间是2008年底，而中文版却在2010年初才能跟读者见面。技术书不像文学书，什么时候读都不晚。对于出版社来说，一本书什么时候销售也都不算晚。但我们行业的学习和进步却很可能晚了很多，又很可能因此造成了与国外同行之间的差距。Riabook采取了很好的行动，上半年自发的组织了本书的翻译，并免费放在网上供大家学习阅读。但同时Riabook分享诸多资源的同时，也面临着各种问题，如版权，如翻译质量。希望未来，图灵或其他出版机构能更早的更快的引进国外优秀图书，或能与Riabook这样的团体展开合作，使广大读者能更快的学习到最新的技术和知识。从另外一个角度，也建议广大读者，爱好者，从业者，尽可能的阅读原版图书，而能够在第一时间获得知识。: )</p>
<p>略表感想，并以此文参加<a href="http://www.riabook.cn/riabook/111.htm" target="_blank">Riabook书评活动</a>。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ryan-liu.com/blog/?feed=rss2&amp;p=916</wfw:commentRss>
		</item>
		<item>
		<title>pv3d物体在stage上的坐标投射</title>
		<link>http://www.ryan-liu.com/blog/?p=912</link>
		<comments>http://www.ryan-liu.com/blog/?p=912#comments</comments>
		<pubDate>Thu, 10 Dec 2009 10:56:56 +0000</pubDate>
		<dc:creator>Ryan Liu</dc:creator>
		
		<category><![CDATA[Experiment]]></category>

		<category><![CDATA[pv3d]]></category>

		<guid isPermaLink="false">http://www.ryan-liu.com/blog/?p=912</guid>
		<description><![CDATA[
pv3d提供了方便的接口。将物体的autoCalcScreenCoords设为true，可以直接从screen属性取到坐标值。进入看源代码。

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193package &#123;
&#160; &#160; import flash.display.Graphics;
&#160; &#160; import flash.display.Shape;
&#160; &#160; import flash.display.Sprite;
&#160; &#160; import flash.events.Event;
&#160; &#160; import flash.events.KeyboardEvent;
&#160; &#160; import flash.events.MouseEvent;
&#160; &#160; import flash.events.TimerEvent;
&#160; &#160; import flash.geom.Point;
&#160; &#160; import flash.text.TextField;
&#160; &#160; import flash.text.TextFormat;
&#160; &#160; import flash.utils.Timer;
&#160; &#160; import org.papervision3d.lights.PointLight3D;
&#160; &#160; import org.papervision3d.materials.shadematerials.FlatShadeMaterial;
&#160; &#160; import org.papervision3d.materials.utils.MaterialsList;
&#160; &#160; import org.papervision3d.objects.DisplayObject3D;
&#160; &#160; import org.papervision3d.objects.primitives.Cube;
&#160; &#160; import org.papervision3d.objects.primitives.Sphere;
&#160; &#160; import [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.ryan-liu.com/demo/pv3d/screenprojection.html"><img class="alignnone size-full wp-image-913" title="thumb_screenprojection" src="http://www.ryan-liu.com/blog/wp-content/uploads/2009/12/thumb_screenprojection.gif" alt="thumb_screenprojection" width="530" height="90" /></a></p>
<p>pv3d提供了方便的接口。将物体的autoCalcScreenCoords设为true，可以直接从screen属性取到坐标值。进入看源代码。</p>
<p><span id="more-912"></span></p>
<div class="codecolorer-container actionscript3 " style="overflow:auto;white-space:nowrap;width:535px"><table cellspacing="0" cellpadding="0"><tbody><tr><td class="line-numbers"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br />17<br />18<br />19<br />20<br />21<br />22<br />23<br />24<br />25<br />26<br />27<br />28<br />29<br />30<br />31<br />32<br />33<br />34<br />35<br />36<br />37<br />38<br />39<br />40<br />41<br />42<br />43<br />44<br />45<br />46<br />47<br />48<br />49<br />50<br />51<br />52<br />53<br />54<br />55<br />56<br />57<br />58<br />59<br />60<br />61<br />62<br />63<br />64<br />65<br />66<br />67<br />68<br />69<br />70<br />71<br />72<br />73<br />74<br />75<br />76<br />77<br />78<br />79<br />80<br />81<br />82<br />83<br />84<br />85<br />86<br />87<br />88<br />89<br />90<br />91<br />92<br />93<br />94<br />95<br />96<br />97<br />98<br />99<br />100<br />101<br />102<br />103<br />104<br />105<br />106<br />107<br />108<br />109<br />110<br />111<br />112<br />113<br />114<br />115<br />116<br />117<br />118<br />119<br />120<br />121<br />122<br />123<br />124<br />125<br />126<br />127<br />128<br />129<br />130<br />131<br />132<br />133<br />134<br />135<br />136<br />137<br />138<br />139<br />140<br />141<br />142<br />143<br />144<br />145<br />146<br />147<br />148<br />149<br />150<br />151<br />152<br />153<br />154<br />155<br />156<br />157<br />158<br />159<br />160<br />161<br />162<br />163<br />164<br />165<br />166<br />167<br />168<br />169<br />170<br />171<br />172<br />173<br />174<br />175<br />176<br />177<br />178<br />179<br />180<br />181<br />182<br />183<br />184<br />185<br />186<br />187<br />188<br />189<br />190<br />191<br />192<br />193<br /></div></td><td><div class="actionscript3 codecolorer" style="font-family:Monaco,Lucida Console,monospace"><span class="kw4">package</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; <span class="kw1">import</span> <span class="kw6">flash.display</span>.<span class="kw5">Graphics</span>;<br />
&nbsp; &nbsp; <span class="kw1">import</span> <span class="kw6">flash.display</span>.<span class="kw5">Shape</span>;<br />
&nbsp; &nbsp; <span class="kw1">import</span> <span class="kw6">flash.display</span>.<span class="kw5">Sprite</span>;<br />
&nbsp; &nbsp; <span class="kw1">import</span> <span class="kw6">flash.events</span>.<span class="kw5">Event</span>;<br />
&nbsp; &nbsp; <span class="kw1">import</span> <span class="kw6">flash.events</span>.<span class="kw5">KeyboardEvent</span>;<br />
&nbsp; &nbsp; <span class="kw1">import</span> <span class="kw6">flash.events</span>.<span class="kw5">MouseEvent</span>;<br />
&nbsp; &nbsp; <span class="kw1">import</span> <span class="kw6">flash.events</span>.<span class="kw5">TimerEvent</span>;<br />
&nbsp; &nbsp; <span class="kw1">import</span> <span class="kw6">flash.geom</span>.<span class="kw5">Point</span>;<br />
&nbsp; &nbsp; <span class="kw1">import</span> <span class="kw6">flash.text</span>.<span class="kw5">TextField</span>;<br />
&nbsp; &nbsp; <span class="kw1">import</span> <span class="kw6">flash.text</span>.<span class="kw5">TextFormat</span>;<br />
&nbsp; &nbsp; <span class="kw1">import</span> <span class="kw6">flash.utils</span>.<span class="kw5">Timer</span>;<br />
&nbsp; &nbsp; <span class="kw1">import</span> org.papervision3d.lights.PointLight3D;<br />
&nbsp; &nbsp; <span class="kw1">import</span> org.papervision3d.materials.shadematerials.FlatShadeMaterial;<br />
&nbsp; &nbsp; <span class="kw1">import</span> org.papervision3d.materials.utils.MaterialsList;<br />
&nbsp; &nbsp; <span class="kw1">import</span> org.papervision3d.objects.DisplayObject3D;<br />
&nbsp; &nbsp; <span class="kw1">import</span> org.papervision3d.objects.primitives.Cube;<br />
&nbsp; &nbsp; <span class="kw1">import</span> org.papervision3d.objects.primitives.Sphere;<br />
&nbsp; &nbsp; <span class="kw1">import</span> org.papervision3d.view.BasicView;<br />
&nbsp; &nbsp; <br />
&nbsp; &nbsp; <span class="br0">&#91;</span>SWF<span class="br0">&#40;</span><span class="kw7">width</span>=<span class="st0">&quot;700&quot;</span>,<span class="kw7">height</span>=<span class="st0">&quot;400&quot;</span><span class="br0">&#41;</span><span class="br0">&#93;</span><br />
&nbsp; &nbsp; <span class="coMULTI">/**<br />
&nbsp; &nbsp; &nbsp;* @author Ryan Liu | www.ryan-liu.com<br />
&nbsp; &nbsp; &nbsp;* @since &nbsp;2009-4-10 8:32<br />
&nbsp; &nbsp; &nbsp;*/</span><br />
&nbsp; &nbsp; <span class="kw1">public</span> <span class="kw4">class</span> ScreeLocation extends BasicView <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">private</span> <span class="kw2">var</span> mat<span class="sy0">:</span>FlatShadeMaterial<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">private</span> <span class="kw2">var</span> matList<span class="sy0">:</span>MaterialsList<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">private</span> <span class="kw2">var</span> light<span class="sy0">:</span>PointLight3D<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">private</span> <span class="kw2">var</span> cross<span class="sy0">:</span><span class="kw5">Shape</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">private</span> <span class="kw2">var</span> ang<span class="sy0">:</span><span class="kw5">Number</span> = <span class="nu0">90</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">private</span> <span class="kw2">var</span> camTarget<span class="sy0">:</span>DisplayObject3D;<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">private</span> <span class="kw2">var</span> sw<span class="sy0">:</span><span class="kw5">int</span> = <span class="kw7">stage</span>.<span class="kw7">stageWidth</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">private</span> <span class="kw2">var</span> sh<span class="sy0">:</span><span class="kw5">int</span> = <span class="kw7">stage</span>.<span class="kw7">stageHeight</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">private</span> <span class="kw2">var</span> enemyNum<span class="sy0">:</span><span class="kw5">int</span> = <span class="nu0">5</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">private</span> <span class="kw2">var</span> enemyArr<span class="sy0">:</span><span class="kw5">Array</span> = <span class="br0">&#91;</span><span class="br0">&#93;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">private</span> <span class="kw2">var</span> uiColor<span class="sy0">:</span><span class="kw5">int</span> = 0x009922;<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">private</span> <span class="kw2">var</span> logColor<span class="sy0">:</span><span class="kw5">int</span> = 0x00cc44;<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">private</span> <span class="kw2">var</span> targetEnemyID<span class="sy0">:</span><span class="kw5">int</span> = <span class="nu0">0</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">private</span> <span class="kw2">var</span> targetPos<span class="sy0">:</span><span class="kw5">Point</span> = <span class="kw1">new</span> <span class="kw5">Point</span><span class="br0">&#40;</span><span class="br0">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">private</span> <span class="kw2">var</span> crossPos<span class="sy0">:</span><span class="kw5">Point</span> = <span class="kw1">new</span> <span class="kw5">Point</span><span class="br0">&#40;</span>sw <span class="sy0">/</span> <span class="nu0">2</span>, sh <span class="sy0">/</span> <span class="nu0">2</span><span class="br0">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">private</span> <span class="kw2">var</span> logField<span class="sy0">:</span><span class="kw5">TextField</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">private</span> <span class="kw2">var</span> defaultLog<span class="sy0">:</span><span class="kw5">String</span> = <span class="st0">&quot;Press 1-5 to switch target&quot;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">private</span> <span class="kw2">var</span> warningLog<span class="sy0">:</span><span class="kw5">String</span> = <span class="st0">&quot;Target out of sight&quot;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">private</span> <span class="kw2">var</span> logFormat<span class="sy0">:</span><span class="kw5">TextFormat</span> = <span class="kw1">new</span> <span class="kw5">TextFormat</span><span class="br0">&#40;</span><span class="st0">'arial'</span>, <span class="nu0">14</span>, logColor, <span class="kw1">false</span>, <span class="kw1">false</span>, <span class="kw1">false</span>,<span class="kw1">null</span>, <span class="kw1">null</span>, <span class="st0">'center'</span><span class="br0">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">private</span> <span class="kw2">var</span> logTimer<span class="sy0">:</span><span class="kw5">Timer</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">private</span> <span class="kw2">var</span> logTimerOn<span class="sy0">:</span><span class="kw5">Boolean</span> = <span class="kw1">false</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">private</span> <span class="kw2">var</span> logTimerDelay<span class="sy0">:</span><span class="kw5">int</span> = <span class="nu0">300</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">private</span> <span class="kw2">var</span> logTimerBuffer<span class="sy0">:</span><span class="kw5">String</span> = <span class="st0">&quot;&quot;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">public</span> <span class="kw3">function</span> ScreeLocation<span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; init3D<span class="br0">&#40;</span><span class="br0">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; initUI<span class="br0">&#40;</span><span class="br0">&#41;</span>; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; startRendering<span class="br0">&#40;</span><span class="br0">&#41;</span>; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw7">addEventListener</span><span class="br0">&#40;</span><span class="kw5">Event</span>.<span class="kw8">ENTER_FRAME</span>, <span class="kw7">loop</span><span class="br0">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw7">stage</span>.<span class="kw7">addEventListener</span><span class="br0">&#40;</span><span class="kw5">MouseEvent</span>.<span class="kw8">MOUSE_MOVE</span>, onMouseMove<span class="br0">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw7">stage</span>.<span class="kw7">addEventListener</span><span class="br0">&#40;</span><span class="kw5">KeyboardEvent</span>.<span class="kw8">KEY_DOWN</span>, onKeyPress<span class="br0">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">private</span> <span class="kw3">function</span> initUI<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">:</span><span class="kw1">void</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">var</span> screenui<span class="sy0">:</span><span class="kw5">Shape</span> = <span class="kw1">new</span> <span class="kw5">Shape</span><span class="br0">&#40;</span><span class="br0">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">var</span> g<span class="sy0">:</span><span class="kw5">Graphics</span> = screenui.<span class="kw7">graphics</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; g.<span class="kw7">lineStyle</span><span class="br0">&#40;</span><span class="nu0">1</span>, uiColor<span class="br0">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">var</span> gap<span class="sy0">:</span><span class="kw5">int</span> = <span class="nu0">15</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; g.<span class="kw7">drawRect</span><span class="br0">&#40;</span>gap, gap, sw <span class="sy0">-</span> gap <span class="sy0">*</span> <span class="nu0">2</span>, sh <span class="sy0">-</span> gap <span class="sy0">*</span> <span class="nu0">2</span><span class="br0">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; g.<span class="kw7">drawRect</span><span class="br0">&#40;</span><span class="nu0">0</span>, <span class="nu0">0</span>, sw <span class="sy0">-</span> <span class="nu0">1</span> , sh <span class="sy0">-</span> <span class="nu0">1</span> <span class="br0">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw7">addChild</span><span class="br0">&#40;</span>screenui<span class="br0">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; cross = <span class="kw1">new</span> <span class="kw5">Shape</span><span class="br0">&#40;</span><span class="br0">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw7">addChild</span><span class="br0">&#40;</span>cross<span class="br0">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; logField = <span class="kw1">new</span> <span class="kw5">TextField</span><span class="br0">&#40;</span><span class="br0">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; logField.<span class="kw7">width</span> = <span class="nu0">300</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; logField.<span class="kw7">height</span> = <span class="nu0">30</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; logField.<span class="kw7">x</span> = <span class="br0">&#40;</span>sw <span class="sy0">-</span> <span class="nu0">300</span><span class="br0">&#41;</span> <span class="sy0">*</span> .5;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; logField.<span class="kw7">y</span> = sh <span class="sy0">-</span> <span class="nu0">40</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; logField.<span class="kw7">selectable</span> = <span class="kw1">false</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; logField.<span class="kw7">text</span> = defaultLog;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; logField.<span class="kw7">setTextFormat</span><span class="br0">&#40;</span>logFormat<span class="br0">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw7">addChild</span><span class="br0">&#40;</span>logField<span class="br0">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; setLogInfo<span class="br0">&#40;</span>defaultLog<span class="br0">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; logTimer = <span class="kw1">new</span> <span class="kw5">Timer</span><span class="br0">&#40;</span>logTimerDelay<span class="br0">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; logTimer.<span class="kw7">addEventListener</span><span class="br0">&#40;</span><span class="kw5">TimerEvent</span>.<span class="kw8">TIMER</span>, onTimer<span class="br0">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">private</span> <span class="kw3">function</span> init3D<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">:</span><span class="kw1">void</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; camera.<span class="kw7">focus</span> = <span class="nu0">10</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; camera.<span class="kw7">zoom</span> = <span class="nu0">35</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; light = <span class="kw1">new</span> PointLight3D<span class="br0">&#40;</span><span class="br0">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; light.<span class="kw7">x</span> = <span class="nu0">8000</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; light.<span class="kw7">y</span> = <span class="nu0">12000</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; light.z = <span class="sy0">-</span><span class="nu0">8000</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; scene.<span class="kw7">addChild</span><span class="br0">&#40;</span>light<span class="br0">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">//build cubes</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">for</span> <span class="br0">&#40;</span><span class="kw2">var</span> i<span class="sy0">:</span><span class="kw5">int</span> = <span class="nu0">0</span>; i <span class="sy0">&lt;</span> enemyNum; i<span class="sy0">++</span><span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; mat = <span class="kw1">new</span> FlatShadeMaterial<span class="br0">&#40;</span>light, 0xffffff, <span class="kw5">Math</span>.<span class="kw7">random</span><span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="sy0">*</span> 0xffffff<span class="br0">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; matList = <span class="kw1">new</span> MaterialsList<span class="br0">&#40;</span><span class="br0">&#123;</span>all<span class="sy0">:</span>mat<span class="br0">&#125;</span><span class="br0">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">var</span> enemy<span class="sy0">:</span>Cube = <span class="kw1">new</span> Cube<span class="br0">&#40;</span>matList, <span class="nu0">60</span>, <span class="nu0">60</span>, <span class="nu0">60</span>, <span class="nu0">2</span>, <span class="nu0">2</span>, <span class="nu0">2</span><span class="br0">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; enemy.rotationX = <span class="kw5">Math</span>.<span class="kw7">random</span><span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="sy0">*</span> <span class="nu0">360</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; enemy.rotationY = <span class="kw5">Math</span>.<span class="kw7">random</span><span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="sy0">*</span> <span class="nu0">360</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; enemy.rotationZ = <span class="kw5">Math</span>.<span class="kw7">random</span><span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="sy0">*</span> <span class="nu0">360</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; enemy.<span class="kw7">x</span> = <span class="br0">&#40;</span><span class="kw5">Math</span>.<span class="kw7">random</span><span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="sy0">-</span> <span class="kw5">Math</span>.<span class="kw7">random</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="sy0">*</span> sw <span class="sy0">*</span> <span class="nu0">1.5</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; enemy.<span class="kw7">y</span> = <span class="br0">&#40;</span><span class="kw5">Math</span>.<span class="kw7">random</span><span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="sy0">-</span> <span class="kw5">Math</span>.<span class="kw7">random</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="sy0">*</span> sh <span class="sy0">*</span> <span class="nu0">1.2</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; enemy.z = <span class="br0">&#40;</span><span class="kw5">Math</span>.<span class="kw7">random</span><span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="sy0">-</span> <span class="kw5">Math</span>.<span class="kw7">random</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="sy0">*</span> <span class="nu0">300</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">//auto calculate screen coordinate</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; enemy.autoCalcScreenCoords = <span class="kw1">true</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; scene.<span class="kw7">addChild</span><span class="br0">&#40;</span>enemy<span class="br0">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; enemyArr.<span class="kw7">push</span><span class="br0">&#40;</span>enemy<span class="br0">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">//set camera's target &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; camTarget = <span class="kw1">new</span> DisplayObject3D<span class="br0">&#40;</span><span class="br0">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; scene.<span class="kw7">addChild</span><span class="br0">&#40;</span>camTarget<span class="br0">&#41;</span>;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; camera.<span class="kw7">target</span> = camTarget;<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">private</span> <span class="kw3">function</span> setLogInfo<span class="br0">&#40;</span><span class="kw7">info</span><span class="sy0">:</span><span class="kw5">String</span><span class="br0">&#41;</span><span class="sy0">:</span><span class="kw1">void</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; logField.<span class="kw7">text</span> = <span class="kw7">info</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; logField.<span class="kw7">setTextFormat</span><span class="br0">&#40;</span>logFormat<span class="br0">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">private</span> <span class="kw3">function</span> drawCross<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">:</span><span class="kw1">void</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">var</span> curTarget<span class="sy0">:</span>Cube = enemyArr<span class="br0">&#91;</span>targetEnemyID<span class="br0">&#93;</span> <span class="kw1">as</span> Cube;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">var</span> targetX<span class="sy0">:</span><span class="kw5">Number</span> = curTarget.screen.<span class="kw7">x</span> <span class="sy0">+</span> sw <span class="sy0">*</span> .5;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">var</span> targetY<span class="sy0">:</span><span class="kw5">Number</span> = curTarget.screen.<span class="kw7">y</span> <span class="sy0">+</span> sh <span class="sy0">*</span> .5;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">var</span> g<span class="sy0">:</span><span class="kw5">Graphics</span> = cross.<span class="kw7">graphics</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; g.<span class="kw7">clear</span><span class="br0">&#40;</span><span class="br0">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span>targetX <span class="sy0">&lt;</span> <span class="nu0">0</span> <span class="sy0">||</span> targetX <span class="sy0">&gt;</span> sw <span class="sy0">||</span> targetY <span class="sy0">&lt;</span> <span class="nu0">0</span> <span class="sy0">||</span> targetY <span class="sy0">&gt;</span> sh<span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; switchWarning<span class="br0">&#40;</span><span class="kw1">true</span><span class="br0">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span> <span class="kw1">else</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; switchWarning<span class="br0">&#40;</span><span class="kw1">false</span><span class="br0">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; crossPos.<span class="kw7">x</span> <span class="sy0">+</span>= <span class="br0">&#40;</span>targetX &nbsp;<span class="sy0">-</span> crossPos.<span class="kw7">x</span><span class="br0">&#41;</span> <span class="sy0">*</span> .4;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; crossPos.<span class="kw7">y</span> <span class="sy0">+</span>= <span class="br0">&#40;</span>targetY &nbsp;<span class="sy0">-</span> crossPos.<span class="kw7">y</span><span class="br0">&#41;</span> <span class="sy0">*</span> .4;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; g.<span class="kw7">lineStyle</span><span class="br0">&#40;</span><span class="nu0">1</span>, uiColor<span class="br0">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; g.<span class="kw7">moveTo</span><span class="br0">&#40;</span>crossPos.<span class="kw7">x</span>, <span class="nu0">0</span><span class="br0">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; g.<span class="kw7">lineTo</span><span class="br0">&#40;</span>crossPos.<span class="kw7">x</span>, sh<span class="br0">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; g.<span class="kw7">moveTo</span><span class="br0">&#40;</span><span class="nu0">0</span>, crossPos.<span class="kw7">y</span><span class="br0">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; g.<span class="kw7">lineTo</span><span class="br0">&#40;</span>sw, crossPos.<span class="kw7">y</span><span class="br0">&#41;</span>; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; g.<span class="kw7">drawRect</span><span class="br0">&#40;</span>crossPos.<span class="kw7">x</span> <span class="sy0">-</span> <span class="nu0">30</span>, crossPos.<span class="kw7">y</span> <span class="sy0">-</span> <span class="nu0">30</span>, <span class="nu0">60</span>, <span class="nu0">60</span><span class="br0">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">private</span> <span class="kw3">function</span> <span class="kw7">loop</span><span class="br0">&#40;</span>e<span class="sy0">:</span><span class="kw5">Event</span><span class="br0">&#41;</span><span class="sy0">:</span><span class="kw1">void</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">for</span> <span class="br0">&#40;</span><span class="kw2">var</span> i<span class="sy0">:</span><span class="kw5">int</span> = <span class="nu0">0</span>; i <span class="sy0">&lt;</span> enemyNum; i<span class="sy0">++</span><span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">var</span> enemy<span class="sy0">:</span>Cube = enemyArr<span class="br0">&#91;</span>i<span class="br0">&#93;</span> <span class="kw1">as</span> Cube;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; enemy.yaw<span class="br0">&#40;</span>i<span class="sy0">+</span><span class="nu0">1</span><span class="br0">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; camTarget.<span class="kw7">x</span> <span class="sy0">+</span>= <span class="br0">&#40;</span>targetPos.<span class="kw7">x</span> <span class="sy0">-</span> camTarget.<span class="kw7">x</span><span class="br0">&#41;</span> <span class="sy0">*</span> .2;&nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; camTarget.<span class="kw7">y</span> <span class="sy0">+</span>= <span class="br0">&#40;</span>targetPos.<span class="kw7">y</span> <span class="sy0">-</span> camTarget.<span class="kw7">y</span><span class="br0">&#41;</span> <span class="sy0">*</span> .2;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; drawCross<span class="br0">&#40;</span><span class="br0">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">private</span> <span class="kw3">function</span> onMouseMove<span class="br0">&#40;</span>e<span class="sy0">:</span><span class="kw5">MouseEvent</span><span class="br0">&#41;</span><span class="sy0">:</span><span class="kw1">void</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">var</span> <span class="kw7">tx</span><span class="sy0">:</span><span class="kw5">Number</span> = <span class="nu0">300</span><span class="sy0">*</span><span class="br0">&#40;</span>e.<span class="kw7">stageX</span> <span class="sy0">-</span> sw <span class="sy0">*</span> .5<span class="br0">&#41;</span> <span class="sy0">/</span> <span class="br0">&#40;</span>sw <span class="sy0">*</span> .5<span class="br0">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">var</span> <span class="kw7">ty</span><span class="sy0">:</span><span class="kw5">Number</span> = <span class="sy0">-</span><span class="nu0">300</span><span class="sy0">*</span><span class="br0">&#40;</span>e.<span class="kw7">stageY</span> <span class="sy0">-</span> sh <span class="sy0">*</span> .5<span class="br0">&#41;</span> <span class="sy0">/</span> <span class="br0">&#40;</span>sh <span class="sy0">*</span> .5<span class="br0">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; targetPos.<span class="kw7">x</span> = <span class="kw7">tx</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; targetPos.<span class="kw7">y</span> = <span class="kw7">ty</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">private</span> <span class="kw3">function</span> onKeyPress<span class="br0">&#40;</span>e<span class="sy0">:</span><span class="kw5">KeyboardEvent</span><span class="br0">&#41;</span><span class="sy0">:</span><span class="kw1">void</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">var</span> keycode<span class="sy0">:</span><span class="kw5">uint</span> = e.<span class="kw7">keyCode</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span>keycode <span class="sy0">&gt;</span>= <span class="nu0">49</span> <span class="sy0">&amp;&amp;</span> keycode <span class="sy0">&lt;</span>= <span class="nu0">53</span><span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; targetEnemyID = keycode <span class="sy0">-</span> <span class="nu0">49</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">private</span> <span class="kw3">function</span> switchWarning<span class="br0">&#40;</span>isOn<span class="sy0">:</span><span class="kw5">Boolean</span><span class="br0">&#41;</span><span class="sy0">:</span><span class="kw1">void</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span>logTimerOn == isOn<span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">return</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span> <span class="kw1">else</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; logTimerOn = isOn;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span>isOn<span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; setLogInfo<span class="br0">&#40;</span>warningLog<span class="br0">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; logTimerBuffer = warningLog;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; logTimer.<span class="kw7">start</span><span class="br0">&#40;</span><span class="br0">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span> <span class="kw1">else</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; setLogInfo<span class="br0">&#40;</span>defaultLog<span class="br0">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; logTimer.<span class="kw7">stop</span><span class="br0">&#40;</span><span class="br0">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">private</span> <span class="kw3">function</span> onTimer<span class="br0">&#40;</span>e<span class="sy0">:</span><span class="kw5">TimerEvent</span><span class="br0">&#41;</span><span class="sy0">:</span><span class="kw1">void</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span>logField.<span class="kw7">text</span> == <span class="st0">&quot;&quot;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; setLogInfo<span class="br0">&#40;</span>logTimerBuffer<span class="br0">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span> <span class="kw1">else</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; setLogInfo<span class="br0">&#40;</span><span class="st0">&quot;&quot;</span><span class="br0">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span><br />
<br />
&nbsp; &nbsp; <span class="br0">&#125;</span><br />
&nbsp; &nbsp; <br />
<span class="br0">&#125;</span></div></td></tr></tbody></table></div>
]]></content:encoded>
			<wfw:commentRss>http://www.ryan-liu.com/blog/?feed=rss2&amp;p=912</wfw:commentRss>
		</item>
	</channel>
</rss>
