我提出了一个新问题,因为这很有意义,因为问题不再相同。
我正在做一个填色游戏。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。我认为我的代码有问题,经过数小时的尝试,我无法判断它是什么。
你们中的任何人都可以帮我解决这个问题吗?