pv3d 学习笔记-交互部分
2011-09-17 16:01
288 查看
1.Interactivity 交互
在3D 场景中尼可以使用下面两种类型的鼠标交互
通过材质
通过一个3D 对象
要与材质或者3D 对象进行鼠标交互必须先设置viewport 的interactive 属性为true。Viewport 的interactive
属性默认为false。viewport.interactive = true;如果类是继承自BasicView,那么也可以通过下面的方法来实现:
super(640,480,false,true);
请一定要在startRendering()方法执行前,先条用super()方法。
还有一种方法,就是在创建一个Viewport3D 对象时,用参数来指定:
var viewport:Viewport3D = new Viewport3D(640,480,false,true);
为了能通过材质进行交互,必须将材质的interactive 属性设为true:material.interactive = true;所有的材质
类型都有这个属性
2.材质交互(Material interactivity)
如:
private function init():void{
viewport.interactive = true;
var material:MovieAssetMaterial = new MovieAssetMaterial("material",false,true,false,true);
material.doubleSided = true;
material.rect = new Rectangle(0,0,200,200);
material.smooth = true;
material.precisionMode = PrecisionMode.STABLE;
material.interactive = true;
MovieClip(MovieClip(material.movie).getChildByName("btn")).mouseChildren = false;
MovieClip(material.movie).getChildByName("btn").addEventListener(MouseEvent.CLICK,click);
MovieClip(material.movie).getChildByName("btn").addEventListener(MouseEvent.MOUSE_OVER,mouseOver);
MovieClip(material.movie).getChildByName("btn").addEventListener(MouseEvent.MOUSE_OUT,mouseOut);
plane = new Plane(material,500,500);
scene.addChild(plane);
}
private function click(e:MouseEvent):void
{
var buttonText:TextField = MovieClip(e.target).getChildByName("label") as TextField;
switch(buttonText.text)
{
case "start":
buttonText.text = "stop";
MovieClip( MovieClip(e.target).parent ).play();
break;
default:
buttonText.text = "start";
MovieClip( MovieClip(e.target).parent ).stop();
}
}
private function mouseOver(e:MouseEvent):void
{
viewport.buttonMode = true;
}
private function mouseOut(e:MouseEvent):void
{
viewport.buttonMode = false;
}
3.除了材质交互,我们还有物体对象交互,这个在我们想要对整个物体进行交互时就会很有用。可以向3D
物体添加事件侦听然后就等待响应了
private function init():void{
viewport.interactive = true;
var material:ColorMaterial = new ColorMaterial();
material.doubleSided = true;
material.interactive = true;
var plane:Plane = new Plane(material);
//添加交互事件
plane.addEventListener(InteractiveScene3DEvent.OBJECT_CLICK,click);
scene.addChild(plane);
}
private function click(e:InteractiveScene3DEvent):void{
e.displayObject3D.localRotationY +=12;
}
do3D会发出如下事件:
InteractiveScene3DEvent.OBJECT_ADDED
InteractiveScene3DEvent.OBJECT_CLICK
InteractiveScene3DEvent.OBJECT_DOUBLE_CLICK
InteractiveScene3DEvent.OBJECT_MOVE
InteractiveScene3DEvent.OBJECT_OUT
InteractiveScene3DEvent.OBJECT_OVER
InteractiveScene3DEvent.OBJECT_PRESS
InteractiveScene3DEvent.OBJECT_RELEASE
InteractiveScene3DEvent.OBJECT_RELEASE_OUTSIDE
在3D 场景中尼可以使用下面两种类型的鼠标交互
通过材质
通过一个3D 对象
要与材质或者3D 对象进行鼠标交互必须先设置viewport 的interactive 属性为true。Viewport 的interactive
属性默认为false。viewport.interactive = true;如果类是继承自BasicView,那么也可以通过下面的方法来实现:
super(640,480,false,true);
请一定要在startRendering()方法执行前,先条用super()方法。
还有一种方法,就是在创建一个Viewport3D 对象时,用参数来指定:
var viewport:Viewport3D = new Viewport3D(640,480,false,true);
为了能通过材质进行交互,必须将材质的interactive 属性设为true:material.interactive = true;所有的材质
类型都有这个属性
2.材质交互(Material interactivity)
如:
private function init():void{
viewport.interactive = true;
var material:MovieAssetMaterial = new MovieAssetMaterial("material",false,true,false,true);
material.doubleSided = true;
material.rect = new Rectangle(0,0,200,200);
material.smooth = true;
material.precisionMode = PrecisionMode.STABLE;
material.interactive = true;
MovieClip(MovieClip(material.movie).getChildByName("btn")).mouseChildren = false;
MovieClip(material.movie).getChildByName("btn").addEventListener(MouseEvent.CLICK,click);
MovieClip(material.movie).getChildByName("btn").addEventListener(MouseEvent.MOUSE_OVER,mouseOver);
MovieClip(material.movie).getChildByName("btn").addEventListener(MouseEvent.MOUSE_OUT,mouseOut);
plane = new Plane(material,500,500);
scene.addChild(plane);
}
private function click(e:MouseEvent):void
{
var buttonText:TextField = MovieClip(e.target).getChildByName("label") as TextField;
switch(buttonText.text)
{
case "start":
buttonText.text = "stop";
MovieClip( MovieClip(e.target).parent ).play();
break;
default:
buttonText.text = "start";
MovieClip( MovieClip(e.target).parent ).stop();
}
}
private function mouseOver(e:MouseEvent):void
{
viewport.buttonMode = true;
}
private function mouseOut(e:MouseEvent):void
{
viewport.buttonMode = false;
}
3.除了材质交互,我们还有物体对象交互,这个在我们想要对整个物体进行交互时就会很有用。可以向3D
物体添加事件侦听然后就等待响应了
private function init():void{
viewport.interactive = true;
var material:ColorMaterial = new ColorMaterial();
material.doubleSided = true;
material.interactive = true;
var plane:Plane = new Plane(material);
//添加交互事件
plane.addEventListener(InteractiveScene3DEvent.OBJECT_CLICK,click);
scene.addChild(plane);
}
private function click(e:InteractiveScene3DEvent):void{
e.displayObject3D.localRotationY +=12;
}
do3D会发出如下事件:
InteractiveScene3DEvent.OBJECT_ADDED
InteractiveScene3DEvent.OBJECT_CLICK
InteractiveScene3DEvent.OBJECT_DOUBLE_CLICK
InteractiveScene3DEvent.OBJECT_MOVE
InteractiveScene3DEvent.OBJECT_OUT
InteractiveScene3DEvent.OBJECT_OVER
InteractiveScene3DEvent.OBJECT_PRESS
InteractiveScene3DEvent.OBJECT_RELEASE
InteractiveScene3DEvent.OBJECT_RELEASE_OUTSIDE
相关文章推荐
- pv3d 学习笔记-材质部分
- pv3d 学习笔记-技巧与总结部分
- Devexpress 12.2.8.0 部分学习笔记1 【HTML Editor】
- [C语言学习笔记]细节部分汇总
- ENC28J60学习笔记——第1部分
- FusionChart学习笔记(部分)
- VoIP学习笔记第二部分:语音编码
- ios学习笔记(二)xcode 4.3.2下实现基本交互
- python学习笔记10(用户交互程序)
- Linux学习内核移植相关笔记第1部分
- xtrabackup官方文档学习笔记【全备部分】
- Ext学习笔记(-)基础部分
- 学习笔记--http协议部分
- swift学习笔记之-方法部分
- Python学习笔记——部分常用/特殊用法
- Python学习笔记---基础汇总部分
- Java基础部分笔记(学习流程)
- Java学习笔记之字符串和部分函数
- C++ Primer(第4版)-第1部分:基本语言——学习笔记
- json数据交互---SpringMVC学习笔记(十二)