`
sjkgxf7191
  • 浏览: 257785 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Away3D Lite:Basic_InteractiveObject

阅读更多

初始化引擎:

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
0
0
分享到:
评论
1 楼 demojava 2012-03-18  
大哥,你代码不全啊,无法运行啊。。

相关推荐

    Away3D的API

    `InteractiveObject3D`类及其子类提供了一系列事件监听器,使得3D场景具有交互性。 ### 8. 引擎扩展 Away3D API允许开发者自定义扩展,如编写新的几何体、材质或粒子系统。通过继承和重写现有类,可以创建符合特定...

    用unity开发HTC VIVE所用到的工具包(SteamVR_Unity_Toolkit)

    3. **交互对象**:`SteamVR_InteractiveObject`组件可以添加到游戏对象上,使其成为可与控制器交互的对象。例如,用户可以抓取、推动或旋转这些对象。 4. **手部模型**:工具包还提供了控制器的手部模型,使用户...

    fixjs_src_0.2.0

    Fixjs_0.2.0已实现的内容: 【基础方法,基础类】 trace():页面调试输出 fixjs.Class:类定义 fixjs.Object:提供对象初始化,释放控制,克隆接口 fixjs.DisposeUtil:释放资源工具...fixjs.display.InteractiveObject

    flash ActionScript.3小技巧

    var myObj:InteractiveObject = new InteractiveObject(); // 产生错误 ``` 此代码会导致编译错误,因为 `InteractiveObject` 是一个抽象类,不能直接实例化。同样地,如果尝试继承 `DisplayObject` 类,也会遇到...

    fixjs-0.3.0

    --新增功能:新增类fixjs.display.InteractiveObject release 0.1.0 --新增功能:新增全局函数trace --新增功能:新增类fixjs.Class --新增功能:新增类fixjs.Object --新增功能:新增类fixjs.DisposeUtil --新增...

    flex_video_帮助2

    VideoDisplay > UIComponent > FlexSprite > Sprite > DisplayObject > Container > InteractiveObject > EventDispatcher > Object ``` #### 三、MXML标签使用 `<mx:VideoDisplay>`标签继承了其超类的所有标签...

    Flex 拖拽例子 从不同组件间拖拽

    import flash.display.InteractiveObject; import flash.events.MouseEvent; import flash.display.DragManager; // 假设myComponent是拖动源 myComponent.addEventListener(MouseEvent.MOUSE_DOWN, startDrag); ...

    flash builder 4.7加载外部swf文件

    (child as InteractiveObject).addEventListener(MouseEvent.CLICK, onClick); } if (child is DisplayObjectContainer) { // 如果是容器,递归添加监听器 addClickListeners(child as DisplayObjectContainer);...

    AS3_显示对象结构图.pdf

    * InteractiveObject:是 AS3 中的一个交互对象,定义了基本的交互行为。 * Sprite:是 AS3 中的一个 sprite 对象,定义了基本的 sprite 行为。 * Bitmap:是 AS3 中的一个位图对象,定义了基本的位图行为。 IV. ...

    Actionscript3.0基础语法

    1. **交互对象**(InteractiveObject) - **DisplayObjectContainer**:这是显示对象的容器类,它允许你包含其他DisplayObject子类。DisplayObjectContainer有三个主要子类: - **Sprite**:是最常用的容器,可以...

    开发Flash网络游戏需要掌握的技术

    2. **鼠标输入**:游戏中的交互主要通过鼠标,只有InteractiveObject的子类才能接收鼠标事件。学会处理鼠标拖拽、目标判定、启用/禁用鼠标消息以及坐标转换是关键。 3. **键盘输入**:键盘用于快捷键和其他交互,...

    Flex4自定义右键菜单源码.rar

    contextMenu.show(event.target as InteractiveObject, event.localX, event.localY); } ``` 4. **定义事件处理函数**:当用户点击菜单项时,对应的事件处理函数会被调用。在这里,我们可以执行相应的操作。 ```...

    flash学习笔记(一些常用方法的例子)

    `InteractiveObject`类是`DisplayObject`的一个子类,它代表用户可以通过鼠标和键盘进行交互的对象,如`MovieClip`、`Sprite`、`SimpleButton`和`TextField`。它扩展了`DisplayObject`的功能,提供了事件监听和交互...

    Flex4.5常见问题总结

    Object -> EventDispatcher -> DisplayObject -> InteractiveObject -> DisplayObjectContainer -> Sprite -> FlexSprite -> UIComponent ``` UIComponent中重要的属性包括`doubleClickEnabled`(启用双击事件)、`...

    flex学习心得

    4. **InteractiveObject** - 添加交互性,如鼠标事件处理。 5. **DisplayObjectContainer** - 容器类,可以包含其他DisplayObject。 6. **Sprite** - 提供动画和绘图功能。 7. **FlexSprite** - 扩展Sprite,为Flex...

    Flex事件机制(通俗易懂)

    例如,`Button` 组件的 `click` 事件继承自 `InteractiveObject` 类,这表明事件注册通道可以在类之间传递。 ##### 3. 事件触发方法 在Flex中,事件触发通常通过在事件注册通道中指定处理函数来实现。例如: ```...

    flex游戏开发

    在Flex中,`InteractiveObject`类提供了一种处理用户输入的方式,如鼠标点击或键盘按键。通过`addEventListener`方法,可以注册事件监听器,当特定事件发生时执行相应的处理函数。例如: ```actionscript var ...

    Flex问题解决大全

    组件的继承层次结构从`Object`开始,经过`EventDispatcher`、`DisplayObject`、`InteractiveObject`、`DisplayObjectContainer`,最终到达`UIComponent`。`UIComponent`是所有可视化组件的基础,其中包含了如`...

Global site tag (gtag.js) - Google Analytics