一则响应鼠标打击的趣味动作实例
作者 佚名技术
来源 服务器技术
浏览
发布时间 2012-07-09
的速度从小人的左边腿部划过的Movie Clip效果。在第430帧至第439帧之间制作出当鼠标以比较慢的速度从小人的右边腿部划过的Movie Clip效果。在第446帧至第463帧之间制作出当鼠标以比较快的速度从小人的右边腿部划过的Movie Clip效果。
8、至此,所需要的Movie Clip就制作完成。此时帧内的层结构应该如图2所示。注意,这是最花时间的一个步骤,也是对最终效果影响最大的一步,值得用心去做。如果想要更好的效果,可以在适当的地方插入声音效果。
图2
9、按“Ctrl + F8”新建一个Movie Clip,用绘图工具在这个Clip用画一个半圆。
10、回到影片的主场景中,在用鼠标右键点击图层名,插入4个图层,分别命名为“Action”,“Hit_Area”,“Motion_All”,“label”。
11、在“Motion_All”层的第2帧插入关键帧,在第7帧插入帧,将第1至8步所制作的Movie Clip从图库拖到场景中,在属性面板上设置实例名为“Motion_All”。
12、在“Hit_Area”层的第2帧插入关键帧,在第7帧插入帧,将第9步所制作的Movie Clip从图库拖六次到场景中,拼成一个图形如图3所示,并分别在属性面板上设置实例名为“Area_Head_Left”、“Area_Arm_Left”、“Area_Leg_Left”、“Area_Head_Right”、“Area_Arm_Right”、“Area_Leg_Right”。
图3
13、在“Action”层的第2帧插入关键帧,在第7帧插入帧,此时主场景中的层应该如图4所示。点击“Action”层的第2帧,在此帧的Action Script面板上面添加语句下所示。 图4 stop(); VEL_SAL_LIMIT = 70;????????????????? // 注释1 VEL_HIT_LIMIT = 180;????????????????? DIVIDE_NUM_STRIKE = 30;???????????? DIVIDE_NUM_HIT = 24;???????????????? DIVIDE_NUM_SAL = 12;??????????????? Area_Head_Left._visible = false;??????????? // 注释2 Area_Head_Right._visible = false; Area_Arm_Left._visible = false; Area_Arm_Right._visible = false; Area_Leg_Left._visible = false; Area_Leg_Right._visible = false; cursor_old_x = 0.0;?????????????????????? // 注释3 cursor_old_y = 0.0; cursor_new_x = 0.0; cursor_new_y = 0.0; cursor_velocity = 0.0; HitArea = ""; divide_num = 1; xpoint_array = new Array(); ypoint_array = new Array(); init = false; function CalVelocity() {????????????????? // 注释4 ?cursor_old_x = cursor_new_x; ?cursor_old_y = cursor_new_y; ?cursor_new_x = int(this._xmouse); ?cursor_new_y = int(this._ymouse); ?cursor_velocity = int(Math.sqrt(Math.pow(cursor_new_x-cursor_old_x, 2)+Math.pow(cursor_new_y-cursor_old_y, 2))); } function CalPoints() {???????????????????????????? // 注释5 ?if (cursor_velocity>VEL_HIT_LIMIT) { ??divide_num = DIVIDE_NUM_STRIKE; ?} else if (cursor_velocity>VEL_SAL_LIMIT) { ??divide_num = DIVIDE_NUM_HIT; ?} else { ??divide_num = DIVIDE_NUM_SAL; ?} ?xdivide = (cursor_new_x-cursor_old_x)/divide_num; ?ydivide = (cursor_new_y-cursor_old_y)/divide_num; ?for (i=0; i function HitCheck() {??????????????????????????????? // 注释6 ?for (i=0; icursor_old_x) { ?????HitArea = "Area_Head_Left"; ?????break; ????} ???} ??} else if (Area_Head_Right.hitTest(xpoint_array[i], ypoint_array[i], true)) { ???if (!Area_Head_Right.hitTest(cursor_old_x, cursor_old_y, true)) { ????if (xpoint_array[i]cursor_old_x) { ?????HitArea = "Area_Arm_Left"; ?????break; ????} ???} ??} else if (Area_Arm_Right.hitTest(xpoint_array[i], ypoint_array[i], true)) { ???if (!Area_Arm_Right.hitTest(cursor_old_x, cur |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |
你可能对下面的文章感兴趣
关于一则响应鼠标打击的趣味动作实例的所有评论