Flash ActionScript 3.0 高级教程:碰撞检测与转向行为

需积分: 49 3 下载量 13 浏览量 更新于2024-10-24 收藏 4.27MB PDF 举报
"AdvancED_ActionScript 3[1].0_CN 是一本关于Flash ActionScript 3.0的高级教程,旨在教授用户如何进行高级动画制作、碰撞检测、转向行为、等角投影、寻路算法以及二级输入设备如摄像头和麦克风的使用。这本书由多位译者协作完成,并鼓励读者通过指定网站提供反馈和错误报告。" 在这本教程中,你可以深入学习以下几个关键知识点: 1. **高级碰撞检测**: - 不规则图形的碰撞检测:讲解如何处理非标准形状的碰撞问题。 - BitmapData.hitTest的应用:利用BitmapData对象进行非位图对象的碰撞检测。 - 大量对象的碰撞检测:高效地处理大量游戏或应用中的动态对象之间的碰撞。 - 基于网格的碰撞检测:通过构建网格系统来优化大规模对象的碰撞检查。 2. **转向行为**: - 行为介绍:理解2D游戏中的基本行为模式。 - Vector2D类:学习使用2D向量来控制对象的移动和转向。 - Vehicle和SteeredVehicle类:创建可控制的虚拟车辆模型。 - 各种转向行为,包括寻找、避开、到达、追捕、躲避、漫游和对象回避。 - 路径跟随:让对象沿着预定义的路径移动。 - 群落模拟:实现多个对象的集体行为。 3. **等角投影**: - 等角投影的概念:了解等角投影与二等角的区别。 - 创建等角图形:绘制和操作等角视角下的图形。 - 形变坐标转换:处理等角坐标与屏幕坐标的转换。 - IsoUtils类:使用工具类进行等角世界的计算。 - 层深排序:确保等角场景中的正确视觉层次。 - 等角地图和3D移动:创建3D效果,同时处理碰撞检测。 4. **寻路算法**: - 寻路基础:理解寻路在游戏和交互式应用中的重要性。 - A*算法:详细讲解A*算法的原理和步骤。 - 实现A*代码:编写A*算法的程序实现。 - 估价函数:探讨常见的A*估价函数选择。 - 应用A*:将A*算法应用于实际路径规划问题。 5. **二级输入设备**: - 摄像头和麦克风的使用:学习如何获取和处理视频及音频输入。 - 声控游戏:创建基于声音输入的游戏机制。 - 视频处理:调整视频尺寸、质量,以及与位图的交互。 - 图像分析:反转图像,检测颜色和移动区域。 6. **高等物理:数值积分**: - 时间驱动的运动:理解基于时间的物理模拟。 - Runge-Kutta方法(RK2):学习使用数值方法模拟物理运动。 通过这些章节,你将能够提升你的ActionScript 3.0编程技能,创造出更复杂、更互动的Flash内容,无论是游戏还是其他多媒体项目。这本教程不仅提供了理论知识,还包含了大量的实践示例,帮助你将所学应用到实际项目中。

for (var i = 1; i <= 9; i++) { var img_mc:MovieClip = this["tu" + i]; // 添加点击事件监听器 img_mc.onPress = function() { // 创建该图像的副本,并将其设置为可拖动 var target_mc:MovieClip = this.duplicateMovieClip(this._name + "_copy", _root.getNextHighestDepth()); target_mc.startDrag(); target_mc.onPress = function() { this.startDrag(); }; // 在鼠标移动事件处理程序中,将图像的位置设置为鼠标位置 target_mc.onMouseMove = function() { if(Key.isDown(Key.H)) { // 从舞台上删除该剪辑 this.removeMovieClip(); return; this._x = _root._xmouse; this._y = _root._ymouse; } // 检查图像是否与其他图像重叠,并根据需要更新其透明度 for (var j = 1; j <= 9; j++) { var other_mc:MovieClip = _root["tu" + j]; if (target_mc != other_mc && target_mc.hitTest(other_mc)) { target_mc._alpha = 50; return; } } target_mc._alpha = 100; }; // 在鼠标释放事件处理程序中,检查图像是否与其他图像重叠 target_mc.onRelease = target_mc.onReleaseOutside = function () { this.stopDrag(); this.onMouseMove = null; target_mc.onRelease = target_mc.onReleaseOutside = function () { this.stopDrag(); }; // 检查图像是否与其他图像重叠,并根据需要更新其透明度 for (var j = 1; j <= 9; j++) { var other_mc:MovieClip = _root["tu" + j]; if (target_mc != other_mc && target_mc.hitTest(other_mc)) { target_mc._alpha = 50; return; } } // 将图像放置在当前位置,并将其透明度设置为100% target_mc._alpha = 100; target_mc.swapDepths(_root.getNextHighestDepth()); }; }; }运行时提示没有h的属性 要怎么做

2023-05-24 上传