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 中的可见性来解决的。 :)
现在一切正常。
希望这对某人有所帮助!
我提出了一个新问题,因为它有意义,因为问题不再相同了。
我正在制作填色游戏。 CanvPark_mc 是包含创建 canvas 细节的 Movieclip 以及所有画笔细节所在的位置。 Huge、Medium 和 SmallSelected1 变量是在您单击画笔时发生变化的变量,因此您可以识别它们。
我想根据上次单击的画笔切换光标。这可以通过第一个 if 参数来完成。
现在,这是我要切换的代码,感谢
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 中的可见性来解决的。 :)
现在一切正常。
希望这对某人有所帮助!