初始化引擎:
scene = new Scene3D();
// 创建一个俯瞰镜头
// Extended camera used to hover round a specified target object
camera = new HoverCamera3D();
camera.focus = 50;
// 镜头距离中心点的距离
camera.distance = 1000;
// 镜头上下移动的最小角度
camera.minTiltAngle = 0;
// 镜头上下移动的最大角度
camera.maxTiltAngle = 90;
// 镜头的初始左右位置(角度)
camera.panAngle = 45;
// 镜头的初始上下位置(角度)
camera.tiltAngle = 20;
// 启动镜头俯瞰特性,必须每帧都有,不然就没有动画效果了
// Updates the camera orientation
// Values are calculated using the defined tiltAngle, panAngle and steps variables.
// hover(true)表示使用steps属性,hover()表示不适用steps属性,默认是false
camera.hover(true);
renderer = new BasicRenderer();
view = new View3D();
view.scene = scene;
view.camera = camera;
view.renderer = renderer;
//view.addSourceURL("srcview/index.html");
addChild(view);
建立3D物体:
plane = new Plane();
plane.y = -20;
plane.width = 1000;
plane.height = 1000;
// sortType 表示这个物体在场景中Z-SORT的排序规则
// MeshSortType.BACK 表示以这个物体的最远点进行Z-SORT排序
// MeshSortType.CENTER 表示以这个物体的中心点进行Z-SORT排序
// MeshSortType.FRONT 表示以这个物体的最近点进行Z-SORT排序
plane.sortType = MeshSortType.BACK;
plane.segmentsW = 20;
plane.segmentsH = 20;
// Defines whether the coordinates of the plane points use a yUp orientation (true) or a zUp orientation (false).
// 确定该plane的法向量朝向,Y轴(true)还是Z轴(false)
plane.yUp = false;
scene.addChild(plane);
交互:判断点击的是哪个物体:
scene.addEventListener(MouseEvent3D.MOUSE_UP, onSceneMouseUp);
private function onSceneMouseUp(e:MouseEvent3D):void
{
if (e.object is Mesh) {
var mesh:Mesh = e.object as Mesh;
mesh.material = new WireColorMaterial();
}
}
实现拖拽镜头操作:
stage.addEventListener(MouseEvent.MOUSE_DOWN, onMouseDown);
addEventListener(Event.ENTER_FRAME, onEnterFrame);
private function onMouseDown(event:MouseEvent):void
{
lastPanAngle = camera.panAngle;
lastTiltAngle = camera.tiltAngle;
lastMouseX = stage.mouseX;
lastMouseY = stage.mouseY;
move = true;
stage.addEventListener(Event.MOUSE_LEAVE, onStageMouseLeave);
}
private function onEnterFrame(event:Event):void
{
if (move) {
camera.panAngle = 0.3*(stage.mouseX - lastMouseX) + lastPanAngle;
camera.tiltAngle = 0.3*(stage.mouseY - lastMouseY) + lastTiltAngle;
}
// 这句必须有
camera.hover();
view.render();
}
- 大小: 104.8 KB
分享到:
相关推荐
`InteractiveObject3D`类及其子类提供了一系列事件监听器,使得3D场景具有交互性。 ### 8. 引擎扩展 Away3D API允许开发者自定义扩展,如编写新的几何体、材质或粒子系统。通过继承和重写现有类,可以创建符合特定...
3. **交互对象**:`SteamVR_InteractiveObject`组件可以添加到游戏对象上,使其成为可与控制器交互的对象。例如,用户可以抓取、推动或旋转这些对象。 4. **手部模型**:工具包还提供了控制器的手部模型,使用户...
Fixjs_0.2.0已实现的内容: 【基础方法,基础类】 trace():页面调试输出 fixjs.Class:类定义 fixjs.Object:提供对象初始化,释放控制,克隆接口 fixjs.DisposeUtil:释放资源工具...fixjs.display.InteractiveObject
var myObj:InteractiveObject = new InteractiveObject(); // 产生错误 ``` 此代码会导致编译错误,因为 `InteractiveObject` 是一个抽象类,不能直接实例化。同样地,如果尝试继承 `DisplayObject` 类,也会遇到...
--新增功能:新增类fixjs.display.InteractiveObject release 0.1.0 --新增功能:新增全局函数trace --新增功能:新增类fixjs.Class --新增功能:新增类fixjs.Object --新增功能:新增类fixjs.DisposeUtil --新增...
VideoDisplay > UIComponent > FlexSprite > Sprite > DisplayObject > Container > InteractiveObject > EventDispatcher > Object ``` #### 三、MXML标签使用 `<mx:VideoDisplay>`标签继承了其超类的所有标签...
import flash.display.InteractiveObject; import flash.events.MouseEvent; import flash.display.DragManager; // 假设myComponent是拖动源 myComponent.addEventListener(MouseEvent.MOUSE_DOWN, startDrag); ...
(child as InteractiveObject).addEventListener(MouseEvent.CLICK, onClick); } if (child is DisplayObjectContainer) { // 如果是容器,递归添加监听器 addClickListeners(child as DisplayObjectContainer);...
* InteractiveObject:是 AS3 中的一个交互对象,定义了基本的交互行为。 * Sprite:是 AS3 中的一个 sprite 对象,定义了基本的 sprite 行为。 * Bitmap:是 AS3 中的一个位图对象,定义了基本的位图行为。 IV. ...
1. **交互对象**(InteractiveObject) - **DisplayObjectContainer**:这是显示对象的容器类,它允许你包含其他DisplayObject子类。DisplayObjectContainer有三个主要子类: - **Sprite**:是最常用的容器,可以...
2. **鼠标输入**:游戏中的交互主要通过鼠标,只有InteractiveObject的子类才能接收鼠标事件。学会处理鼠标拖拽、目标判定、启用/禁用鼠标消息以及坐标转换是关键。 3. **键盘输入**:键盘用于快捷键和其他交互,...
contextMenu.show(event.target as InteractiveObject, event.localX, event.localY); } ``` 4. **定义事件处理函数**:当用户点击菜单项时,对应的事件处理函数会被调用。在这里,我们可以执行相应的操作。 ```...
`InteractiveObject`类是`DisplayObject`的一个子类,它代表用户可以通过鼠标和键盘进行交互的对象,如`MovieClip`、`Sprite`、`SimpleButton`和`TextField`。它扩展了`DisplayObject`的功能,提供了事件监听和交互...
Object -> EventDispatcher -> DisplayObject -> InteractiveObject -> DisplayObjectContainer -> Sprite -> FlexSprite -> UIComponent ``` UIComponent中重要的属性包括`doubleClickEnabled`(启用双击事件)、`...
4. **InteractiveObject** - 添加交互性,如鼠标事件处理。 5. **DisplayObjectContainer** - 容器类,可以包含其他DisplayObject。 6. **Sprite** - 提供动画和绘图功能。 7. **FlexSprite** - 扩展Sprite,为Flex...
例如,`Button` 组件的 `click` 事件继承自 `InteractiveObject` 类,这表明事件注册通道可以在类之间传递。 ##### 3. 事件触发方法 在Flex中,事件触发通常通过在事件注册通道中指定处理函数来实现。例如: ```...
在Flex中,`InteractiveObject`类提供了一种处理用户输入的方式,如鼠标点击或键盘按键。通过`addEventListener`方法,可以注册事件监听器,当特定事件发生时执行相应的处理函数。例如: ```actionscript var ...
组件的继承层次结构从`Object`开始,经过`EventDispatcher`、`DisplayObject`、`InteractiveObject`、`DisplayObjectContainer`,最终到达`UIComponent`。`UIComponent`是所有可视化组件的基础,其中包含了如`...