快精灵印艺坊 您身边的文印专家
广州名片 深圳名片 会员卡 贵宾卡 印刷 设计教程
产品展示 在线订购 会员中心 产品模板 设计指南 在线编辑
 首页 名片设计   CorelDRAW   Illustrator   AuotoCAD   Painter   其他软件   Photoshop   Fireworks   Flash  

 » 彩色名片
 » PVC卡
 » 彩色磁性卡
 » 彩页/画册
 » 个性印务
 » 彩色不干胶
 » 明信片
   » 明信片
   » 彩色书签
   » 门挂
 » 其他产品与服务
   » 创业锦囊
   » 办公用品
     » 信封、信纸
     » 便签纸、斜面纸砖
     » 无碳复印纸
   » 海报
   » 大篇幅印刷
     » KT板
     » 海报
     » 横幅

Flash AS游戏教程:人物的控制

  效果如下:(用上下左右控制走动,遇到墙会停下来,按住CTRL会跑。)

« Full Screen »

点击这里下载源文件

AS如下:


var walkspeed = 1.5;//走的速度
var runspeed = 3;//跑的速度
var numOfMask = 5;//Mask的数量
block_mc._visible = false;//挡着角色运动的MC看不见
for (i=numOfMask; i>0; i--) {
eval("mask" add i)._visible = false;//让所有MASK看不见
}
onEnterFrame = function () {
Key.isDown(Key.CONTROL) ? speed=runspeed : speed=walkspeed;//假如按下CTRL,就跑
if (Key.isDown(Key.LEFT)) {//假如按下左
Key.isDown(Key.UP) || Key.isDown(Key.DOWN) ? (character_mc._x -= 0.707*speed, xy=false) : (character_mc._x -= speed, xy=true);//同时又按下了上或者下,那就不要移动这么大.也就是说斜走的时候,角色在X轴或者Y轴上移动要小一点.下同
}
if (Key.isDown(Key.RIGHT)) {
Key.isDown(Key.UP) || Key.isDown(Key.DOWN) ? (character_mc._x += 0.707*speed, xy=false) : (character_mc._x += speed, xy=true);
}
if (Key.isDown(Key.UP)) {
Key.isDown(Key.LEFT) || Key.isDown(Key.RIGHT) ? (character_mc._y -= 0.707*speed, xy=false) : (character_mc._y -= speed, xy=true);
}
if (Key.isDown(Key.DOWN)) {
Key.isDown(Key.LEFT) || Key.isDown(Key.RIGHT) ? (character_mc._y += 0.707*speed, xy=false) : (character_mc._y += speed, xy=true);
}
for (i=numOfMask; i>0; i--) {
if (eval("mask" add i).hitTest(character_mc) && eval("mask" add i)._y>character_mc._y) {//假如角色和MASK相碰,而且MASK在角色下边的话,也就是说假如MASK应该挡着角色的话
bg_mc.setMask(eval("mask" add i));//那就用这个MASK挡着角色
break;//后边的就不用想了,跳出IF
}
}
shedowLx = character_mc._x-character_mc.shedow_mc._width/2;//得到角色影子最左边的X座标,后边做HITTEST时要用
shedowRx = character_mc._x+character_mc.shedow_mc._width/2;//影子最右边的X座标
shedowUy = character_mc._y-character_mc.shedow_mc._height/2;//影子最上边的Y座标
shedowDy = character_mc._y+character_mc.shedow_mc._height/2;//影子最下边的Y座标
shedowx = character_mc._x;//影子中央X座标
shedowy = character_mc._y;//影子中央Y座标
xy ? a=1 : a=0.8;//假如刚才是斜着走的话,反弹的速度A就是0.8,否则是1
block_mc.hitTest(shedowLx, shedowy, true) ? character_mc._x += a*speed : a=a;//假如影子的左边遇到不能走的地方,就向右弹出一个距离,距离的大小由上一句控制,下同
block_mc.hitTest(shedowRx, shedowy, true) ? character_mc._x -= a*speed : a=a;
block_mc.hitTest(shedowx, shedowUy, true) ? character_mc._y += a*speed : a=a;
block_mc.hitTest(shedowx, shedowDy, true) ? character_mc._y -= a*speed : a=a;
};

返回类别: Flash教程
上一教程: 公有成员和私有成员
下一教程: Flash制作精美三维方格弹跳动画

您可以阅读与"Flash AS游戏教程:人物的控制"相关的教程:
· Flash AS游戏教程:人物及控制
· Flash MX 2004实例制作视频教程:七巧板互动游戏(4)
· Flash游戏制作:贪食蛇经典游戏新手教程
· FlashMX 视频教程(46)-控制动画的开始和停止
· flash人物180°转身动作教程
    微笑服务 优质保证 索取样品