PV3D目前沒有雙面的Plane物件
之前就是用Cube, 然後把深度設成0
現在有熱情的網友寫出DoublePlane物件
其實也是修改Cube物件來得, 這樣就決解了二面的問題
另一個問題點是
PV3D的Plane並沒有width和height的屬性
有時想用Tween來讓他變寬變高, 只能改scale屬性,不方便
所以奶小茶我就寫了一個簡單的類別去extends DoublePlane
讓他有width和height屬性。
之前就是用Cube, 然後把深度設成0
現在有熱情的網友寫出DoublePlane物件
其實也是修改Cube物件來得, 這樣就決解了二面的問題
另一個問題點是
PV3D的Plane並沒有width和height的屬性
有時想用Tween來讓他變寬變高, 只能改scale屬性,不方便
所以奶小茶我就寫了一個簡單的類別去extends DoublePlane
讓他有width和height屬性。
package { import flash.display.Sprite; import flash.events.Event; import flash.events.MouseEvent; import gs.TweenMax import gs.easing.*; import org.papervision3d.cameras.CameraType; import org.papervision3d.events.InteractiveScene3DEvent; import org.papervision3d.materials.BitmapMaterial; import org.papervision3d.materials.utils.BitmapMaterialTools; import org.papervision3d.view.BasicView; [SWF(width = "950", height = "500", frameRate = "41", backgroundColor = "#cccccc", pageTitle = "milkmidi.com")] public class Plane2Demo extends BasicView { [Embed(source='Paper01.png')] private var Texture:Class; [Embed(source='Paper02.png')] private var TextureBack:Class; private var _obj:MilkDoublePlane; private static const WIDTH:int = 350; private static const HEIGHT:int = 200; public function Plane2Demo(){ super(0, 0, true, true, CameraType.TARGET); viewport.buttonMode = true; init3DObjects(); startRendering(); } private function init3DObjects():void { var _bitFrontMat:BitmapMaterial = BitmapMaterialTools.createBitmapMaterial(Texture); _bitFrontMat.interactive = true; _bitFrontMat.precise = true; var _bitBackMat:BitmapMaterial = BitmapMaterialTools.createBitmapMaterial(TextureBack); _bitBackMat.interactive = true; _bitBackMat.precise = true; _obj = new MilkDoublePlane( _bitFrontMat , _bitBackMat, WIDTH, HEIGHT); //這時候就會有width和height的屬性可以使用。 trace(_obj.width , _obj.height); _obj.addEventListener(InteractiveScene3DEvent.OBJECT_CLICK , clickHandler); scene.addChild(_obj); } private function clickHandler(e:InteractiveScene3DEvent):void { //click button, tween obj width and height. //剛好圖片的大小是和場景寬、高一樣, //並使用screenZ公式,讓物件100%呈現。 TweenMax.to( _obj , 1, { z :screenZ, rotationY :180, width :stage.stageWidth, height :stage.stageHeight, ease :Cubic.easeInOut, yoyo :true, onComplete :tweenComplete } ); } private function tweenComplete():void { trace(_obj.width, _obj.height); } public function get screenZ():Number { return camera.focus * camera.zoom - Math.abs(camera.z); } } }SourceCodeDownload
留言
雖然辛苦但是值得阿~~
他們這紙飛機做的蠻不錯的~~
不論技術或是創意的點都很讚