




已阅读5页,还剩56页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
AppInventor 动画 wuhuth 1 目标 主要介绍画布 Canvas 和精灵 ImageSprite 的使用方法 以及一些高级的动画功能 如边缘检测 碰撞处理和精灵操纵等 掌握画布的使用方法理解画布的坐标系统掌握精灵的使用方法掌握球 Ball 的使用方法了解边缘检测和碰撞处理的原理 2 画布 画布是一种可在其上绘制图像的控件 初始的画布像一张空白幻灯片 没有任何内容 用户可以在画布上绘制各种图形 也可以在画布上加载图片作为画布的背景 或是在画布上显示文字 画布是常用的控件 除了作为绘制图形的承载体以外 还经常作为游戏的背景画面 画布是一个具有触控感应的二维平面图板 采用经典的二维坐标系 原点在画布的左上角 使用坐标点 X Y 说明画布的坐标系 X表示坐标点距离左侧边缘的距离 Y表示坐标点距离上边缘的距离 且X和Y都取正值 3 画布 4 在基本控件库中可以找到画布 Canvas 将画布拖拽到界面设计区后 画布仅仅显示为一个小图标 如下图所示 画布 5 画布属性 6 画布事件 7 画布事件 手指从A点按下 缓慢划线 从B点滑动到C点 然后抬起手指的过程 手指接触到A点时产生TouchDown事件 手指从A到B再到C的移动过程中 将多次产生Dragged事件 在手指离开C点时 产生TouchUp事件 TouchDown和TouchUp事件只在手指触碰到屏幕和离开屏幕时产生 如果手指的触碰点和抬起点是同一点 将引发Touched事件 如果手指在屏幕上移动了 则不会引发Touched事件 8 画布的Dragged事件 Dragged事件在手指移动过程中持续产生 主要用来跟踪手指的移动轨迹 该事件提供三个坐标 分别是移动开始坐标点 StartX和StartY 事件产生时的当前坐标点 CurrentX和CurrentY 前一个事件产生时的坐标点 PrevX和PrevY 以右图场景为例 如果从A点到C的过程中 只在B点和C点产生了Dragged事件 则在C点产生的事件中 移动开始节点是A 当前节点是C 前一个事件产生是在B点 9 画布的Flung事件 画布的Flung事件只有手指在屏幕上快速划动的时候才会产生 以右图场景为例 在从A经过B到C的过程中 如果手指在屏幕上移动的足够快 则当手指在C点抬起时 会产生Flung事件 Flung事件中会提供划动开始节点的坐标 划动方向 速度 速度在X轴和Y轴的分量 10 画布的Flung事件 11 画布的事件 12 示例CanvasEvent 13 示例CanvasEvent 14 示例CanvasEvent CanvasEvent示例说明画布的事件响应的时机和提供的数据 上图分别是在界面编辑器中的界面和手机运行时的界面 CanvasEvent示例中上方是画布控件 下方是各种事件数据的显示区域 在上方的画布上进行触碰操作或滑动操作 事件的响应结果便会显示在界面下部 15 示例CanvasEvent逻辑控制模 16 TouchDown事件处理函数逻辑模块 17 TouchUp事件处理函数逻辑模块 18 Touched事件处理函数逻辑模块 19 画布方法 20 画布方法 画布所支持的方法 除了Clear和Save方法之外都需要用户提供坐标作为基本参数 如DrawPoint和GetPixelColor 下图给出了画布所有方法中需要用户提供的参数 21 画布方法 22 相机 相机控件是一个非可视化控件 可利用手机的镜头进行拍照 相机控件在媒体控件区 Media 可以找到 23 相机控件只支持一种方法TakePicture 此方法被调用时 手机将进行拍照 该方法结束后会引发AfterPictures事件 相机 24 AfterPicture事件在拍照完成后被产生 其中image是手机中用来存放拍摄照片的路径信息 相机 25 加速传感器控件 加速传感器控件用来检测手机加速度大小 可在三个方向测量手机晃动时的加速度 测量单位为米 秒2 m s2 加速传感器控件在传感器控件区 Sensors 可以找到 26 加速传感器控件 加速传感器控件支持X加速度 Y加速度 Z加速度 每个加速度数值都有正值和负值 其中 设备左侧抬高时 X加速度数值为正 右侧抬高时 X加速度数值为负 手机处于水平位置 下部抬起时Y加速度为正 上部抬起时Y加速度为负 手机处于水平位置 屏幕朝上时Z加速度为正 朝下时Z加速度为负 此外 手机屏幕朝上且水平放置时 Z加速度约为9 8m s2 27 加速传感器控件 28 加速传感器控件 加速传感器控件支持的事件有AccelerationChanged和Shaking AccelerationChanged事件在加速传感器的加速度改变时调用 并根据加速传感器的变化返回X Y Z加速度值 可以在三个方向上确定手机晃动时的加速度大小 Shaking事件在手机摇晃时会被多次调用 29 加速传感器控件 30 方向传感器 方向传感器控件 OrientationSensor 是一个非可视化控件 可用来测定手机的三轴角度的变化 界面编辑器中的方向传感器控件如下图所示 31 方向传感器 将手机正面向上的放置在水平桌面上 沿手机屏幕水平方向 左右 定义为x轴 水平方向 后前 定义为y轴 垂直于手机屏幕的方向 上下 定义为z轴 方向传感器可以反馈三个数据Roll Pitch和Azimuth 方向传感器的数据单位是度 且有正负之分 32 方向传感器 Roll表示手机x轴与水平面的夹角 范围从 90到90 手机处于水平放置时数值为0 向左侧倾斜时数值由0递增到90 向右倾斜时数值由0递减至 90 Pitch表示手机y轴与水平面的夹角 范围从 90到90 手机水平放置时为0 y轴正方向朝下倾斜时数值由0增加到90 y轴正方向朝上倾斜时数值由0递减至 90 Azimuth表示方位 手机水平放置时磁北极和y轴的夹角 范围从0到360 y轴正方向指向正北时为0 指向正东为90 指向正南为180 指向西东为270 33 方向传感器 34 方向传感器 补充说明 图中的坐标轴x y z和传感器中的X Y Z没有任何联系 如上图所示 绿色部分表示一个手机 带有小圈那一头是手机头部传感器中的X 如上图所示 规定X正半轴为北 手机头部指向OF方向 此时X的值为0 如果手机头部指向OG方向 此时X值为90 指向OH方向 X值为180 指向OE X值为270 35 方向传感器 传感器中的Y 现在我们将手机沿着BC轴慢慢向上抬起 即手机头部不动 尾部慢慢向上翘起来 直到AD跑到BC右边并落在XOY平面上 Y的值将从0 180之间变动 如果手机沿着AD轴慢慢向上抬起 即手机尾部不懂 直到BC跑到AD左边并且落在XOY平面上 Y的值将从0 180之间变动 这就是方向传感器中Y的含义 传感器中的Z 现在我们将手机沿着AB轴慢慢向上抬起 即手机左边框不动 右边框慢慢向上翘起来 直到CD跑到AB右边并落在XOY平面上 Z的值将从0 180之间变动 如果手机沿着CD轴慢慢向上抬起 即手机右边框不动 直到AB跑到CD左边并且落在XOY平面上 Z的值将从0 180之间变动 这就是方向传感器中发Z的含义 36 方向传感器 37 方向传感器 Magnitude 表示手机倾斜程度 是一个介于0和1之间的数 Angle 表示倾斜角大小 38 方向传感器 方向传感器只有一个事件OrientationChanged 在手机方向发生变化时产生 返回Roll Pitch和Azimuth数据 即使静止的放置在水平面上 手机方向传感器仍然能够检测到微小的方向变化 所以可以认为OrientationChanged事件是持续发生的事件 事件中的处理过程务必要简单 高效 39 方向传感器应用示例 40 方向传感器应用示例 41 方向传感器应用示例 42 图像精灵 将精灵放置在画布上 精灵就接受触摸或拖动操作 如果设置精灵自身关于运动的一些属性 精灵则可以按照预定的方式移动 为实现一个图片精灵每隔1000毫秒向左侧移动10个像素 则需设置其速度 Speed 属性值为10像素 时间间隔 Interval 属性为1000毫秒 方向 Heading 属性设置为180度 激活 Enabled 属性设置为True 精灵的旋转属性 Rotates 设置为True时 图片会根据精灵的朝向变化进行转动 设置好的参数如图 43 图像精灵 44 图像精灵 45 图像精灵 X和Y是图像精灵在画布上的坐标 X为0时 表示图像精灵已经到达画布的左侧边界 Y为0时 则表示图片精灵已经到达画布的上边界 Enabled属性表示图像精灵是否会被激活 如果精灵与移动相关的属性被设置 同时Enabled为true 则图像精灵会在画布上移动 Visible属性决定了图像精灵在画布上是否可见 属性Heading是图像精灵的移动方向 取值范围是0到360 其中 0表示水平向右 90代表垂直向上 180代表水平向左 270表示垂直向下 46 图像精灵 47 图像精灵 48 图像精灵 精灵控件的方法实现了精灵的移动 反弹和碰撞检测动作 49 ColldingWith方法用来检测图像精灵是否发生碰撞 返回值为true时 说明与指定精灵或画布边缘发生碰撞 返回值为false时 则未发生碰撞 MoveIntoBounds方法是将超出边缘的控件 重新移动至画布边缘范围内 图像精灵 50 碰撞检测 碰撞检测是在精灵的运动过程中 检测到精灵自身边缘与其他精灵或画布边缘接触的技术 在开发游戏过程中经常会被使用到 一般情况下 只有游戏中的物体发生移动后才有必要进行碰撞检测 所以碰撞检测的流程分为三步 更新物体位置 进行碰撞检测 碰撞处理 51 碰撞检测 实现碰撞检测通常包括三个方面的内容 首先 确定检测对象 游戏在运行中会有很多实体对象 在进行碰撞检测时并不需要对所有的实体对象都检测一遍 如静止的宝箱没有必要去检测和另外的宝箱是否发生了碰撞 所以在开始碰撞检测之前 首先要确定碰撞检测的对象是什么 其次 检测是否碰撞 这是检测的核心环节 在这个环节需要综合考虑游戏本身的需求 以及运行平台的性能等问题 合理的选择碰撞检测的算法 最后是处理碰撞 当检测到碰撞发生的时候 就需要根据碰撞的类型进行相应的处理 例如炮弹会在碰到目标后爆炸并给目标带来伤害 52 球体 球体 Ball 是特殊的图像精灵 具有与图像精灵相似的属性 完全相同的事件和方法 不同之处在于球体不能够有自定义的外观 但可以改变球的大小和颜色 53 球体 54 球体 球体与图像精灵具有相同的事件和方法 下面的内容主要介绍与碰撞检测相关的事件和方法 球体中与碰撞检测相关的事件有碰撞事件 不再碰撞事件和触壁事件 碰撞事件 CollidedWith 是当前图像精灵与其它精灵或画布边缘发生碰撞时产生的事件 该事件的参数other是被碰撞精灵的名称 55 球体 不再碰撞事件 NoLongerCollidingWith 是当前精灵与已经产生碰撞的精灵分开时产生的事件 是碰撞事件的对立事件 当两个精灵产生碰撞时 先发生的是碰撞事件 如果两个精灵被弹开 随即便会产生不再碰撞事件 该事件的参数other1是被碰撞精灵的名称 56 球体 触壁事件 EdgeReached 在图像精灵移动到画布边缘时发生 当一个精灵运动到画布边缘时 则会产生触壁事件 如果不对此事件做任何处理 精灵则会移动出画布边界 相反 如果在触壁事件中将精灵的运动方向逆转 则精灵又会重新回到画布中 57 球体 触壁事件的参数edge表示所到达的画布边缘 用数字表示画布不同的边缘 1表示上方 north 2表示右上 northeast 3表示右侧 east 4表示右下 southeast 1表示下方 south 2表示左下方 southwest 3表示左侧 west 4表示左上方 northwest 58 球体 在球体的方法中 最常用的就是Bounce方法 与Edge
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 大型桥梁机械操作工技术考核试卷及答案
- 2025年薄壁不锈钢焊接钢管行业研究报告及未来行业发展趋势预测
- 2025年电动测井绞车行业研究报告及未来行业发展趋势预测
- 化纤组件清理工专业技能考核试卷及答案
- 2025年电子商务行业研究报告及未来行业发展趋势预测
- 2025年USB虚拟示波器行业研究报告及未来行业发展趋势预测
- 保护土地课件
- 墨水墨汁制造工作业指导书
- 焦炉调温工抗压考核试卷及答案
- 保山仁和安全生产培训课件
- T∕CACM 008-2018 中医药单用联合抗生素治疗常见感染性疾病临床实践指南 急性咽炎
- 消防设施操作员自测试题及答案
- 《消防联动控制系统》课件
- 临床患者走失事件的应急预案
- 实验室用电安全
- 私人二手摩托车转让合同范本
- 全员应急教育与培训
- 中华人民共和国工会法课件
- 路灯灯杆项目投资计划书
- 餐饮用餐协议书范本7篇
- 《矿山隐蔽致灾因素普查规范》解读培训
评论
0/150
提交评论