flash cs3 的 *标签申明

在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直接中止外循环。

*检测鼠标离开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会被执行,然后显示鼠标。

posted @ 2008-07-09 12:32  zhangsir  阅读(184)  评论(0编辑  收藏  举报