鼠标移动事件没有调度



脚本问题是,每个影片剪辑调度向下和向上鼠标事件,但鼠标移动事件不是由一些影片剪辑调度,这是一个意外的行为,而我已经跟踪了向下事件,它成功地跟踪了每个对象

也推荐你对我的代码的反馈,谢谢。

    private function loadPurchasedClip(){
            var decorationItem:String;
            var lastItemIndex:uint = this.getChildIndex(tree1);
            var item:Sprite;
            for(var a in purchasedItems){
                for(var b in purchasedItems[a]){
                if(purchasedItems[a][b].item=='shed'){
                    item = new shed();
                } else {
                    var ClassDefinition:Class = loadedDecorationItem.purchaseItem(purchasedItems[a][b].item) as Class;

                    item = new ClassDefinition();
                }
                item.x = purchasedItems[a][b].posX;
                item.y = purchasedItems[a][b].posY;

                item.addEventListener(MouseEvent.MOUSE_DOWN,function(e:MouseEvent){
                        Mouse.cursor = "hand";
                        e.target.startDrag(false);
                        dusbin.visible = true;
                    item.addEventListener(MouseEvent.MOUSE_MOVE,trashMe);
                });
                item.addEventListener(MouseEvent.MOUSE_UP,function(e:MouseEvent){
                    Mouse.cursor = "auto";
                    e.target.stopDrag();
                    externalPhpCall(e);
                    dusbin.visible = false;
                    if(trashClip){
                        removeChild(trashClip);
                        trashClip = null;
                    }
                });
                item.mouseChildren = false;

                // if item is fence or flowers then move them behind the tree
                if(
                    String(purchasedItems[a][b].item).indexOf('fence')!=-1
                    ||
                    String(purchasedItems[a][b].item).indexOf('flower')!=-1
                ){
                    addChildAt(item,lastItemIndex);
                    lastItemIndex++;
                } else {
                    addChildAt(item,this.numChildren-2);
                }
                purchasedNameAr[getChildIndex(item)] = purchasedItems[a][b].item;
            }
        }

不能确定,但我认为这可能是你期待一个剪辑继续调度MouseEvent。MOUSE_MOVE事件,即使一旦鼠标离开剪辑-这不会发生,只有当本地鼠标指针坐标(即你的clip . mousex/mouseY)与剪辑本身的图形相交时,它才会触发-即使在拖动剪辑时,也不能保证它会调度一个MOVE事件。

让我们假设你的剪辑都在根目录上,这意味着你可以访问'stage' -你可以这样做:

替换:

item.addEventListener(MouseEvent.MOUSE_MOVE,mouseMove);

:

stage.addEventListener(MouseEvent.MOUSE_MOVE,mouseMove);

…但是你应该记得在必要的时候删除这个事件(再次使用stage,以防鼠标在剪辑上没有释放):

 stage.addEventListener(MouseEvent.MOUSE_UP,endMove);

//Don't use anon function as won't have stage reference:
function endMove(e:MouseEvent):void {
        //The rest of your code, then:
        stage.removeEventListener(MouseEvent.MOUSE_MOVE,mouseMove);
    }
        private  function loadPurchasedClip(){
        var decorationItem:String;
        var lastItemIndex:uint = this.getChildIndex(tree1);
        var item:Sprite;
        var Move:Boolean
        for(var a in purchasedItems){
            for(var b in purchasedItems[a]){
            if(purchasedItems[a][b].item=='shed'){
                item = new shed();
            } else {
                var ClassDefinition:Class = loadedDecorationItem.purchaseItem(purchasedItems[a][b].item) as Class;
                item = new ClassDefinition();
            }
            item.x = purchasedItems[a][b].posX;
            item.y = purchasedItems[a][b].posY;
            item.addEventListener(e:Event.ENTER_FRAME, onEnterFrame);
            item.addEventListener(MouseEvent.MOUSE_DOWN,function(e:MouseEvent){
                    Mouse.cursor = "hand";
                    e.target.startDrag(false);
                    Move = true
                    dusbin.visible = true;
            });
            item.addEventListener(MouseEvent.MOUSE_UP,function(e:MouseEvent){
                Mouse.cursor = "auto";
                e.target.stopDrag();
                externalPhpCall(e);
                dusbin.visible = false;
                if(trashClip){
                    removeChild(trashClip);
                    trashClip = null;
                }
            });
            item.mouseChildren = false;
            // if item is fence or flowers then move them behind the tree
            if(
                String(purchasedItems[a][b].item).indexOf('fence')!=-1
                ||
                String(purchasedItems[a][b].item).indexOf('flower')!=-1
            ){
                addChildAt(item,lastItemIndex);
                lastItemIndex++;
            } else {
                addChildAt(item,this.numChildren-2);
            }
            purchasedNameAr[getChildIndex(item)] = purchasedItems[a][b].item;
        }
        function onEnterFrame(e:Event):void{
         if(Move){
        // what ever here
        {
    }

最新更新