# [PV3D]控制DAE模型的alpha值與滑鼠互動

- URL: https://justfly.idv.tw/pv3d%e6%8e%a7%e5%88%b6dae%e6%a8%a1%e5%9e%8b%e7%9a%84alpha%e5%80%bc%e8%88%87%e6%bb%91%e9%bc%a0%e4%ba%92%e5%8b%95/
- 日期: 2009-12-08
- 分類: WEB&amp;RIA
- 標籤: actionscript, dae, flash, pv3D, RIA, swf

要在FLASH中玩3D看來還是要靠PV3D

不過即使真的導入DAE模型

要控制他也不是一件很直覺的事情

而且DAE模型最好還是一張貼圖搞定

不然整個FLASH就會慢到要人抓狂!!!

[[DEMO]MOVEROUSE會變透明,MOUSEOUT後回復](https://justfly.idv.tw/wp-content/uploads/2009/12/LoadModel.swf)

奇怪,沒辦法貼在文章中….

是PV3D的關係嗎!?

算了…看程式碼就好了^^”

```
package {
	import flash.display.*;
	import flash.events.*;
	import org.papervision3d.materials.utils.MaterialsList;
	import org.papervision3d.objects.parsers.DAE;
	import org.papervision3d.materials.*;
	import org.papervision3d.events.*;
	import org.papervision3d.view.BasicView;

	import caurina.transitions.Tweener;

	public class LoadModel extends Sprite{
		private var view		:BasicView;
		private var dae			:DAE;//DAE物件

		public function LoadModel(){
			init3DEngine();
			init3DObject();
		}
		private function init3DEngine():void{
			view = new BasicView(0, 0, true, true, "Target");
			view.camera.y = 200;
			this.addChild(view);
			this.addEventListener(Event.ENTER_FRAME, onEventRender3D);
		}
		private function init3DObject():void{
			dae = new DAE(true, "dae", true);
			dae.load("dae/shop2.dae");
			dae.y = -250;
			dae.scale = 100;
			dae.addEventListener(FileLoadEvent.ANIMATIONS_COMPLETE, daeComplete);
			view.scene.addChild(dae);
		}
		private function daeComplete(e:FileLoadEvent) {
			dae.getMaterialByName("shop2").interactive = true;
			//在shop2.dae中的material標籤
			dae.getChildByName("COLLADA_Scene").getChildByName("Mesh_Object").addEventListener(InteractiveScene3DEvent.OBJECT_OVER, daeOverHandler);
			dae.getChildByName("COLLADA_Scene").getChildByName("Mesh_Object").addEventListener(InteractiveScene3DEvent.OBJECT_OUT, daeOutHandler);

			dae.useOwnContainer = true;
			dae.getChildByName("COLLADA_Scene").getChildByName("Mesh_Object").useOwnContainer = true;
		}
		private function daeOverHandler(e:InteractiveScene3DEvent) {
			Tweener.addTween(dae, {alpha:0.5 , time:0.5});
		}
		private function daeOutHandler(e:InteractiveScene3DEvent) {
			Tweener.addTween(dae, {alpha:1 , time:0.5});
		}
		private function onEventRender3D(e:Event):void{
			dae.rotationY += 2;
			view.singleRender();
		}
	}
}
```
