Flash教程:互动动画

互动动画


交互式动画的最后介绍,这可能是每个人都读过这本书的主要原因。如果你不使用交互运动,只能用interpatch动画。在前一章所提到的,用户交互动画可以归因于用户事件和鼠标事件、键盘事件。接下来,我们学习不同的用户事件及其处理函数。


鼠标事件




交互动画


交互式动画的最后介绍,这可能是每个人都读过这本书的主要原因。如果你不使用交互运动,只能用interpatch动画。在前一章所提到的,用户交互动画可以归因于用户事件和鼠标事件、键盘事件。接下来,我们学习不同的用户事件及其处理函数。


鼠标事件


有一个显着变化,鼠标事件在3,2,电影剪辑将自动添加鼠标监听器。现在,你必须手动为对象添加一个监听器。鼠标事件可以触发时,鼠标指针显示为3,2,无论身在何处鼠标指针、MouseDown或MouseMove执行触发所有电影剪辑。现在的MouseUp和MouseDown事件是在伦和onrelase 2相同。鼠标事件的名称是一个定义好的字符串。正如我们前面提到的,它是更好地使用MouseEvent类的属性来避免输入错误。这里是所有可用的鼠标事件属性的MouseEvent类。
点击
double_click
mouse_down
mouse_move
mouse_out
mouse_over
mouse_up
mouse_wheel
roll_out
roll_over


创建下面的类来测试这个类将输出鼠标上出现的事件的名称。


包{
进口flash.display.sprite;
进口flash.events.mouseevent;
公共类的鼠标事件来延伸雪碧{
公共函数MouseEvents(){
init();
}
私有函数init():无效{
雪碧=雪碧=新雪碧();
addChild(雪碧);
Sprite.graphics.beginFill(0xFF0000);
(0, 0, 50)sprite.graphics.drawcircle;
Sprite.graphics.endFill();
雪碧。x = stage.stagewidth / 2;
雪碧。Y = stage.stageheight / 2;
sprite.addeventlistener(MouseEvent.CLICK,onmouseevent);
sprite.addeventlistener(mouseevent.double_click,onmouseevent);
sprite.addeventlistener(mouseevent.mouse_down,onmouseevent);
sprite.addeventlistener(mouseevent.mouse_move,onmouseevent);
sprite.addeventlistener(mouseevent.mouse_out,onmouseevent);
sprite.addeventlistener(mouseevent.mouse_over,onmouseevent);
sprite.addeventlistener(mouseevent.mouse_up,onmouseevent);
sprite.addeventlistener(mouseevent.mouse_wheel,onmouseevent);
sprite.addeventlistener(mouseevent.roll_out,onmouseevent);
sprite.addeventlistener(mouseevent.roll_over,onmouseevent);
}
公共功能onmouseevent(事件:事件:void){
跟踪(事件类型);
}
}
}


注意,每个事件类型都使用相同的处理函数来输出被触发的事件类型的名称。


鼠标的位置


除了鼠标事件,有文档类来表示当前鼠标的位置非常重要的两个属性:mouseX和老鼠。请注意,影片剪辑的位置和返回的值是对鼠标和电影剪辑的注册点位置的相对位置。例如,有一个电影叫雪碧雪碧,在舞台的100100位置和150250的鼠标的位置,你会得到如下结果:
mouseX是150
他是250
sprite.mousex 50
sprite.mousey 150
请注意鼠标位置与胶片位置之间的相对关系。


键盘事件


键盘事件被划分为另一个区域,如3,例如,在2,电影剪辑自动监听键盘事件,但只有在某些情况下接收这些事件,因此,最好添加一个专门为听众设计的视频剪辑。有时候,电影剪辑接收多个事件,但它是一个键盘事件,这是不对的。在框架2,很大一部分是用于键盘交互,如标签(表)在Flash播放器系统,管理的重点管理,和回车键在文本框和表处理的关键。现在的键盘事件的名称类似于鼠标事件,既是一个良好定义的字符串和移动类的一个属性。只有两种:
key_down
key_up


我们可以在一个特殊的对象上听键盘事件,比如上面的鼠标的例子,为了做到这一点,我们需要设置对象的焦点,这样我们就可以捕获这些事件,可以写如下:


stage.focus =雪碧;


在许多情况下,听键盘事件的焦点是有意义的,它只需要通过键盘直接在舞台上听到:


包{
进口flash.display.sprite;
进口flash.events.keyboardevent;
公共课keyboardevents延伸雪碧{
公共函数KeyboardEvents(){
init();
}
私有函数init():无效{
stage.addeventlistener(keyboardevent.key_down,onkeyboardevent);
stage.addeventlistener(keyboardevent.key_up,onkeyboardevent);
}
公共功能onkeyboardevent(事件:移动):无效{
跟踪(事件类型);
}
}
}


关键代码


通常人们不在乎是否有键按下或没有,但它关心的是按下键。有读取输入信息用键盘事件处理的几种方法。如前所述,一个事件处理程序可以通过一个事件对象触发,包括数据触发事件,两相关属性的键盘事件,事件中涉及的关键:字符编码(字符码)和关键代码(密码)。
字符编码是指通过按键表达真实性。例如,用户按下a键,字符代码a如果用户同时Shift键,然后字符代码A
关键代码是指所表示的键的值。如果用户按下a键,其对应的键码是65,是否其他键被按下,如果按下SHIFT键的同时按下a键,然后你会得到两个键盘事件,第一班(关键代码16)和(代码65),flash.ui.keyboard类也有非字母键的性质,我们不需要背诵的。例如,Keyboard.SHIFT等于16,并按下Shift键,可以进行测试,如果它等于keyboard.shift.the本章最后部分代码:


包{
进口flash.display.sprite;
进口flash.events.keyboardevent;
进口flash.ui.keyboard;
公共类按键精灵{延伸
私人var球:雪碧;
公共函数KeyCodes(){
init();
}
私有函数init():无效{
球=新雪碧();
addChild(球);
Ball.graphics.beginFill(0xFF0000);
(0, 0, 40)ball.graphics.drawcircle;
Ball.graphics.endFill();
球。x = stage.stagewidth / 2;
球。Y = stage.stageheight / 2;
stage.addeventlistener(keyboardevent.key_down,onkeyboardevent);
}
公共功能onkeyboardevent(事件:移动):无效{
开关(事件。键码){
案例Keyboard.UP:
球,y=10;
打破;
案例Keyboard.DOWN:
球,y=10;
打破;
案例Keyboard.LEFT:
球,x=10;
打破;
案例Keyboard.RIGHT:
球,x=10;
打破;
违约:
打破;
}
}
}
}


当我们测试在Flash编辑环境电影,IDE拦截是用来控制IDE本身的关键。Tab键和功能键和键是一个快捷菜单项将不会被接受测试时,这部电影。但是,我们可以选择菜单-> 控制禁用快捷键,解除限制。这样,试验电影像是在浏览器中工作。