AS3 自定义游标不可见

AS3 Custom Cursors Invisible

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

我正在制作填色游戏。 CanvPark_mc 是包含创建 canvas 细节的 Movieclip 以及所有画笔细节所在的位置。 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();

    }

}

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

请注意,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。 我认为我的代码有问题,经过数小时的尝试后我无法确定是什么问题。

你们能帮我解决这个问题吗?

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

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 中的可见性来解决的。 :)

现在一切正常。

希望这对某人有所帮助!