欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

从基础开始深入学Flash AS3教程(5)(译文)

程序员文章站 2023-04-07 19:48:51
12,标签申明 在AS3中引入了标签,新的标签可以和循环体一起使用。例如,现在有两个嵌套的循环体,如果想要在内循环体中break掉外循环,一般使用下面的方法: var i:Number; va... 08-10-06...
12,标签申明
在as3中引入了标签,新的标签可以和循环体一起使用。例如,现在有两个嵌套的循环体,如果想要在内循环体中break掉外循环,一般使用下面的方法:

var i:number;
var j:number;
var exit:boolean = false;
for (i=0; i<10; i ) {
for (j=0; j<10; j ) {
if (i > 3 && j > 3) {
exit = true;
break;
}
}
if (exit) {
break;
}
}
在引入了新的标签以后,可以使用下面的方法从内循环体中直接break掉外循环体:

var i:number;
var j:number;
mainloop: for (i=0; i<10; i ) {
for (j=0; j<10; j ) {
if (i > 3 && j > 3) {
break mainloop;
}
}
}
在第一个循环体上设置了mainloop的标签,因此在循环体内任何地方使用break mainloop直接中止外循环。
13,检测鼠标离开movie的动作
在以前的as版本中,你无法做到检测鼠标是否还在flash movie上。因此影片不能检测到用户是否在关注着当前的movie。另外一个问题是,如果使用了自定义的鼠标样式,在鼠标移出movie后,自定义的鼠标还是继续停留在影片上,而不能正确的显示鼠标当前的位置。
现在,as3允许你通过监听stage的mouseleave行为来捕获鼠标移出movie的动作。mouseleave行为在鼠标移出movie的时候执行。但是现在并没有mouseenter事件,不过你可以通过使用mousemove来设置。
下面的例子中使用了一个方框来作为自定义的鼠标:

package {
import flash.display.sprite;
import flash.events.event;
import flash.events.mouseevent;
import flash.ui.mouse;

public class test extends sprite {

private var cursor:sprite = new sprite();

public function test() {
cursor.graphics.beginfill(0xff);
cursor.graphics.drawrect(0, 0, 25, 25);
addchild(cursor);

stage.addeventlistener(event.mouse_leave, cursorhide);
stage.addeventlistener(mouseevent.mouse_move, cursorfollow);
mouse.hide();
}

public function cursorhide(evt:event):void {
cursor.visible = false;
}

public function cursorfollow(evt:mouseevent):void {
if (!cursor.visible) cursor.visible = true;
cursor.x = stage.mousex;
cursor.y = stage.mousey;
evt.updateafterevent();
}
}
}
当鼠标离开movie的时候,鼠标指针将被隐藏。当鼠标再次移动到movie上的时候,mousemove会被执行,然后显示鼠标。