Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Actionscript 3 ActionScript 3鼠标移动事件未调度_Actionscript 3_Mouseevent - Fatal编程技术网

Actionscript 3 ActionScript 3鼠标移动事件未调度

Actionscript 3 ActionScript 3鼠标移动事件未调度,actionscript-3,mouseevent,Actionscript 3,Mouseevent,脚本问题是,每个movieclip都调度向下和向上鼠标事件,但鼠标移动事件不是由某些movieclip调度的,这是一种意外行为,因为我跟踪了向下事件,它成功地跟踪了每个对象 还推荐您对我的代码的反馈,谢谢 private function loadPurchasedClip(){ var decorationItem:String; var lastItemIndex:uint = this.getChildIndex(tree1);

脚本问题是,每个movieclip都调度向下和向上鼠标事件,但鼠标移动事件不是由某些movieclip调度的,这是一种意外行为,因为我跟踪了向下事件,它成功地跟踪了每个对象

还推荐您对我的代码的反馈,谢谢

    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\u MOVE事件-这不会发生,只有在本地鼠标指针协调时才会发生(即yourClip.mouseX/mouseY)与剪辑本身的图形相交,它将触发-即使在拖动剪辑时,也不能保证它将发送移动事件

假设您的剪辑都位于根目录下,这意味着您可以访问“stage”-您可以这样做:

替换:

item.addEventListener(MouseEvent.MOUSE_MOVE,mouseMove);
与:

…但您应该记住在必要时删除该事件(再次使用stage,以防鼠标未在剪辑上释放):


不能确定,但我认为可能是因为您希望一个剪辑在鼠标离开剪辑后继续发送MouseEvent.MOUSE\u MOVE事件-这不会发生,只有在本地鼠标指针协调时才会发生(即yourClip.mouseX/mouseY)与剪辑本身的图形相交,它将触发-即使在拖动剪辑时,也不能保证它将发送移动事件

假设您的剪辑都位于根目录下,这意味着您可以访问“stage”-您可以这样做:

替换:

item.addEventListener(MouseEvent.MOUSE_MOVE,mouseMove);
与:

…但您应该记住在必要时删除该事件(再次使用stage,以防鼠标未在剪辑上释放):


你的鼠标事件在mouseMove函数中?注册鼠标移动事件时尝试使用e.target not item。感谢Lukasz'Severiaan'Grelayou你的鼠标事件在mouseMove函数中?注册鼠标移动事件时尝试使用e.target not item。感谢Lukasz'Severiaan'GrelaThanks@MickMalone1983,但就我而言,我在鼠标按下时移动剪辑,并使用鼠标向上停止移动。移动时,我需要剪辑的x和y值。但是没有运气:(你可以使用mouseMove函数来获取这些,它将发送一个MouseEvent,你可以从中获取e.target.x/yThanks@MickMalone1983,但在我的情况下,我在鼠标下降时移动剪辑,并使用鼠标上升停止移动。移动时,我需要剪辑的x和y值。但是没有运气:(您可以使用mouseMove函数来获取这些,它将被发送一个MouseEvent,您可以从中获取e.target.x/yThanks friend,但是e:Event没有任何类似于e.stageXob的属性。显然,您可能需要更好地编写它,但它确实可以工作,因为我在3d应用程序中使用此方法谢谢朋友,但是e:Event没有任何类似于e.stageXob的属性显然,您可能需要更好地编写它,但它确实有效,因为我在3d应用程序中使用了这种方法
stage.addEventListener(MouseEvent.MOUSE_MOVE,mouseMove);
 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);
    }