第七章 用户交互:移动物体.ppt

  1. 1、本文档共33页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
拖拽物体时,只是进行拖拽,而物体的速度向量依然保持离开时的状态,所以当抛落小球时,运动代码会从上一次离开时的位置继续开始运动。 只需要将 vx 和 vy 设置为零,写在拖拽或释放的事件处理中 private function MouseDown(event:MouseEvent):void { vx = 0; vy = 0; stage.addEventListener(MouseEvent.MOUSE_UP,MouseUp); ball.startDrag(); removeEventListener(Event.ENTER_FRAME,EnterFrame); } 效果查看 结合速度向量,加速度和反弹,实现了完整的拖拽与抛落的特征 当抛落小球时,它是垂直下落的—— x 轴上没有运动。虽说这个动作没有问题,但是有些单调。如果可以将小球抛出去,并让它在抛出的方向运动,那将是个很棒的交互运动效果。 如何实现呢? 老位置 新位置 新位置.x=老位置.x+vx 新位置.y=老位置.y+vy vx=新位置.x-老位置.x vy=新位置.y-老位置.y 记录老位置 到达新位置后计算vx,vy 是否继续拖拽移动? 小球开始自由运动 可以建立enterFrame侦听事件来处理计算运动向量vx和vy的过程 如何实现? private var oldX:Number; private var oldY:Number; private function MouseDown(event:MouseEvent):void { oldX = ball.x; oldY = ball.y; stage.addEventListener(MouseEvent.MOUSE_UP, MouseUp); ball.startDrag(); removeEventListener(Event.ENTER_FRAME, EnterFrame); addEventListener(Event.ENTER_FRAME, trackVelocity); } private function trackVelocity(event:Event):void { vx = ball.x - oldX; vy = ball.y - oldY; oldX = ball.x; oldY = ball.y; } 记录每一帧移动的位置,为下一帧计算速度做准备 private function MouseUp(event:MouseEvent):void { …… removeEventListener(Event.ENTER_FRAME, trackVelocity); } 查看效果 这一章涉及了一些非常有价值的内容,并进一步深入了交互。到现在为止,学习了拖动任何物体、使它下落和将它抛出去。?通过这些案例的研究学习,可以用来完善一个专业的交互作品的小细节。 最初的目标就是要制作出流畅的交互动画,多数都是通过鼠标进行交互的。在前面的章节中已经学习过如何用键盘控制飞船的方向等 本章将学会如何处理拖拽,抛落及投掷。但首先要从基本的鼠标按下与释放说起 鼠标的运动可以归结为点击与移动 本章就围绕下面三件事展开:鼠标按下(mouseDown),鼠标弹起(mouseUp),以及发生在它们中间的移动(mouseMove) 在 AS 3 中可以使用影片剪辑或 Sprite 影片或嵌套影片进行侦听 private function init():void { //舞台上显示球 …… ball.addEventListener(MouseEvent.MOUSE_DOWN,onMouseDownBall); ball.addEventListener(MouseEvent.MOUSE_UP,onMouseUpBall); ball.addEventListener(MouseEvent.MOUSE_MOVE,onMouseMoveBall); stage.addEventListener(MouseEvent.MOUSE_DOWN,onMouseDownStage); stage.addEventListener(MouseEvent.MOUSE_UP,onMouseUpStage); stage.addEventListener(MouseEvent.MOUSE_MOVE,onMouseMoveStage); } private function 对应的鼠标事件过程(event:MouseEvent

文档评论(0)

baa89089 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档