快速业务通道

一则响应鼠标打击的趣味动作实例

作者 佚名技术 来源 服务器技术 浏览 发布时间 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 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号