0

我提出了一个新问题,因为这很有意义,因为问题不再相同。

我正在做一个填色游戏。CanvPark_mc 是包含创建画布的详细信息以及所有画笔详细信息所在的影片剪辑。Huge、Medium 和 SmallSelected1 变量是在您单击画笔时更改的变量,因此您可以识别它们。

我想根据上次单击的画笔切换光标。这可以通过第一个 if 参数来完成。现在,这是我的切换代码,感谢@NBooo 在上一个问题中的帮助

var cursor_mc: MovieClip = new MovieClip();

if (CanvPark_mc.HugeSelected1 == true) {
    cursor_mc = cursor1_mc; //Big Cursor
    removeChild(cursor_mc);
}

if (CanvPark_mc.MediumSelected1 == true) {
    cursor_mc = cursor2_mc; //Medium Cursor
    removeChild(cursor_mc);
}

if (CanvPark_mc.SmallSelected1 == true) {
    cursor_mc = cursor3_mc; //Small Cursor
    removeChild(cursor_mc);
}



stage.addEventListener(MouseEvent.MOUSE_MOVE, moveCursor);

function moveCursor(myEvent: MouseEvent) {
    if (CanvPark_mc.SmallSelected1 == false && CanvPark_mc.MediumSelected1 == false && CanvPark_mc.HugeSelected1 == false) {
        Mouse.cursor = "auto";
    } else if (cursor_mc){
        addChild(cursor_mc);
        setChildIndex(cursor_mc, this.numChildren - 1);
        cursor_mc.x = stage.mouseX;
        cursor_mc.y = stage.mouseY;
        cursor_mc.mouseChildren = cursor_mc.mouseEnabled = false;
        Mouse.hide();

    }

}

不幸的是,这段代码的问题在于,每当我点击上述按钮时,光标就会消失。它不会更改为我之前制作的任何 MovieClips。

请注意,if 块中的 removeChild 是希望在过去单击它们后删除屏幕上以前的 cursor_mc 实例。

在测试中,它只会改变,在第一个 if 块中,其中一个参数有一个 = 而不是 ==。

例子 :

if (CanvPark_mc.HugeSelected1 == true) {
    cursor_mc = cursor1_mc; // Big Cursor
    removeChild(cursor_mc);
}

if (CanvPark_mc.MediumSelected1 == true) {
    cursor_mc = cursor2_mc; //Medium Cursor
    removeChild(cursor_mc);
}

if (CanvPark_mc.SmallSelected1 = true) {
    cursor_mc = cursor3_mc; //This is the one he'll run, showing the smallest cursor
    removeChild(cursor_mc);
}

此外,如果它们都简化为 =,则代码将选择列表中的最后一个 if。我认为我的代码有问题,经过数小时的尝试,我无法判断它是什么。

你们中的任何人都可以帮我解决这个问题吗?

4

1 回答 1

0

我找到了自己问题的答案,所以我将发布代码以帮助其他人。

var cursor_mc: MovieClip = new MovieClip();

    stage.addEventListener(MouseEvent.MOUSE_MOVE, moveCursor);

    function moveCursor(myEvent: MouseEvent) {

    if (CanvPark_mc.HugeSelected1 == true) {

        cursor_mc = cursor1_mc;
        cursor1_mc.visible = true;
        cursor2_mc.visible = false;
        cursor3_mc.visible = false;
    }

    if (CanvPark_mc.MediumSelected1 == true) {

        cursor_mc = cursor2_mc;
        cursor1_mc.visible = false;
        cursor2_mc.visible = true;
        cursor3_mc.visible = false;
    }

    if (CanvPark_mc.SmallSelected1 == true) {

        cursor_mc = cursor3_mc;
        cursor1_mc.visible = false;
        cursor2_mc.visible = false;
        cursor3_mc.visible = true;
    }
    if (CanvPark_mc.SmallSelected1 == false && CanvPark_mc.MediumSelected1 == false && CanvPark_mc.HugeSelected1 == false) {
    Mouse.cursor = "auto";

    } else if (cursor_mc) {

        addChild(cursor_mc);
        setChildIndex(cursor_mc, this.numChildren - 1);
        cursor_mc.x = stage.mouseX;
        cursor_mc.y = stage.mouseY;
        cursor_mc.mouseChildren = cursor_mc.mouseEnabled = false;
        Mouse.hide();

    }

}

if 块不在函数内部,因此它没有将代码关联起来。我把它放在里面作为测试,它起作用了。因为当您单击以将鼠标更改为画笔时,Movieclip 开始跟随您的鼠标。如果您更改为另一个画笔,则影片剪辑将保留在那里。这可以通过在 if 中切换它的可见性来解决。:)

它现在按预期工作。

希望这对某人有帮助!

于 2016-08-17T08:33:40.133 回答