AS3自定义光标不可见

时间:2016-08-16 16:27:10

标签: actionscript-3 flash animate-cc

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

我正在制作一个着色游戏。 CanvPark_mc是Movieclip,其中包含创建画布的详细信息以及所有画笔细节所在的位置。 Huge,Medium和SmallSelected1变量是单击画笔时更改的变量,因此您可以识别它们。

我想根据上次点击的画笔切换光标。这可以通过第一个if参数来完成。 现在,这是我的代码切换,感谢previous question

中@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);
}

此外,如果它们全部减少到只有=,代码将选择列表中的最后一个。 我认为我的代码存在问题,经过数小时的尝试后我无法分辨它是什么。

你们有没有人帮我解决这个问题?

1 个答案:

答案 0 :(得分: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块不在函数内部,因此它没有关联代码togheter。我把它放在里面作为测试,它工作。因为当您单击将鼠标更改为画笔时,Movieclip会开始跟随鼠标。如果您更改为另一个画笔,则动画片段将保留在那里。通过在if中切换它的可见性来解决这个问题。 :)

它现在按预期工作。

希望这有助于某人!