flash as 教程交相互作用画

更新时间:15-10-27 19:51 热度:422
 

交相互作用画
最终绍介一下子交相互作用画,这或许是大家读这本书的主要端由。假如不运用交互运动,那末只运用补间动画不就行了。在面前一章简单地提到过,用户交相互作用画基于用户事情,总的来说可以归结为鼠标事情和键盘事情,下边就来学习不一样的用户事情及其处置函数。
鼠标事情
as 3 中鼠标事情发生了显著的变动。在 as 2 中,影片儿剪接会半自动添加鼠标侦听器。如今,要手动地为对象添加侦听器。在 as 3 中鼠标指针通过显露对象时能力被触动引发鼠标事情。在 as 2 中,不管鼠标指针何在,只要执行 mousedown 或 mousemove 便会被触动引发全部的影片儿剪接。而如今, mouseup 和 mousedown 事情与 as 2 中的 onpress 和 onrelase 等同。鼠标事情的名字是定义好的字符串,像我们之前所提到的,最好运用 mouseevent 类的属性,以防止输入不正确,下边是 mouseevent 类中全部可用的鼠标事情属性:
click
double_click
mouse_down
mouse_move
mouse_out
mouse_over
mouse_up
mouse_wheel
roll_out
roll_over
开创下边这个类,来测试一下子,这个类会输动身生在 sprite 影片儿上的鼠标事情名字。
package {
import flash.display.sprite;
import flash.events.mouseevent;
public class mouseevents extends sprite {
public function mouseevents() {
init();
}
private function init():void {
var sprite:sprite = new sprite();
addchild(sprite);
sprite.graphics.beginfill(0xff0000);
sprite.graphics.drawcircle(0, 0, 50);
sprite.graphics.endfill();
sprite.x = stage.stagewidth / 2;
sprite.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);
}
public function onmouseevent(event:mouseevent):void {
trace(event.type);
}
}
}
请注意,每个事情类型都运用了同一个处置函数,输出所被触动引发的事情类型的名字。
鼠标位置
除开鼠标事情外,对于文档类还有两个十分关紧属性用于表达鼠标现时的位置:mousex 和 mousey。请注意,影片儿剪接的位置,回返的值是鼠标的位置与影片儿剪接的注册点的相对位置。例如,有一个名为 sprite 的 sprite 影片儿,在戏台的 100,100 位置,而鼠标的位置在 150,250,你会获得如下所述最后结果:
mousex 为 150
mousey 为 250
sprite.mousex 为 50
sprite.mousey 为 150
请注意鼠标位置与影片儿位置的相对关系。
键盘事情
键盘事情已被 as 3 区分清楚到另一个地区范围中。例如,在 as 2 中,影片儿剪接会半自动侦听键盘事情,但只在某种事情状况下才收缴这些个事情。所以,最好增加一个专门用来做侦听器的影片儿剪接,有时候,影片儿剪接收缴了多个事情但被看作是一个键盘事情,这么就错误了。在 as 2 的组成框架中,非常大部一小批都是为键盘交互服务的,譬如 flash player 整体体系中的:tab(table)管理,焦点(focus)管理及在文本框中对于 enter 键与 table 键的处置等。如今好了,键盘事情的名字与鼠标事情的相仿,都是定义好的字符串,也可为 keyboardevent 类的属性。只有两种:
key_down
key_up
我们可以在一个特别的对象上侦听键盘事情,就像上头那一个鼠标侦听的例子同样。为了成功实现这个功能,我们需求设置对象的焦点,以便能够抓住这些个事情,可以这么写:
stage.focus = sprite;
在众多事情状况下,侦听键盘事情是否有焦点很有意义,成功实现它只需直接对戏台施行键盘侦听。下边看一个举出例子:
package {
import flash.display.sprite;
import flash.events.keyboardevent;
public class keyboardevents extends sprite {
public function keyboardevents() {
init();
}
private function init():void {
stage.addeventlistener(keyboardevent.key_down,onkeyboardevent);
stage.addeventlistener(keyboardevent.key_up,onkeyboardevent);
}
public function onkeyboardevent(event:keyboardevent):void {
trace(event.type);
}
}
}
键码
一般许多人并不关切一个键是否被按下,而是关切按下的是啥子键。运用键盘事情处置有几种办法可以读取输入的信息。面前说到,一个事情处置手续可以由一个事情对象来被触动引发,该对象涵盖被触动引发这个事情的数值。在键盘事情中有两个有关的属性,事情所牵涉到的键:字符码(charcode)和键码(keycode)。
字符码指按下的键所表达的真正字符。例如,用户按下”a”键,字符码就是”a”,假如用户同时又按着 shift 键,这么字符码就是”a”。
键码指按钮所代表的数字。假如用户按下”a”键,它所对应的键码为 65,不管是否按着其他键。假如先按下shift键后按下“a”键,那末会取得两个键盘事情,先是shift(键码 16)后是 a(键码 65)。 flash.ui.keyboard 大致相同样也有一点属性是针对非字母键的,我们不必把他们背下来。例如: keyboard.shift 等于16,当 shift 键按下后,可以测试其是否等于 keyboard.shift。请本章的最终一段代码:
package {
import flash.display.sprite;
import flash.events.keyboardevent;
import flash.ui.keyboard;
public class keycodes extends sprite {
private var ball:sprite;
public function keycodes() {
init();
}
private function init():void {
ball = new sprite();
addchild(ball);
ball.graphics.beginfill(0xff0000);
ball.graphics.drawcircle(0, 0, 40);
ball.graphics.endfill();
ball.x = stage.stagewidth / 2;
ball.y = stage.stageheight / 2;
stage.addeventlistener(keyboardevent.key_down,onkeyboardevent);
}
public function onkeyboardevent(event:keyboardevent):void {
switch (event.keycode) {
case keyboard.up :
ball.y -= 10;
break;
case keyboard.down :
ball.y = 10;
break;
case keyboard.left :
ball.x -= 10;
break;
case keyboard.right :
ball.x = 10;
break;
default :
break;
}
}
}
}
当我们在 flash 编辑背景下测试影片儿时,ide会中途阻挡用于扼制 ide 自身的键。tab 键和全部功能键以及作为敏捷点菜单项的键,在测试影片儿时不会收缴到。然而,我们可以在点菜单中挑选“扼制” -> “禁用敏捷键”,来去掉消除限止。这么一来,测试的影片儿就像在浏览器中办公同样了。