网站大量收购独家精品文档,联系QQ:2885784924

8章-按键和移动.doc

  1. 1、本文档共5页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
8章-按键和移动

按键和移动 在这一章中我们将用四个方向键控制英雄的移动。在移动过程中,他会面朝移动的方向,并且会显示走动的动画。一旦他停止移动,动画也会停止。试试这个:因为没有碰撞检测,所以英雄可以走出舞台外面,不过不要担心这个,我们以后会解决这个问题。 首先,让我们完善英雄角色。建立3个新的mc。我们需要一个mc表示角色向左走(或者向右,我选择了左),一个表示向上走,最后一个朝下走。在这些mc中,做角色走动的动画。 这些mc里不需要写代码。 现在,编辑char影片夹子(mc),在时间线上创建5个关键帧: 在关键帧1放置char_up影片夹子,关键帧2放置char_left影片夹子,关键帧4放char_right,关键帧5放char_down。许多时候向左移动和向右移动只是简单的水平翻转关系,所以你可以用一个mc表示这两个方向的动画。现在确认一下,这几帧动画mc的实例名称都是char,检查每一帧。他们都叫char?是的,不用担心。如果你不理解为什么是这样的排列方式,我们将会在代码的部分讲解这个问题。 ok,该写点代码了。 代码 首先,移动需要有个速度,所以先给英雄添加一个速度属性: char={xtile:2, ytile:1, speed:4}; 速度表示英雄每一步移动的象素值,更大的值意味着更快的移动,很小的值将会使英雄像个蜗牛。在这里使用整数是个好习惯,否则你会得到怪异的结果,实际上10象素和10.056873象素之间也看不出什么区别。 你还记得吧,我们创建了_root.char这个对象来保存英雄的信息(如果忘记了,请回头看看)?并且我们把char影片夹子放在tiles影片夹子里面了。为了让我们的英雄醒来并开始移动,我们需要添加两个函数来检查按键和控制mc。拖一个空的影片夹子empty到舞台上。你可以把它放到可视区域外,他只是用来放些代码,所以在哪里都无所谓。在这个mc上面写这些代码(选中mc,然后打开代码面板): onClipEvent (enterFrame) { ??? _root.detectKeys(); } 你可以看到我们在每一帧调用detectKeys这个函数。现在写这个函数: function detectKeys() { ?var ob = _root.char; ?var keyPressed = false; ?if (Key.isDown(Key.RIGHT)) { ??keyPressed=_root.moveChar(ob, 1, 0); ?} else if (Key.isDown(Key.LEFT)) { ?? keyPressed=_root.moveChar(ob, -1, 0); ?} else if (Key.isDown(Key.UP)) { ??keyPressed=_root.moveChar(ob, 0, -1); ?} else if (Key.isDown(Key.DOWN)) { ??keyPressed=_root.moveChar(ob, 0, 1); ?} ??? if (!keyPressed) { ??ob.clip.char.gotoAndStop(1); ??? } else { ??ob.clip.char.play(); ??? } } 首先我们定义了两个变量:ob 和 keyPressed。设置ob变量指向_root.char (记住,那是我们保存英雄所有信息的对象),设置变量keyPressed为false。keyPressed变量用来表示是否有四个方向键之一被按下去。 下面有4个相似的 if 判断,每个 if 都检测相应的键是不是被按下了。如果键被按下,他们就这样调用另外的一个函数moveCha: keyPressed=_root.moveChar(ob,1,0); 这一行调用moveChar函数的时候带了3个参数。第一个参数就是ob变量,就是我们的英雄对象。后两个的取值我们总是让他们为-1,1或者0。这些数字决定对象移动的方向,第二个参数表示水平移动的方向(-1:左;1:右),第三个参数代表垂直移动的方向(-1:上;1:下)。最后我们把moveChar的返回值交给变量keyPressed。 你在后面就可以看到moveChar函数总是返回true, 所以任何方向键被按下后,变量keyPressed值都是true。 现在来看看第二个函数moveChar: function moveChar(ob, dirx, diry) { ?ob.x += dirx*ob.speed; ?ob.y += diry*ob.speed; ?ob.clip.gotoAndStop(dirx+diry*2+3); ?ob.clip._x = ob.x; ?ob.clip._y =

文档评论(0)

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

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

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档