<?xml version="1.0" standalone="yes"?>
<?xml-stylesheet type="text/xsl" href="css/rss.xslt"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>翼灵AS程序员之路 - PV3D</title><link>http://www.dodochen.com/</link><description>ActionScript3.0 - </description><generator>RainbowSoft Studio Z-Blog 1.8 Arwen Build 81206</generator><language>zh-CN</language><copyright>苏ICP备07500709号 Copyright 2008-2009 专注AS-website建设. Design by Jacky.</copyright><pubDate>Sun, 05 Sep 2010 07:56:37 +0800</pubDate><item><title>椭圆运动的图片show</title><author>sstpc@163.com (jacky)</author><link>http://www.dodochen.com/post/58.html</link><pubDate>Mon, 21 Jun 2010 13:27:21 +0800</pubDate><guid>http://www.dodochen.com/post/58.html</guid><description><![CDATA[<p><embed type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" src="http://www.dodochen.com/upload/2010/6/banner.swf" width="980" height="310" play="true" loop="true" menu="true"></embed></p><p><font face="Courier New" size="2" color="#3399FF">package<font color="#333333"> {</font></font><br /><font face="Courier New" size="2" color="#333333">&nbsp;&nbsp;&nbsp;&nbsp;<font color="#3399FF">import</font> caurina.transitions.Tweener;</font><br /><font face="Courier New" size="2" color="#333333">&nbsp;&nbsp;&nbsp;&nbsp;<font color="#3399FF">import</font> <font color="#3399FF">flash</font>.events.<font color="#3399FF">Event</font>;</font><br /><font face="Courier New" size="2" color="#333333">&nbsp;&nbsp;&nbsp;&nbsp;<font color="#3399FF">import</font> <font color="#3399FF">flash</font>.<font color="#3399FF">filters</font>.<font color="#3399FF">BlurFilter</font>;</font><br /><font face="Courier New" size="2" color="#333333">&nbsp;&nbsp;&nbsp;&nbsp;<font color="#3399FF">import</font> <font color="#3399FF">flash</font>.display.*;</font><br /><font face="Courier New" size="2" color="#333333">&nbsp;&nbsp;&nbsp;&nbsp;<font color="#3399FF">import</font> <font color="#3399FF">flash</font>.events.<font color="#3399FF">MouseEvent</font>;</font><br /><font face="Courier New" size="2" color="#333333">&nbsp;&nbsp;&nbsp;&nbsp;<font color="#3399FF">import</font> com.jacky.utils.<font color="#3399FF">getURL</font>;</font><br /><font face="Courier New" size="2" color="#333333">&nbsp;&nbsp;&nbsp;&nbsp;<font color="#3399FF">import</font> org.papervision3d.materials.MovieAssetMaterial;</font><br /><font face="Courier New" size="2" color="#333333">&nbsp;&nbsp;&nbsp;&nbsp;<font color="#3399FF">import</font> org.papervision3d.core.math.Quaternion;</font><br /><font face="Courier New" size="2" color="#333333">&nbsp;&nbsp;&nbsp;&nbsp;<font color="#3399FF">import</font> org.papervision3d.objects.DisplayObject3D;</font><br /><font face="Courier New" size="2" color="#333333">&nbsp;&nbsp;&nbsp;&nbsp;<font color="#3399FF">import</font> org.papervision3d.objects.primitives.Plane;</font><br /><font face="Courier New" size="2" color="#333333">&nbsp;&nbsp;&nbsp;&nbsp;<font color="#3399FF">import</font> org.papervision3d.core.effects.view.ReflectionView;</font><br /><font face="Courier New" size="2" color="#333333">&nbsp;&nbsp;&nbsp;&nbsp;<font color="#3399FF">import</font> org.papervision3d.events.InteractiveScene3DEvent;</font><br /><font face="Courier New" size="2" color="#333333">&nbsp;&nbsp;&nbsp;&nbsp;<font color="#3399FF">public</font> <font color="#3399FF">class</font> PV3D_t005 <font color="#3399FF">extends</font> ReflectionView {</font><br /><font face="Courier New" size="2" color="#333333">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#3399FF">private</font> <font color="#3399FF">var</font> flag:<font color="#3399FF">Boolean</font>;</font><br /><font face="Courier New" size="2" color="#333333">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#3399FF">private</font> <font color="#3399FF">var</font> oldID:<font color="#3399FF">uint</font> = 2;</font><br /><font face="Courier New" size="2" color="#333333">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#3399FF">private</font> <font color="#3399FF">var</font> len:<font color="#3399FF">Number</font>=0;</font><br /><font face="Courier New" size="2" color="#333333">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#3399FF">private</font> <font color="#3399FF">var</font> Material0:MovieAssetMaterial = <font color="#3399FF">new</font> MovieAssetMaterial(<font color="#DD0000">&quot;mc1&quot;</font>);</font><br /><font face="Courier New" size="2" color="#333333">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#3399FF">private</font> <font color="#3399FF">var</font> Material1:MovieAssetMaterial = <font color="#3399FF">new</font> MovieAssetMaterial(<font color="#DD0000">&quot;mc2&quot;</font>);</font><br /><font face="Courier New" size="2" color="#333333">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#3399FF">private</font> <font color="#3399FF">var</font> Material2:MovieAssetMaterial = <font color="#3399FF">new</font> MovieAssetMaterial(<font color="#DD0000">&quot;mc3&quot;</font>);</font><br /><font face="Courier New" size="2" color="#333333">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#3399FF">private</font> <font color="#3399FF">var</font> Material3:MovieAssetMaterial = <font color="#3399FF">new</font> MovieAssetMaterial(<font color="#DD0000">&quot;mc4&quot;</font>);</font><br /><font face="Courier New" size="2" color="#333333">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#3399FF">private</font> <font color="#3399FF">var</font> Material4:MovieAssetMaterial = <font color="#3399FF">new</font> MovieAssetMaterial(<font color="#DD0000">&quot;mc5&quot;</font>);</font><br /><font face="Courier New" size="2" color="#333333">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#3399FF">private</font> <font color="#3399FF">var</font> carousel:DisplayObject3D = <font color="#3399FF">new</font> DisplayObject3D();</font><br /><font face="Courier New" size="2" color="#333333">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#3399FF">private</font> <font color="#3399FF">var</font> tmpArr:<font color="#3399FF">Array</font>=<font color="#3399FF">new</font> <font color="#3399FF">Array</font>();</font><br /><font face="Courier New" size="2" color="#333333">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#3399FF">private</font> <font color="#3399FF">var</font> xrr:<font color="#3399FF">Array</font> = <font color="#3399FF">new</font> <font color="#3399FF">Array</font>(-296, -158, 0, 158, 296);</font><br /><font face="Courier New" size="2" color="#333333">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#3399FF">private</font> <font color="#3399FF">var</font> arr:<font color="#3399FF">Array</font> = <font color="#3399FF">new</font> <font color="#3399FF">Array</font>(-15, -25, 0, 25, 15);</font><br /><font face="Courier New" size="2" color="#333333">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#3399FF">private</font> <font color="#3399FF">var</font> zrr:<font color="#3399FF">Array</font> = <font color="#3399FF">new</font> <font color="#3399FF">Array</font>(0, -20, -50, -20, 0);</font><br /><font face="Courier New" size="2" color="#333333">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#3399FF">private</font> <font color="#3399FF">var</font> clickD:<font color="#3399FF">Boolean</font>=<font color="#3399FF">true</font>;</font><br /><font face="Courier New" size="2" color="#333333">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#3399FF">public</font> <font color="#3399FF">function</font> PV3D_t005() {</font><br /><font face="Courier New" size="2" color="#333333">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#3399FF">super</font>(980,310,<font color="#3399FF">false</font>,<font color="#3399FF">false</font>);</font><br /><font face="Courier New" size="2" color="#333333">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#3399FF">init</font>();</font><br /><font face="Courier New" size="2" color="#333333">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;surfaceHeight = -250;</font><br /><font face="Courier New" size="2" color="#333333">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#3399FF">this</font>.<font color="#3399FF">addEventListener</font>(<font color="#3399FF">Event</font>.<font color="#3399FF">ENTER_FRAME</font>,<font color="#3399FF">enterFrame</font>);</font><br /><font face="Courier New" size="2" color="#333333">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</font><br /><font face="Courier New" size="2" color="#333333">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#3399FF">private</font> <font color="#3399FF">function</font> <font color="#3399FF">init</font>():<font color="#3399FF">void</font> {</font><br /><font face="Courier New" size="2" color="#333333">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#3399FF">for</font> (<font color="#3399FF">var</font> i:<font color="#3399FF">int</font> = 0; i &lt; 5; i++) {</font><br /><font face="Courier New" size="2" color="#333333">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#3399FF">var</font> Material:MovieAssetMaterial=<font color="#3399FF">this</font>[<font color="#DD0000">&quot;Material&quot;</font>+i];</font><br /><font face="Courier New" size="2" color="#333333">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Material.interactive=<font color="#3399FF">true</font>;</font><br /><font face="Courier New" size="2" color="#333333">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Material.allowAutoResize=<font color="#3399FF">true</font>;</font><br /><font face="Courier New" size="2" color="#333333">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Material.doubleSided=<font color="#3399FF">false</font>;</font><br /><font face="Courier New" size="2" color="#333333">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#3399FF">var</font> plane:DisplayObject3D =<font color="#3399FF">new</font> Plane(Material,432,259,8,8);</font><br /><font face="Courier New" size="2" color="#333333">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;viewportReflection.<font color="#3399FF">filters</font> = [<font color="#3399FF">new</font> <font color="#3399FF">BlurFilter</font>(3,3,3)];</font><br /><font face="Courier New" size="2" color="#333333">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;viewportReflection.<font color="#3399FF">alpha</font>=.2;</font><br /><font face="Courier New" size="2" color="#333333">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#FF9900">//添加模糊滤镜后看起来会更逼真</font></font><br /><font face="Courier New" size="2" color="#333333">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#3399FF">trace</font>(Material.movie)</font><br /><font face="Courier New" size="2" color="#333333">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><br /><font face="Courier New" size="2" color="#333333">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;viewport.interactive=<font color="#3399FF">true</font>;</font><br /><br /><font face="Courier New" size="2" color="#333333">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;plane.<font color="#3399FF">x</font> = xrr[i];</font><br /><font face="Courier New" size="2" color="#333333">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;plane.rotationY = arr[i];</font><br /><font face="Courier New" size="2" color="#333333">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#3399FF">if</font> (i==2) {</font><br /><font face="Courier New" size="2" color="#333333">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;plane.z=-50;</font><br /><font face="Courier New" size="2" color="#333333">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</font><br /><font face="Courier New" size="2" color="#333333">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;plane.id=i;</font><br /><font face="Courier New" size="2" color="#333333">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;plane.<font color="#3399FF">name</font>=<font color="#DD0000">&quot;plan&quot;</font>+i;</font><br /><font face="Courier New" size="2" color="#333333">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;plane.<font color="#3399FF">addEventListener</font>(InteractiveScene3DEvent.OBJECT_OVER, overHander);</font><br /><font face="Courier New" size="2" color="#333333">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;plane.<font color="#3399FF">addEventListener</font>(InteractiveScene3DEvent.OBJECT_OUT, outHander);</font><br /><font face="Courier New" size="2" color="#333333">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;plane.<font color="#3399FF">addEventListener</font>(InteractiveScene3DEvent.OBJECT_PRESS, pressHander);</font><br /><font face="Courier New" size="2" color="#333333">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;carousel.<font color="#3399FF">addChild</font>(plane);</font><br /><font face="Courier New" size="2" color="#333333">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#FF9900">//carousel相当于一个planeGroup,plane是多个的</font></font><br /><font face="Courier New" size="2" color="#333333">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</font><br /><font face="Courier New" size="2" color="#333333">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;btn.<font color="#3399FF">addEventListener</font>(<font color="#3399FF">MouseEvent</font>.<font color="#3399FF">CLICK</font>,clickF)</font><br /><font face="Courier New" size="2" color="#333333">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;camera.z=-420;</font><br /><font face="Courier New" size="2" color="#333333">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;carousel.<font color="#3399FF">y</font>=15;</font><br /><font face="Courier New" size="2" color="#333333">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;scene.<font color="#3399FF">addChild</font>(carousel);</font><br /><font face="Courier New" size="2" color="#333333">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</font><br /><font face="Courier New" size="2" color="#333333">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#3399FF">private</font> <font color="#3399FF">function</font> clickF(e){</font><br /><font face="Courier New" size="2" color="#333333">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#3399FF">if</font>(clickD){</font><br /><font face="Courier New" size="2" color="#333333">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#3399FF">getURL</font>(<font color="#DD0000">&quot;index-nei.html&quot;</font>,<font color="#DD0000">&quot;_blank&quot;</font>)</font><br /><font face="Courier New" size="2" color="#333333">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</font><br /><font face="Courier New" size="2" color="#333333">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</font><br /><font face="Courier New" size="2" color="#333333">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#3399FF">private</font> <font color="#3399FF">function</font> overHander(e:InteractiveScene3DEvent):<font color="#3399FF">void</font> {</font><br /><font face="Courier New" size="2" color="#333333">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;viewport.<font color="#3399FF">buttonMode</font>=<font color="#3399FF">true</font>;</font><br /><font face="Courier New" size="2" color="#333333">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</font><br /><font face="Courier New" size="2" color="#333333">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#3399FF">private</font> <font color="#3399FF">function</font> outHander(e:InteractiveScene3DEvent):<font color="#3399FF">void</font> {</font><br /><font face="Courier New" size="2" color="#333333">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;viewport.<font color="#3399FF">buttonMode</font>=<font color="#3399FF">false</font>;</font><br /><font face="Courier New" size="2" color="#333333">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</font><br /><font face="Courier New" size="2" color="#333333">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#3399FF">private</font> <font color="#3399FF">function</font> preID(do3D) {</font><br /><br /><font face="Courier New" size="2" color="#333333">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#3399FF">for</font> (<font color="#3399FF">var</font> i=0; i&lt;5; i++) {</font><br /><font face="Courier New" size="2" color="#333333">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#3399FF">var</font> tmp=i-len;</font><br /><font face="Courier New" size="2" color="#333333">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#3399FF">if</font> (tmp&lt;0) {</font><br /><font face="Courier New" size="2" color="#333333">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tmp=tmp+5;</font><br /><font face="Courier New" size="2" color="#333333">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</font><br /><font face="Courier New" size="2" color="#333333">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#3399FF">var</font> plane=carousel.<font color="#3399FF">getChildByName</font>(<font color="#DD0000">&quot;plan&quot;</font>+i);</font><br /><br /><font face="Courier New" size="2" color="#333333">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#3399FF">var</font> tmpPlan=carousel.<font color="#3399FF">getChildByName</font>(<font color="#DD0000">&quot;plan&quot;</font>+tmp);</font><br /><font face="Courier New" size="2" color="#333333">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tmpArr[i]=tmpPlan.id;</font><br /><font face="Courier New" size="2" color="#333333">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Tweener.addTween(plane,{rotationY:tmpPlan.rotationY,<font color="#3399FF">x</font>:tmpPlan.<font color="#3399FF">x</font>,z:tmpPlan.z,<font color="#3399FF">time</font>:1,transition:<font color="#DD0000">&quot;easeInOutQuint&quot;</font>});</font><br /><font face="Courier New" size="2" color="#333333">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Tweener.addTween(btn,{<font color="#3399FF">alpha</font>:1,<font color="#3399FF">y</font>:292,<font color="#3399FF">time</font>:2,transition:<font color="#DD0000">&quot;easeInOutQuint&quot;</font>});</font><br /><font face="Courier New" size="2" color="#333333">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</font><br /><font face="Courier New" size="2" color="#333333">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;checkout();</font><br /><font face="Courier New" size="2" color="#333333">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</font><br /><font face="Courier New" size="2" color="#333333">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#3399FF">private</font> <font color="#3399FF">function</font> checkout() {</font><br /><font face="Courier New" size="2" color="#333333">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#3399FF">for</font> (<font color="#3399FF">var</font> i=0; i&lt;5; i++) {</font><br /><font face="Courier New" size="2" color="#333333">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#3399FF">var</font> plane=carousel.<font color="#3399FF">getChildByName</font>(<font color="#DD0000">&quot;plan&quot;</font>+i);</font><br /><font face="Courier New" size="2" color="#333333">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;plane.id=tmpArr[i];</font><br /><font face="Courier New" size="2" color="#333333">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><br /><font face="Courier New" size="2" color="#333333">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</font><br /><font face="Courier New" size="2" color="#333333">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</font><br /><font face="Courier New" size="2" color="#333333">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#3399FF">private</font> <font color="#3399FF">function</font> nextID(do3D) {</font><br /><font face="Courier New" size="2" color="#333333">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#3399FF">for</font> (<font color="#3399FF">var</font> i=0; i&lt;5; i++) {</font><br /><font face="Courier New" size="2" color="#333333">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#3399FF">var</font> tmp=i-len;</font><br /><font face="Courier New" size="2" color="#333333">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#3399FF">if</font> (tmp&gt;4) {</font><br /><font face="Courier New" size="2" color="#333333">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tmp=tmp-5;</font><br /><font face="Courier New" size="2" color="#333333">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</font><br /><font face="Courier New" size="2" color="#333333">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#3399FF">var</font> plane=carousel.<font color="#3399FF">getChildByName</font>(<font color="#DD0000">&quot;plan&quot;</font>+i);</font><br /><br /><font face="Courier New" size="2" color="#333333">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#3399FF">var</font> tmpPlan=carousel.<font color="#3399FF">getChildByName</font>(<font color="#DD0000">&quot;plan&quot;</font>+tmp);</font><br /><font face="Courier New" size="2" color="#333333">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tmpArr[i]=tmpPlan.id;</font><br /><font face="Courier New" size="2" color="#333333">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Tweener.addTween(plane,{rotationY:tmpPlan.rotationY,<font color="#3399FF">x</font>:tmpPlan.<font color="#3399FF">x</font>,z:tmpPlan.z,<font color="#3399FF">time</font>:1,transition:<font color="#DD0000">&quot;easeInOutQuint&quot;</font>});</font><br /><font face="Courier New" size="2" color="#333333">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Tweener.addTween(btn,{<font color="#3399FF">alpha</font>:1,<font color="#3399FF">y</font>:292,<font color="#3399FF">time</font>:2,transition:<font color="#DD0000">&quot;easeInOutQuint&quot;</font>});</font><br /><font face="Courier New" size="2" color="#333333">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</font><br /><font face="Courier New" size="2" color="#333333">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;checkout();</font><br /><font face="Courier New" size="2" color="#333333">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</font><br /><font face="Courier New" size="2" color="#333333">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#3399FF">private</font> <font color="#3399FF">function</font> pressHander(e:InteractiveScene3DEvent):<font color="#3399FF">void</font> {</font><br /><font face="Courier New" size="2" color="#333333">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#FF9900">//01234</font></font><br /><font face="Courier New" size="2" color="#333333">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;btn.<font color="#3399FF">alpha</font>=0;</font><br /><font face="Courier New" size="2" color="#333333">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;btn.<font color="#3399FF">y</font>=310;</font><br /><font face="Courier New" size="2" color="#333333">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><br /><font face="Courier New" size="2" color="#333333">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#3399FF">var</font> plane:DisplayObject3D=e.<font color="#3399FF">target</font> as DisplayObject3D;</font><br /><font face="Courier New" size="2" color="#333333">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;len=plane.id-oldID;</font><br /><font face="Courier New" size="2" color="#333333">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#3399FF">if</font>(plane.<font color="#3399FF">name</font>==<font color="#DD0000">&quot;plan2&quot;</font>){</font><br /><font face="Courier New" size="2" color="#333333">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;clickD=<font color="#3399FF">true</font>;</font><br /><font face="Courier New" size="2" color="#333333">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<font color="#3399FF">else</font>{</font><br /><font face="Courier New" size="2" color="#333333">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;clickD=<font color="#3399FF">false</font>;</font><br /><font face="Courier New" size="2" color="#333333">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</font><br /><font face="Courier New" size="2" color="#333333">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#3399FF">if</font> (len&gt;0) {</font><br /><font face="Courier New" size="2" color="#333333">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;preID(plane);</font><br /><font face="Courier New" size="2" color="#333333">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} <font color="#3399FF">else</font> <font color="#3399FF">if</font> (len&lt;0) {</font><br /><font face="Courier New" size="2" color="#333333">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;nextID(plane);</font><br /><font face="Courier New" size="2" color="#333333">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<font color="#3399FF">else</font>{</font><br /><font face="Courier New" size="2" color="#333333">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#3399FF">if</font>(plane.id==2){</font><br /><font face="Courier New" size="2" color="#333333">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#3399FF">if</font>(plane.<font color="#3399FF">name</font>==<font color="#DD0000">&quot;plan2&quot;</font>){</font><br /><font face="Courier New" size="2" color="#333333">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#3399FF">getURL</font>(<font color="#DD0000">&quot;index-nei.html&quot;</font>,<font color="#DD0000">&quot;_blank&quot;</font>)</font><br /><font face="Courier New" size="2" color="#333333">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</font><br /><font face="Courier New" size="2" color="#333333">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</font><br /><font face="Courier New" size="2" color="#333333">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</font><br /><br /><font face="Courier New" size="2" color="#333333">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</font><br /><font face="Courier New" size="2" color="#333333">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#3399FF">private</font> <font color="#3399FF">function</font> <font color="#3399FF">enterFrame</font>(e:<font color="#3399FF">Event</font>):<font color="#3399FF">void</font> {</font><br /><font face="Courier New" size="2" color="#333333">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;singleRender();</font><br /><font face="Courier New" size="2" color="#333333">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</font><br /><font face="Courier New" size="2" color="#333333">&nbsp;&nbsp;&nbsp;&nbsp;}</font><br /><font face="Courier New" size="2" color="#333333">}</font></p>]]></description><category>PV3D</category><comments>http://www.dodochen.com/post/58.html#comment</comments><wfw:comment>http://www.dodochen.com/</wfw:comment><wfw:commentRss>http://www.dodochen.com/feed.asp?cmt=58</wfw:commentRss><trackback:ping>http://www.dodochen.com/cmd.asp?act=tb&amp;id=58&amp;key=7f9570a6</trackback:ping></item><item><title>PV3D贴视频应用</title><author>sstpc@163.com (jacky)</author><link>http://www.dodochen.com/post/40.html</link><pubDate>Fri, 03 Apr 2009 15:01:18 +0800</pubDate><guid>http://www.dodochen.com/post/40.html</guid><description><![CDATA[<p><embed src="http://www.dodochen.com/upload/2009/4/3Dmod.swf" width="550" height="400" type="application/x-shockwave-flash" play="true" loop="true" menu="true"></embed><br />需要在3D中播放视频 如果用MovieMeterial 必须设置animated = true<br /><span style="color: #ff0000; font-family: 华文细黑">或者用专门的视频材质贴图。VideoStreamMaterial(video:Video, stream:NetStream, precise:Boolean = false, transparent:Boolean = false)<br />另外3Dmod中会对3D进行扭曲 为避免扭曲 有两种办法 一种是增加切面 一种是使用<span style="color: #000000; font-family: 宋体">Material.precise = true，这个就是用来避免扭曲造成的失真，比如原本平行的扭曲后不平行了；</span></span></p>]]></description><category>PV3D</category><comments>http://www.dodochen.com/post/40.html#comment</comments><wfw:comment>http://www.dodochen.com/</wfw:comment><wfw:commentRss>http://www.dodochen.com/feed.asp?cmt=40</wfw:commentRss><trackback:ping>http://www.dodochen.com/cmd.asp?act=tb&amp;id=40&amp;key=8d6c6ffe</trackback:ping></item><item><title>PV3D之旋转篇Quaternion</title><author>sstpc@163.com (jacky)</author><link>http://www.dodochen.com/post/20.html</link><pubDate>Fri, 27 Feb 2009 16:39:32 +0800</pubDate><guid>http://www.dodochen.com/post/20.html</guid><description><![CDATA[<p><embed menu="true" loop="true" play="true" type="application/x-shockwave-flash" height="400" width="550" src="http://www.dodochen.com/upload/2009/2/xuanzhuan.swf"></embed></p><p>现在PV3D处理旋转 实在是方便多了 还记得一年前 我还在AS2.0时代的时候做个这样旋转效果 忙乎了一下午<br />先放个以前AS2做过的套套3D</p><p><embed menu="true" loop="true" play="true" type="application/x-shockwave-flash" height="400" width="550" src="http://www.dodochen.com/upload/2009/2/杰士邦3D效果.swf"></embed></p><p>今非昔比啊，之前做的很复杂呢。不过现在PV3D里面的<a class="signatureLink" href="file:///F:/以前的F盘/papervision3d/trunk/as3/trunk/docs/org/papervision3d/core/math/Quaternion.html#Quaternion()">Quaternion</a>我也搞不懂 知道怎么用能实现就好了。</p><ol>    <li><font face="Courier New" color="#3399ff" size="2">package<font color="#333333"> </font></font></li>    <li><font face="Courier New" color="#333333" size="2">{</font></li>    <li><font face="Courier New" color="#333333" size="2">&nbsp;&nbsp;&nbsp;&nbsp;<font color="#3399ff">import</font> caurina.transitions.Tweener;</font></li>    <li><font face="Courier New" color="#333333" size="2">&nbsp;&nbsp;&nbsp;&nbsp;<font color="#3399ff">import</font> <font color="#3399ff">flash</font>.events.<font color="#3399ff">Event</font>;</font></li>    <li><font face="Courier New" color="#333333" size="2">&nbsp;&nbsp;&nbsp;&nbsp;<font color="#3399ff">import</font> <font color="#3399ff">flash</font>.<font color="#3399ff">filters</font>.<font color="#3399ff">BlurFilter</font>;</font></li>    <li>&nbsp;</li>    <li><font face="Courier New" color="#333333" size="2">&nbsp;&nbsp;&nbsp;&nbsp;<font color="#3399ff">import</font> org.papervision3d.materials.MovieAssetMaterial;</font></li>    <li><font face="Courier New" color="#333333" size="2">&nbsp;&nbsp;&nbsp;&nbsp;<font color="#3399ff">import</font> org.papervision3d.core.math.Quaternion;</font></li>    <li><font face="Courier New" color="#333333" size="2">&nbsp;&nbsp;&nbsp;&nbsp;<font color="#3399ff">import</font> org.papervision3d.objects.DisplayObject3D;</font></li>    <li><font face="Courier New" color="#333333" size="2">&nbsp;&nbsp;&nbsp;&nbsp;<font color="#3399ff">import</font> org.papervision3d.objects.primitives.Plane;</font></li>    <li><font face="Courier New" color="#333333" size="2">&nbsp;&nbsp;&nbsp;&nbsp;<font color="#3399ff">import</font> org.papervision3d.core.effects.view.ReflectionView;</font></li>    <li><font face="Courier New" color="#333333" size="2">&nbsp;&nbsp;&nbsp;&nbsp;<font color="#3399ff">import</font> org.papervision3d.events.InteractiveScene3DEvent;</font></li>    <li><font face="Courier New" color="#333333" size="2">&nbsp;&nbsp;&nbsp;&nbsp;<font color="#3399ff">public</font> <font color="#3399ff">class</font> PV3D_t005 <font color="#3399ff">extends</font> ReflectionView</font></li>    <li><font face="Courier New" color="#333333" size="2">&nbsp;&nbsp;&nbsp;&nbsp;{</font></li>    <li><font face="Courier New" color="#333333" size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#3399ff">private</font> <font color="#3399ff">var</font> flag:<font color="#3399ff">Boolean</font>;</font></li>    <li><font face="Courier New" color="#333333" size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#3399ff">private</font> <font color="#3399ff">var</font> currentQuat:Quaternion = <font color="#3399ff">new</font> Quaternion();</font></li>    <li><font face="Courier New" color="#333333" size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#3399ff">private</font> <font color="#3399ff">var</font> targetQuat:Quaternion = <font color="#3399ff">new</font> Quaternion();</font></li>    <li><font face="Courier New" color="#333333" size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#3399ff">private</font> <font color="#3399ff">var</font> slerp:<font color="#3399ff">Number</font> = 0;</font></li>    <li><font face="Courier New" color="#333333" size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#3399ff">private</font> <font color="#3399ff">const</font> RADIUS:<font color="#3399ff">Number</font> = 400;</font></li>    <li><font face="Courier New" color="#333333" size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#3399ff">private</font> <font color="#3399ff">const</font> NUM_OF_PLANES:<font color="#3399ff">int</font> = 9;</font></li>    <li><font face="Courier New" color="#333333" size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#3399ff">private</font> <font color="#3399ff">var</font> carousel:DisplayObject3D = <font color="#3399ff">new</font> DisplayObject3D();</font></li>    <li><font face="Courier New" color="#333333" size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#3399ff">private</font> <font color="#3399ff">var</font> Material:MovieAssetMaterial=<font color="#3399ff">new</font> MovieAssetMaterial(<font color="#dd0000">&quot;Photo1&quot;</font>);</font></li>    <li><font face="Courier New" color="#333333" size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#3399ff">public</font> <font color="#3399ff">function</font> PV3D_t005()</font></li>    <li><font face="Courier New" color="#333333" size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{</font></li>    <li><font face="Courier New" color="#333333" size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#3399ff">super</font>(550,400,<font color="#3399ff">false</font>,<font color="#3399ff">false</font>);</font></li>    <li><font face="Courier New" color="#333333" size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#3399ff">init</font>();</font></li>    <li><font face="Courier New" color="#333333" size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;surfaceHeight = -120;</font></li>    <li><font face="Courier New" color="#333333" size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#3399ff">this</font>.<font color="#3399ff">addEventListener</font>(<font color="#3399ff">Event</font>.<font color="#3399ff">ENTER_FRAME</font>,<font color="#3399ff">enterFrame</font>);</font></li>    <li><font face="Courier New" color="#333333" size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</font></li>    <li><font face="Courier New" color="#333333" size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#3399ff">private</font> <font color="#3399ff">function</font> <font color="#3399ff">init</font>():<font color="#3399ff">void</font></font></li>    <li><font face="Courier New" color="#333333" size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{</font></li>    <li><font face="Courier New" color="#333333" size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#3399ff">for</font> (<font color="#3399ff">var</font> i:<font color="#3399ff">int</font> = 0; i &lt; NUM_OF_PLANES; i++) {</font></li>    <li><font face="Courier New" color="#333333" size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Material.interactive=<font color="#3399ff">true</font>;</font></li>    <li><font face="Courier New" color="#333333" size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Material.allowAutoResize=<font color="#3399ff">true</font>;</font></li>    <li><font face="Courier New" color="#333333" size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Material.doubleSided=<font color="#3399ff">true</font>;</font></li>    <li><font face="Courier New" color="#333333" size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#3399ff">var</font> plane:DisplayObject3D =<font color="#3399ff">new</font> Plane(Material,100,100,4,4);</font></li>    <li><font face="Courier New" color="#333333" size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;viewportReflection.<font color="#3399ff">filters</font> = [<font color="#3399ff">new</font> <font color="#3399ff">BlurFilter</font>(3,3,3)];</font></li>    <li><font face="Courier New" color="#333333" size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#ff9900">//添加模糊滤镜后看起来会更逼真</font></font></li>    <li><font face="Courier New" color="#333333" size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;viewport.interactive=<font color="#3399ff">true</font>;</font></li>    <li><font face="Courier New" color="#333333" size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font></li>    <li><font face="Courier New" color="#333333" size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;plane.rotationY = 360 / NUM_OF_PLANES * i;</font></li>    <li><font face="Courier New" color="#333333" size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#ff9900">//以一定角度旋转每个平面，得到类似米字型</font></font></li>    <li><font face="Courier New" color="#333333" size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;plane.moveForward(RADIUS);</font></li>    <li><font face="Courier New" color="#333333" size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#ff9900">//每个平面像各自前方平移上面定义的半径距离</font></font></li>    <li><font face="Courier New" color="#333333" size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#ff9900">//这两步就是组成一个环形的关键代码</font></font></li>    <li><font face="Courier New" color="#333333" size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font></li>    <li><font face="Courier New" color="#333333" size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font></li>    <li><font face="Courier New" color="#333333" size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;plane.<font color="#3399ff">addEventListener</font>(InteractiveScene3DEvent.OBJECT_OVER, overHander);</font></li>    <li><font face="Courier New" color="#333333" size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;plane.<font color="#3399ff">addEventListener</font>(InteractiveScene3DEvent.OBJECT_OUT, outHander);</font></li>    <li><font face="Courier New" color="#333333" size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;plane.<font color="#3399ff">addEventListener</font>(InteractiveScene3DEvent.OBJECT_PRESS, pressHander);</font></li>    <li><font face="Courier New" color="#333333" size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;carousel.<font color="#3399ff">addChild</font>(plane);</font></li>    <li><font face="Courier New" color="#333333" size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#ff9900">//carousel相当于一个planeGroup,plane是多个的</font></font></li>    <li><font face="Courier New" color="#333333" size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</font></li>    <li><font face="Courier New" color="#333333" size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;camera.z=800;</font></li>    <li><font face="Courier New" color="#333333" size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#ff9900">//这个一开始搞了我很久，我以为默认是1000，没想到继承ReflectionView的Z默认是-1000;</font></font></li>    <li><font face="Courier New" color="#333333" size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;scene.<font color="#3399ff">addChild</font>(carousel);</font></li>    <li><font face="Courier New" color="#333333" size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</font></li>    <li><font face="Courier New" color="#333333" size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#3399ff">private</font> <font color="#3399ff">function</font> overHander(e:InteractiveScene3DEvent):<font color="#3399ff">void</font></font></li>    <li><font face="Courier New" color="#333333" size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{</font></li>    <li><font face="Courier New" color="#333333" size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;viewport.<font color="#3399ff">buttonMode</font>=<font color="#3399ff">true</font>;</font></li>    <li><font face="Courier New" color="#333333" size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</font></li>    <li><font face="Courier New" color="#333333" size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#3399ff">private</font> <font color="#3399ff">function</font> outHander(e:InteractiveScene3DEvent):<font color="#3399ff">void</font></font></li>    <li><font face="Courier New" color="#333333" size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{</font></li>    <li><font face="Courier New" color="#333333" size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;viewport.<font color="#3399ff">buttonMode</font>=<font color="#3399ff">false</font>;</font></li>    <li><font face="Courier New" color="#333333" size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</font></li>    <li><font face="Courier New" color="#333333" size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#3399ff">private</font> <font color="#3399ff">function</font> pressHander(e:InteractiveScene3DEvent):<font color="#3399ff">void</font></font></li>    <li><font face="Courier New" color="#333333" size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{</font></li>    <li><font face="Courier New" color="#333333" size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#3399ff">var</font> plane:DisplayObject3D=e.<font color="#3399ff">target</font> as DisplayObject3D;</font></li>    <li><font face="Courier New" color="#333333" size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#3399ff">var</font> radians:<font color="#3399ff">Number</font> = (carousel.rotationY -plane.rotationY) * Quaternion.DEGTORAD;</font></li>    <li><font face="Courier New" color="#333333" size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#ff9900">//Quaternion.DEGTORAD是一个常数</font></font></li>    <li><font face="Courier New" color="#333333" size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;slerp = 0;</font></li>    <li><font face="Courier New" color="#333333" size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;currentQuat = Quaternion.createFromMatrix(carousel.<font color="#3399ff">transform</font>);<font color="#ff9900">//复制一个3D矩阵</font></font></li>    <li><font face="Courier New" color="#333333" size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;targetQuat = Quaternion.createFromAxisAngle(0, 1, 0, radians);<font color="#ff9900">//x,y,z,度数</font></font></li>    <li><font face="Courier New" color="#333333" size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font></li>    <li><font face="Courier New" color="#333333" size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#ff9900">//trace(plane.rotationY,Quaternion.DEGTORAD,radians)</font></font></li>    <li>&nbsp;</li>    <li><font face="Courier New" color="#333333" size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</font></li>    <li><font face="Courier New" color="#333333" size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#3399ff">private</font> <font color="#3399ff">function</font> <font color="#3399ff">enterFrame</font>(e:<font color="#3399ff">Event</font>):<font color="#3399ff">void</font></font></li>    <li><font face="Courier New" color="#333333" size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{</font></li>    <li><font face="Courier New" color="#333333" size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;slerp += (1 - slerp) * .05;<font color="#ff9900">//只知道用来控制旋转速度的在0~1之间的一个变量</font></font></li>    <li><font face="Courier New" color="#333333" size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#3399ff">var</font> quat:Quaternion = Quaternion.slerp(currentQuat, targetQuat, slerp);</font></li>    <li><font face="Courier New" color="#333333" size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#ff9900">//currentQuat和targetQuat返回的都是带有x y z w信息的东西，从初始到目标的运动</font></font></li>    <li><font face="Courier New" color="#333333" size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;carousel.<font color="#3399ff">transform</font> = quat.<font color="#3399ff">matrix</font>;</font></li>    <li><font face="Courier New" color="#333333" size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#ff9900">//不断更新矩阵</font></font></li>    <li><font face="Courier New" color="#333333" size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;singleRender();</font></li>    <li><font face="Courier New" color="#333333" size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</font></li>    <li><font face="Courier New" color="#333333" size="2">&nbsp;&nbsp;&nbsp;&nbsp;}</font></li>    <li><font face="Courier New" color="#333333" size="2">}</font></li></ol><p>实例来自pv3d.org 想学好PV3D的朋友常去逛逛吧 会有收获的~</p>]]></description><category>PV3D</category><comments>http://www.dodochen.com/post/20.html#comment</comments><wfw:comment>http://www.dodochen.com/</wfw:comment><wfw:commentRss>http://www.dodochen.com/feed.asp?cmt=20</wfw:commentRss><trackback:ping>http://www.dodochen.com/cmd.asp?act=tb&amp;id=20&amp;key=96ca01d0</trackback:ping></item><item><title>PV3D之倒影加手型ReflectionView</title><author>sstpc@163.com (jacky)</author><link>http://www.dodochen.com/post/19.html</link><pubDate>Fri, 27 Feb 2009 13:48:20 +0800</pubDate><guid>http://www.dodochen.com/post/19.html</guid><description><![CDATA[<p><embed menu="true" loop="true" play="true" type="application/x-shockwave-flash" height="400" width="550" src="http://www.dodochen.com/upload/2009/2/handshadow3.swf"></embed></p><p>昨天帮快乐小球球同学研究的PV3D中的倒影实现。残酷天使告诉我PV3D中倒影有自带的类<font color="#404040">ReflectionView</font>。<br />原文参见<a href="http://www.horidream.com/blog/?p=57">http://www.horidream.com/blog/?p=57</a><br />快乐小球说到的手型问题 我试了下直接在视窗上加buttonMode=true就可以了 不知道这样会有何不妥。</p><p>&nbsp;</p><ol>    <li><font face="Courier New" color="#3399ff" size="2">package<font color="#333333"> {</font></font></li>    <li><font face="Courier New" color="#333333" size="2"><font color="#3399ff">import</font> caurina.transitions.Tweener;</font></li>    <li><font face="Courier New" color="#333333" size="2"><font color="#3399ff">import</font> <font color="#3399ff">flash</font>.events.<font color="#3399ff">Event</font>;</font></li>    <li><font face="Courier New" color="#333333" size="2"><font color="#3399ff">import</font> org.papervision3d.materials.MovieAssetMaterial;</font></li>    <li><font face="Courier New" color="#333333" size="2"><font color="#3399ff">import</font> org.papervision3d.objects.DisplayObject3D;</font></li>    <li><font face="Courier New" color="#333333" size="2"><font color="#3399ff">import</font> org.papervision3d.objects.primitives.Plane;</font></li>    <li><font face="Courier New" color="#333333" size="2"><font color="#3399ff">import</font> org.papervision3d.core.effects.view.ReflectionView;</font></li>    <li><font face="Courier New" color="#333333" size="2"><font color="#3399ff">import</font> org.papervision3d.events.InteractiveScene3DEvent;</font></li>    <li><font face="Courier New" color="#333333" size="2"><font color="#3399ff">public</font> <font color="#3399ff">class</font> PV3D <font color="#3399ff">extends</font> ReflectionView</font></li>    <li><font face="Courier New" color="#333333" size="2">{</font></li>    <li><font face="Courier New" color="#333333" size="2"><font color="#3399ff">private</font> <font color="#3399ff">var</font> flag:<font color="#3399ff">Boolean</font>;</font></li>    <li><font face="Courier New" color="#333333" size="2"><font color="#3399ff">private</font> <font color="#3399ff">var</font> plane:DisplayObject3D; </font></li>    <li><font face="Courier New" color="#333333" size="2"><font color="#3399ff">private</font> <font color="#3399ff">var</font> Material:MovieAssetMaterial=<font color="#3399ff">new</font> MovieAssetMaterial(<font color="#dd0000">&quot;Photo1&quot;</font>);</font></li>    <li><font face="Courier New" color="#333333" size="2"><font color="#3399ff">public</font> <font color="#3399ff">function</font> PV3D()</font></li>    <li><font face="Courier New" color="#333333" size="2">{</font></li>    <li><font face="Courier New" color="#333333" size="2">&nbsp;&nbsp;<font color="#3399ff">super</font>(550,400,<font color="#3399ff">false</font>,<font color="#3399ff">false</font>);</font></li>    <li><font face="Courier New" color="#333333" size="2">&nbsp;&nbsp;<font color="#3399ff">init</font>();</font></li>    <li><font face="Courier New" color="#333333" size="2">&nbsp;&nbsp;surfaceHeight = -120;//向下120，这个参数始终是以舞台正中间的为起点</font></li>    <li><font face="Courier New" color="#333333" size="2">&nbsp;&nbsp;<font color="#3399ff">this</font>.<font color="#3399ff">addEventListener</font>(<font color="#3399ff">Event</font>.<font color="#3399ff">ENTER_FRAME</font>,<font color="#3399ff">enterFrame</font>);</font></li>    <li><font face="Courier New" color="#333333" size="2">}</font></li>    <li><font face="Courier New" color="#333333" size="2"><font color="#3399ff">private</font> <font color="#3399ff">function</font> <font color="#3399ff">init</font>():<font color="#3399ff">void</font>{</font></li>    <li><font face="Courier New" color="#333333" size="2">&nbsp;&nbsp;Material.interactive=<font color="#3399ff">true</font>;<font color="#ff9900">//设置材质交互为true</font></font></li>    <li><font face="Courier New" color="#333333" size="2">&nbsp;&nbsp;Material.allowAutoResize=<font color="#3399ff">true</font>;<font color="#ff9900">//设置自适应</font></font></li>    <li><font face="Courier New" color="#333333" size="2">&nbsp;&nbsp;Material.doubleSided=<font color="#3399ff">true</font>;<font color="#ff9900">//默认是单面的。</font></font></li>    <li><font face="Courier New" color="#333333" size="2">&nbsp;&nbsp;plane =<font color="#3399ff">new</font> Plane(Material,285,400,4,4)</font></li>    <li><font face="Courier New" color="#333333" size="2">&nbsp;&nbsp;plane.<font color="#3399ff">y</font>=150;//如果不稍微抬高一点的话，可能会让其倒影超出舞台，或者向下120是不够滴</font></li>    <li><font face="Courier New" color="#333333" size="2">&nbsp;&nbsp;scene.<font color="#3399ff">addChild</font>(plane);</font></li>    <li><font face="Courier New" color="#333333" size="2">&nbsp;&nbsp;viewport.interactive=<font color="#3399ff">true</font>;</font></li>    <li><font face="Courier New" color="#333333" size="2">&nbsp;&nbsp;viewport.<font color="#3399ff">buttonMode</font>=<font color="#3399ff">true</font>;//出现手型</font></li>    <li><font face="Courier New" color="#333333" size="2">&nbsp;&nbsp;plane.<font color="#3399ff">addEventListener</font>(InteractiveScene3DEvent.OBJECT_PRESS, pressHander);</font></li>    <li><font face="Courier New" color="#333333" size="2">&nbsp;&nbsp;scene.<font color="#3399ff">addChild</font>(plane);</font></li>    <li><font face="Courier New" color="#333333" size="2">}</font></li>    <li><font face="Courier New" color="#333333" size="2"><font color="#3399ff">private</font> <font color="#3399ff">function</font> pressHander(e):<font color="#3399ff">void</font></font></li>    <li><font face="Courier New" color="#333333" size="2">{</font></li>    <li><font face="Courier New" color="#333333" size="2">&nbsp;&nbsp;Tweener.removeAllTweens(); </font></li>    <li><font face="Courier New" color="#333333" size="2">&nbsp;&nbsp;flag=!flag;</font></li>    <li><font face="Courier New" color="#333333" size="2">&nbsp;&nbsp;<font color="#3399ff">if</font>(flag)</font></li>    <li><font face="Courier New" color="#333333" size="2">&nbsp;&nbsp;{</font></li>    <li><font face="Courier New" color="#333333" size="2">&nbsp;&nbsp; Tweener.addTween(plane,{rotationY:720,scaleX:2,scaleY:2,<font color="#3399ff">time</font>:3})</font></li>    <li><font face="Courier New" color="#333333" size="2">&nbsp;&nbsp;}<font color="#3399ff">else</font>{</font></li>    <li><font face="Courier New" color="#333333" size="2">&nbsp;&nbsp; Tweener.addTween(plane,{rotationY:0,scaleX:1,scaleY:1,<font color="#3399ff">time</font>:3})</font></li>    <li><font face="Courier New" color="#333333" size="2">&nbsp;&nbsp;}</font><font face="Courier New" color="#333333" size="2">&nbsp;</font></li>    <li><font face="Courier New" color="#333333" size="2">}</font></li>    <li><font face="Courier New" color="#333333" size="2"><font color="#3399ff">private</font> <font color="#3399ff">function</font> <font color="#3399ff">enterFrame</font>(e:<font color="#3399ff">Event</font>):<font color="#3399ff">void</font>{</font></li>    <li><font face="Courier New" color="#333333" size="2">&nbsp;&nbsp;singleRender();//渲染器</font></li>    <li><font face="Courier New" color="#333333" size="2">}</font></li>    <li><font face="Courier New" color="#333333" size="2">}</font></li>    <li><font face="Courier New" color="#333333" size="2">}</font></li></ol>]]></description><category>PV3D</category><comments>http://www.dodochen.com/post/19.html#comment</comments><wfw:comment>http://www.dodochen.com/</wfw:comment><wfw:commentRss>http://www.dodochen.com/feed.asp?cmt=19</wfw:commentRss><trackback:ping>http://www.dodochen.com/cmd.asp?act=tb&amp;id=19&amp;key=8f4791a2</trackback:ping></item><item><title>PV3D之光影篇PointLight3D</title><author>sstpc@163.com (jacky)</author><link>http://www.dodochen.com/post/18.html</link><pubDate>Thu, 26 Feb 2009 13:27:18 +0800</pubDate><guid>http://www.dodochen.com/post/18.html</guid><description><![CDATA[<p>最后一篇PV3D之光影篇，现学现卖。</p><p>&nbsp;<embed menu="true" loop="true" play="true" type="application/x-shockwave-flash" height="450" width="600" src="http://www.dodochen.com/upload/2009/2/Light2.swf"></embed></p><p>&nbsp;</p><ol>    <li><font face="Courier New" color="#3399ff" size="2">package<font color="#333333"> </font></font></li>    <li><font face="Courier New" color="#333333" size="2">{</font></li>    <li><font face="Courier New" color="#333333" size="2">&nbsp;&nbsp;&nbsp;&nbsp;<font color="#3399ff">import</font> org.papervision3d.core.<font color="#3399ff">proto</font>.MaterialObject3D;</font></li>    <li><font face="Courier New" color="#333333" size="2">&nbsp;&nbsp;&nbsp;&nbsp;<font color="#3399ff">import</font> org.papervision3d.lights.PointLight3D;</font></li>    <li><font face="Courier New" color="#333333" size="2">&nbsp;&nbsp;&nbsp;&nbsp;<font color="#3399ff">import</font> org.papervision3d.materials.shadematerials.*;</font></li>    <li><font face="Courier New" color="#333333" size="2">&nbsp;&nbsp;&nbsp;&nbsp;<font color="#3399ff">import</font> org.papervision3d.materials.*;</font></li>    <li><font face="Courier New" color="#333333" size="2">&nbsp;&nbsp;&nbsp;&nbsp;<font color="#3399ff">import</font> org.papervision3d.materials.shaders.*;</font></li>    <li><font face="Courier New" color="#333333" size="2">&nbsp;&nbsp;&nbsp;&nbsp;<font color="#3399ff">import</font> org.papervision3d.objects.DisplayObject3D;</font></li>    <li><font face="Courier New" color="#333333" size="2">&nbsp;&nbsp;&nbsp;&nbsp;<font color="#3399ff">import</font> org.papervision3d.objects.primitives.Sphere;</font></li>    <li><font face="Courier New" color="#333333" size="2">&nbsp;&nbsp;&nbsp;&nbsp;<font color="#3399ff">public</font> <font color="#3399ff">class</font> ExampleforPointLight3D <font color="#3399ff">extends</font> PaperBase</font></li>    <li><font face="Courier New" color="#333333" size="2">&nbsp;&nbsp;&nbsp;&nbsp;{</font></li>    <li><font face="Courier New" color="#333333" size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#3399ff">private</font> <font color="#3399ff">var</font> sphere1:Sphere;</font></li>    <li><font face="Courier New" color="#333333" size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#3399ff">private</font> <font color="#3399ff">var</font> sphere2:Sphere;</font></li>    <li><font face="Courier New" color="#333333" size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#3399ff">private</font> <font color="#3399ff">var</font> sphere3:Sphere;</font></li>    <li><font face="Courier New" color="#333333" size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#3399ff">private</font> <font color="#3399ff">var</font> sphere4:Sphere;</font></li>    <li><font face="Courier New" color="#333333" size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#3399ff">private</font> <font color="#3399ff">var</font> sphereGroup:DisplayObject3D;//用一个do3d盛放这四个Sphere</font></li>    <li><font face="Courier New" color="#333333" size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#3399ff">private</font> <font color="#3399ff">static</font> <font color="#3399ff">const</font> ORBITAL_RADIUS=200;</font></li>    <li><font face="Courier New" color="#333333" size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#3399ff">public</font> <font color="#3399ff">function</font> ExampleforPointLight3D():<font color="#3399ff">void</font></font></li>    <li><font face="Courier New" color="#333333" size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{</font></li>    <li><font face="Courier New" color="#333333" size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#3399ff">init</font>(600,450);</font></li>    <li><font face="Courier New" color="#333333" size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</font></li>    <li><font face="Courier New" color="#333333" size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#3399ff">override</font> <font color="#3399ff">protected</font> <font color="#3399ff">function</font> init3d():<font color="#3399ff">void</font></font></li>    <li><font face="Courier New" color="#333333" size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{</font></li>    <li><font face="Courier New" color="#333333" size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#3399ff">var</font> light:PointLight3D=<font color="#3399ff">new</font> PointLight3D(<font color="#3399ff">true</font>);//括号内为true表示光源可见</font></li>    <li><font face="Courier New" color="#333333" size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;light.<font color="#3399ff">x</font>=0;</font></li>    <li><font face="Courier New" color="#333333" size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;light.<font color="#3399ff">y</font>=300;</font></li>    <li><font face="Courier New" color="#333333" size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;light.z=-400;//光源的3D坐标</font></li>    <li><font face="Courier New" color="#333333" size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//下面分别用到了3种阴影材质，不同的材质表现出来的效果都不一样</font></li>    <li><font face="Courier New" color="#333333" size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//产生光影的方法只需要将带有光源的阴影材质放入Sphere</font></li>    <li><font face="Courier New" color="#333333" size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#3399ff">var</font> gouraudMaterial:MaterialObject3D = <font color="#3399ff">new</font> GouraudMaterial(light, 0x6654FF, 0x060433);</font></li>    <li><font face="Courier New" color="#333333" size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sphere1 = <font color="#3399ff">new</font> Sphere(gouraudMaterial, 50, 10, 10);</font></li>    <li><font face="Courier New" color="#333333" size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sphere1.<font color="#3399ff">x</font> = ORBITAL_RADIUS;</font> <font face="Courier New" color="#333333" size="2">    <ul>        <li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#3399ff">var</font> phongMaterial:MaterialObject3D = <font color="#3399ff">new</font> PhongMaterial(light, 0x6654FF, 0x060433, 150);</li>        <li><font face="Courier New" color="#333333" size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sphere2 = <font color="#3399ff">new</font> Sphere(phongMaterial, 50, 10, 10);</font></li>        <li><font face="Courier New" color="#333333" size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sphere2.z = -ORBITAL_RADIUS;</font></li>        <li><font face="Courier New" color="#333333" size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#3399ff">var</font> cellMaterial:MaterialObject3D = <font color="#3399ff">new</font> CellMaterial(light, 0x6654FF, 0x060433, 5);</font></li>        <li><font face="Courier New" color="#333333" size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sphere3 = <font color="#3399ff">new</font> Sphere(cellMaterial, 50, 10, 10);</font></li>        <li><font face="Courier New" color="#333333" size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sphere3.z = ORBITAL_RADIUS;</font></li>    </ul>    </font></li>    <li><font face="Courier New" color="#333333" size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//如果要贴上指定位图并也要产生光影</font></li>    <li><font face="Courier New" color="#333333" size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //我们就需要制作一个Shader 和一个BitmapMaterial 用ShadedMaterial来将他们混合到一起</font></li>    <li><font face="Courier New" color="#333333" size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font face="Courier New" color="#333333" size="2">&nbsp;<font color="#3399ff">var</font> bitmapMaterial:BitmapMaterial=<font color="#3399ff">new</font> BitmapAssetMaterial(<font color="#dd0000">&quot;BitmapImage&quot;</font>);</font></li>    <li><font face="Courier New" color="#333333" size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#3399ff">var</font> shader:Shader = <font color="#3399ff">new</font> PhongShader(light, 0xFFFFFF, 0x333333, 50);</font></li>    <li><font face="Courier New" color="#333333" size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#3399ff">var</font> shadedMaterial:ShadedMaterial = <font color="#3399ff">new</font> ShadedMaterial(bitmapMaterial, shader);</font></li>    <li><font face="Courier New" color="#333333" size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sphere4 = <font color="#3399ff">new</font> Sphere(shadedMaterial, 150, 20, 20);</font></li>    <li><font face="Courier New" color="#333333" size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sphere4.<font color="#3399ff">x</font> = -ORBITAL_RADIUS;</font></li>    <li><font face="Courier New" color="#333333" size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font></li>    <li><font face="Courier New" color="#333333" size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sphereGroup = <font color="#3399ff">new</font> DisplayObject3D();</font></li>    <li><font face="Courier New" color="#333333" size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sphereGroup.<font color="#3399ff">addChild</font>(sphere1);</font></li>    <li><font face="Courier New" color="#333333" size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sphereGroup.<font color="#3399ff">addChild</font>(sphere2);</font></li>    <li><font face="Courier New" color="#333333" size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sphereGroup.<font color="#3399ff">addChild</font>(sphere3);</font></li>    <li><font face="Courier New" color="#333333" size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sphereGroup.<font color="#3399ff">addChild</font>(sphere4);</font></li>    <li>&nbsp;</li>    <li><font face="Courier New" color="#333333" size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;default_scene.<font color="#3399ff">addChild</font>(sphereGroup);</font></li>    <li><font face="Courier New" color="#333333" size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;default_scene.<font color="#3399ff">addChild</font>(light);</font></li>    <li>&nbsp;</li>    <li><font face="Courier New" color="#333333" size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</font></li>    <li><font face="Courier New" color="#333333" size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#3399ff">override</font> <font color="#3399ff">protected</font> <font color="#3399ff">function</font> processFrame():<font color="#3399ff">void</font></font></li>    <li><font face="Courier New" color="#333333" size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{</font></li>    <li><font face="Courier New" color="#333333" size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sphere1.yaw(-8);</font></li>    <li><font face="Courier New" color="#333333" size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sphere2.yaw(-8);</font></li>    <li><font face="Courier New" color="#333333" size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sphere3.yaw(-8);</font></li>    <li><font face="Courier New" color="#333333" size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sphere4.yaw(-8);</font></li>    <li><font face="Courier New" color="#333333" size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sphereGroup.yaw(3);</font></li>    <li><font face="Courier New" color="#333333" size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</font></li>    <li><font face="Courier New" color="#333333" size="2">&nbsp;&nbsp;&nbsp;&nbsp;}</font></li>    <li><font face="Courier New" color="#333333" size="2">}</font></li></ol><p>有关PV3D方面的学习笔记 至此就告一段落了。<br />更多更好的PV3D的中文学习教程请参考<a href="http://www.scile.cn/">http://www.scile.cn/</a>&nbsp; 里面写的很好很全面。</p>]]></description><category>PV3D</category><comments>http://www.dodochen.com/post/18.html#comment</comments><wfw:comment>http://www.dodochen.com/</wfw:comment><wfw:commentRss>http://www.dodochen.com/feed.asp?cmt=18</wfw:commentRss><trackback:ping>http://www.dodochen.com/cmd.asp?act=tb&amp;id=18&amp;key=0dc6ff56</trackback:ping></item><item><title>PV3D之视窗交互事件InteractiveScene3DEvent  </title><author>sstpc@163.com (jacky)</author><link>http://www.dodochen.com/post/15.html</link><pubDate>Tue, 24 Feb 2009 10:36:40 +0800</pubDate><guid>http://www.dodochen.com/post/15.html</guid><description><![CDATA[<p>&nbsp;</p><p><embed menu="true" loop="true" play="true" type="application/x-shockwave-flash" height="450" width="700" src="http://www.dodochen.com/upload/2009/2/PV3d3.swf"></embed></p><p>先来看下这个例子，鼠标点击后翻转平面。<br />这里面有以下几个知识点：</p><p>1：InteractiveScene3DEvent&nbsp; 有了它才能使3D场景中的物体产生类似MC一样的点击事件等等。<br />2：Tweener 这是我常用的缓动类，当然这篇中也可以不用，不过学会用好它是很无敌的。<br />3：对 MovieAssetMaterial Plane的浅度了解<br />4：camera.focus*camera.zoom = plane.z + Math.abs(camera.z) 无敌的相机公式</p><ol>    <li>package {</li>    <li>&nbsp;import caurina.transitions.Tweener;</li>    <li>&nbsp;import org.papervision3d.events.InteractiveScene3DEvent;</li>    <li>&nbsp;import org.papervision3d.materials.MovieAssetMaterial;</li>    <li>&nbsp;import org.papervision3d.objects.DisplayObject3D;</li>    <li>&nbsp;import org.papervision3d.objects.primitives.Plane;</li>    <li>&nbsp;public class Devent extends PaperBase</li>    <li>&nbsp;{</li>    <li>&nbsp;&nbsp;private var Material:MovieAssetMaterial=new MovieAssetMaterial(&quot;Photo1&quot;);//Photo1是库面板中mc的ID</li>    <li>&nbsp;&nbsp;private var plane:DisplayObject3D;&nbsp;</li>    <li>&nbsp;&nbsp;private var flag:Boolean=false;</li>    <li>&nbsp;&nbsp;public function Devent():void</li>    <li>&nbsp;&nbsp;{</li>    <li>&nbsp;&nbsp;&nbsp;init(700,450);</li>    <li>&nbsp;&nbsp;}</li>    <li>&nbsp;&nbsp;override protected function init3d():void</li>    <li>&nbsp;&nbsp;{</li>    <li>&nbsp;&nbsp;&nbsp;Material.interactive=true;//设置材质交互为true</li>    <li>&nbsp;&nbsp;&nbsp;Material.allowAutoResize=true;//设置自适应</li>    <li>&nbsp;&nbsp;&nbsp;Material.doubleSided=true;//默认是单面的。</li>    <li>&nbsp;&nbsp;&nbsp;plane =new Plane(Material,285,400,4,4)</li>    <li>//有关plane的几个参数建议仔细阅读下API，我就犯了个不小的错误，第2，3个参数是材质的长宽，</li>    <li>//第4 5参数由于我一开始不知道他的作用 胡乱写，结果导出后它居然是占用CPU的罪魁祸首。</li>    <li>//天使给我解释后才明白，4*4相当于分成横纵的16个小切面，切面越多越精确当然也越耗CPU。</li>    <li>&nbsp;&nbsp;&nbsp;default_scene.addChild(plane);</li>    <li>&nbsp;&nbsp;&nbsp;viewport.interactive=true;</li>    <li>//这个一开始以为只要给材质添加上交互为true，plane是在窗口里面的，所以很显然的逻辑。</li>    <li>&nbsp;&nbsp;&nbsp;default_camera.moveForward(650);//为什么要把相机向前移动，为什么参数是650.</li>    <li>//无敌的相机公式能让我们得到这个650，这样就可以使得材质渲染尺寸和我们实际需要的尺寸一样大了</li>    <li>&nbsp;&nbsp;&nbsp;plane.addEventListener(InteractiveScene3DEvent.OBJECT_PRESS, pressHander);</li>    <li>&nbsp;&nbsp;}</li>    <li>&nbsp;&nbsp;private function pressHander(e):void</li>    <li>&nbsp;&nbsp;{</li>    <li>&nbsp;&nbsp;&nbsp;Tweener.removeAllTweens();</li>    <li>&nbsp;&nbsp;&nbsp;flag=!flag;</li>    <li>&nbsp;&nbsp;&nbsp;if(flag)</li>    <li>&nbsp;&nbsp;&nbsp;{</li>    <li>&nbsp;&nbsp;&nbsp;&nbsp;Tweener.addTween(plane,{rotationY:180,time:3})</li>    <li>&nbsp;&nbsp;&nbsp;}else{</li>    <li>&nbsp;&nbsp;&nbsp;&nbsp;Tweener.addTween(plane,{rotationY:0,time:3})</li>    <li>&nbsp;&nbsp;&nbsp;}</li>    <li>&nbsp;&nbsp;}</li>    <li>&nbsp;}</li>    <li>}</li></ol><p>在此要特别感谢&ldquo;残酷天使&rdquo;的孜孜不倦的帮助。让我在学习前沿技术的道路上坚定了信心。</p>]]></description><category>PV3D</category><comments>http://www.dodochen.com/post/15.html#comment</comments><wfw:comment>http://www.dodochen.com/</wfw:comment><wfw:commentRss>http://www.dodochen.com/feed.asp?cmt=15</wfw:commentRss><trackback:ping>http://www.dodochen.com/cmd.asp?act=tb&amp;id=15&amp;key=76aef065</trackback:ping></item><item><title>PV3D之滤镜+键盘交互</title><author>sstpc@163.com (jacky)</author><link>http://www.dodochen.com/post/14.html</link><pubDate>Mon, 23 Feb 2009 10:29:11 +0800</pubDate><guid>http://www.dodochen.com/post/14.html</guid><description><![CDATA[<p>其实上节中已经有涉及鼠标交互了 ，给出代码了要大家自行尝试<br />default_camera.y = -(((mouseY - (stage.height/2))/stage.height) * 1600);<br />//确定相机的y范围在800~~-800之间,<br />即当mouseY=0时default_camera.y=800，当mouseY=stage.height时default_camera.y=-800<br />&nbsp;<wbr></wbr>&nbsp;<wbr></wbr>&nbsp;<wbr></wbr>default_camera.moveForward(default_camera.distanceTo(cow) - distance);<br />//限定相机相对于cow乳牛模型不要移动到更远的地方<br />&nbsp;<wbr></wbr>&nbsp;<wbr></wbr>&nbsp;<wbr></wbr>cow.rotationY = -((mouseX / stage.width) * 360);<br />//使用mouseX来控制cow乳牛Y方向旋转角度<br />将这段代码替换掉cow.yaw()即可</p><p>这节介绍下3D键盘交互事件，实际是跟flash中一样。另外现在所有的DO3D都支持滤镜了，顺带。<br />通过键盘的上下左右，来控制摄像头运动</p><hr /><p>&nbsp;</p><ol>    <li>package</li>    <li>{</li>    <li>&nbsp;import PaperBase;//导入PaperBase基础类</li>    <li>&nbsp;import org.papervision3d.objects.DisplayObject3D;</li>    <li>&nbsp;import org.papervision3d.objects.parsers.Collada;</li>    <li>&nbsp;import flash.events.KeyboardEvent;//增加导入键盘事件包</li>    <li>&nbsp;import flash.filters.*;//导入滤镜包</li>    <li>&nbsp;public class Main extends PaperBase</li>    <li>&nbsp;{</li>    <li>&nbsp;&nbsp;public var cow:DisplayObject3D;//在这里cow就是do3d对象；因为Collada是继承do3d的</li>    <li>&nbsp;&nbsp;public var filter:BlurFilter = new BlurFilter();</li>    <li>&nbsp;&nbsp;public var wdown:Boolean = false;</li>    <li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public var adown:Boolean = false;</li>    <li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public var sdown:Boolean = false;</li>    <li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public var ddown:Boolean = false;</li>    <li>&nbsp;&nbsp;public function Main()</li>    <li>&nbsp;&nbsp;{</li>    <li>&nbsp;&nbsp;&nbsp;init(700,550);//如果你熟悉基类，这里原来的两个参数应该是默认的800*600（这不重要）</li>    <li>&nbsp;&nbsp;&nbsp;stage.addEventListener(KeyboardEvent.KEY_DOWN, DownHander);</li>    <li>&nbsp;&nbsp;&nbsp;stage.addEventListener(KeyboardEvent.KEY_UP, UpHander);</li>    <li>&nbsp;&nbsp;}</li>    <li>&nbsp;&nbsp;public function DownHander( event:KeyboardEvent ):void</li>    <li>&nbsp;&nbsp;{</li>    <li>&nbsp;&nbsp;&nbsp;switch (event.keyCode) {//w:87&nbsp; a:65&nbsp; s:83&nbsp; d:68;上：38左：37右：39，下：40</li>    <li>&nbsp;&nbsp;&nbsp;&nbsp;case 38 :</li>    <li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;wdown = true;</li>    <li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;</li>    <li>&nbsp;&nbsp;&nbsp;&nbsp;case 37 :</li>    <li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;adown = true;</li>    <li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;</li>    <li>&nbsp;&nbsp;&nbsp;&nbsp;case 40 :</li>    <li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sdown = true;</li>    <li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;</li>    <li>&nbsp;&nbsp;&nbsp;&nbsp;case 39 :</li>    <li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ddown = true;</li>    <li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;</li>    <li>&nbsp;&nbsp;&nbsp;}</li>    <li>&nbsp;&nbsp;}</li>    <li>&nbsp;&nbsp;public function UpHander( event:KeyboardEvent ):void</li>    <li>&nbsp;&nbsp;{</li>    <li>&nbsp;&nbsp;&nbsp;switch (event.keyCode) {</li>    <li>&nbsp;&nbsp;&nbsp;&nbsp;case 38 :</li>    <li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;wdown = false;</li>    <li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;</li>    <li>&nbsp;&nbsp;&nbsp;&nbsp;case 37 :</li>    <li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;adown = false;</li>    <li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;</li>    <li>&nbsp;&nbsp;&nbsp;&nbsp;case 40 :</li>    <li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sdown = false;</li>    <li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;</li>    <li>&nbsp;&nbsp;&nbsp;&nbsp;case 39 :</li>    <li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ddown = false;</li>    <li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;</li>    <li>&nbsp;&nbsp;&nbsp;}</li>    <li>&nbsp;&nbsp;}</li>    <li>&nbsp;&nbsp;override protected function init3d():void</li>    <li>&nbsp;&nbsp;{</li>    <li>&nbsp;&nbsp;&nbsp;cow = new Collada(&quot;http://bogey.cn/wp-content/uploads/2008/09/cow.dae&quot;);&nbsp;</li>    <li>&nbsp;&nbsp;&nbsp;cow.scale = 3;</li>    <li>&nbsp;&nbsp;&nbsp;cow.moveDown(100);</li>    <li>&nbsp;&nbsp;&nbsp;default_scene.addChild(cow);</li>    <li>&nbsp;&nbsp;&nbsp;default_camera.target =cow;</li>    <li>&nbsp;&nbsp;&nbsp;viewport.filters=[filter];//这里记住是对窗口加滤镜，你试试对奶牛直接加滤镜看看</li>    <li>&nbsp;&nbsp;}</li>    <li>&nbsp;&nbsp;override protected function processFrame():void</li>    <li>&nbsp;&nbsp;{</li>    <li>&nbsp;&nbsp;&nbsp;if (wdown) {</li>    <li>&nbsp;&nbsp;&nbsp;&nbsp;default_camera.moveForward(60);//摄像机像窗口方向每次移动60；</li>    <li>&nbsp;&nbsp;&nbsp;}</li>    <li>&nbsp;&nbsp;&nbsp;if (sdown) {</li>    <li>&nbsp;&nbsp;&nbsp;&nbsp;default_camera.moveBackward(60);//背离窗口方向</li>    <li>&nbsp;&nbsp;&nbsp;}</li>    <li>&nbsp;&nbsp;&nbsp;if (adown) {</li>    <li>&nbsp;&nbsp;&nbsp;&nbsp;default_camera.moveLeft(15);//向左，这里我试过用yaw()函数 不过没用，<br />    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //但是查了帮助，camera是支持yaw有待解决这一疑问，</li>    <li>&nbsp;&nbsp;&nbsp;}</li>    <li>&nbsp;&nbsp;&nbsp;if (ddown) {</li>    <li>&nbsp;&nbsp;&nbsp;&nbsp;default_camera.moveRight(15);</li>    <li>&nbsp;&nbsp;&nbsp;}</li>    <li>&nbsp;&nbsp;}</li>    <li>&nbsp;</li>    <li>&nbsp;}</li>    <li>}</li></ol><hr /><p>&nbsp;<embed menu="true" loop="true" play="true" type="application/x-shockwave-flash" height="450" width="700" src="http://www.dodochen.com/upload/2009/2/PV3d2.swf" scale="showall"></embed>用键盘上下左右控制</p><p>&nbsp;</p>]]></description><category>PV3D</category><comments>http://www.dodochen.com/post/14.html#comment</comments><wfw:comment>http://www.dodochen.com/</wfw:comment><wfw:commentRss>http://www.dodochen.com/feed.asp?cmt=14</wfw:commentRss><trackback:ping>http://www.dodochen.com/cmd.asp?act=tb&amp;id=14&amp;key=19b68172</trackback:ping></item><item><title>基于PV3D基类的第一个实例----噢，奶牛!</title><author>sstpc@163.com (jacky)</author><link>http://www.dodochen.com/post/12.html</link><pubDate>Sat, 21 Feb 2009 16:15:23 +0800</pubDate><guid>http://www.dodochen.com/post/12.html</guid><description><![CDATA[<p>前面一节 给出了一个自定义的PV3D基类，把一些相同的功能集中抽象在这个类中；要实现效果，只需继承这个基类，重写父类中的方法！<br />这个思想是相当的牛逼的，我看到很多博文中都在推荐这个基类，很强的OOP思想。<br />以后所有的PV3D都以它为初始化。由于仅仅是为了初始化Papervision3D所必须的窗口、场景、相机和渲染器等要素，<br />所以没有过多的导入Papervision3D包，这样在继承这个基类时需要适当扩展。</p><p>本节先来看个导入dae的官方例子：</p><embed menu="true" loop="true" play="true" type="application/x-shockwave-flash" height="550" width="700" src="http://www.dodochen.com/upload/2009/2/PV3d.swf" scale="showall"></embed><p>&nbsp;</p><ol>    <li>package</li>    <li>{</li>    <li>&nbsp;import PaperBase;//导入PaperBase基础类</li>    <li>&nbsp;import org.papervision3d.objects.DisplayObject3D;//在基类中我们并没有导入DO3d，3D世界中DO3D是必不可少的</li>    <li>&nbsp;import org.papervision3d.objects.parsers.Collada;//此类是用于3D模型导入。也就是.dae格式的</li>    <li>&nbsp;public class Main extends PaperBase</li>    <li>&nbsp;{</li>    <li>&nbsp;&nbsp;public var cow:DisplayObject3D;</li>    <li>&nbsp;&nbsp;public var distance:Number = 1000;//</li>    <li>&nbsp;&nbsp;public function Main()</li>    <li>&nbsp;&nbsp;{</li>    <li>&nbsp;&nbsp;&nbsp;init();</li>    <li>&nbsp;&nbsp;}</li>    <li>&nbsp;&nbsp;override protected function init3d():void</li>    <li>&nbsp;&nbsp;{</li>    <li>&nbsp;&nbsp;&nbsp;cow = new Collada(&quot;cow.dae&quot;);</li>    <li>&nbsp;&nbsp;&nbsp;cow.scale = 3;</li>    <li>&nbsp;&nbsp;&nbsp;cow.moveDown(100);</li>    <li>&nbsp;&nbsp;&nbsp;default_scene.addChild(cow);</li>    <li>&nbsp;&nbsp;&nbsp;default_camera.target =cow;</li>    <li>&nbsp;&nbsp;}</li>    <li>&nbsp;&nbsp;override protected function processFrame():void</li>    <li>&nbsp;&nbsp;{</li>    <li>&nbsp;&nbsp;&nbsp;cow.yaw(1);</li>    <li>&nbsp;&nbsp;&nbsp;/*default_camera.y = -(((mouseY - (stage.height / 2)) / stage.height) * 1600);</li>    <li>&nbsp;&nbsp;&nbsp;default_camera.moveForward(default_camera.distanceTo(cow) - distance);</li>    <li>&nbsp;&nbsp;&nbsp;cow.rotationY = -((mouseX / stage.width) * 360) ;*/试试用上这段代码</li>    <li>&nbsp;&nbsp;}</li>    <li>&nbsp;</li>    <li>&nbsp;}</li>    <li>}</li></ol><p>&nbsp;default_camera.y = -(((mouseY - (stage.height/2))/stage.height) * 1600)<br />;//确定相机的y范围在800~~-800之间(因为我的舞台默认是800*600),<br />即当mouseY=0时default_camera.y=800，当mouseY=stage.height时default_camera.y=-800<br />&nbsp;<wbr></wbr>&nbsp;<wbr></wbr>&nbsp;<wbr></wbr>default_camera.moveForward(default_camera.distanceTo(cow) - distance);<br />//限定相机相对于cow乳牛模型不要移动到更远的地方<br />&nbsp;<wbr></wbr>&nbsp;<wbr></wbr>&nbsp;<wbr></wbr>cow.rotationY = -((mouseX / stage.width) * 360);//使用mouseX来控制cow乳牛Y方向旋转角度<br />&nbsp;</p>]]></description><category>PV3D</category><comments>http://www.dodochen.com/post/12.html#comment</comments><wfw:comment>http://www.dodochen.com/</wfw:comment><wfw:commentRss>http://www.dodochen.com/feed.asp?cmt=12</wfw:commentRss><trackback:ping>http://www.dodochen.com/cmd.asp?act=tb&amp;id=12&amp;key=4c50f7b7</trackback:ping></item></channel></rss>
