我提出了一个新问题,因为它有意义,因为问题不再一样了。AS3自定义游标隐形
我正在着色游戏。 CanvPark_mc是具有创建画布和所有画笔细节所在位置的细节的Movieclip。巨大,中等和SmallSelected1变量是单击画笔时更改的变量,因此您可以识别它们。
我想根据上次点击的画笔切换光标。这可以通过第一个参数来完成。 现在,这是我的代码转换,得益于@NBooo的帮助与此代码previous question
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();
}
}
的问题,不幸的是,是,每当我按一下按钮说,光标消失。它不会改变我以前制作的任何一个影片剪辑。
请注意,if块中的removeChild有希望在过去单击它们之后删除屏幕上以前的cursor_mc实例。
在测试中,它只会改变,在第一个if块中,其中一个参数具有a =而不是==。
例子:
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);
}
另外,如果他们都降低到刚刚=,代码将如果列表中选择最后一个。 我认为我的代码存在问题,我无法分辨尝试几小时后发生了什么。
难道你们能帮我弄清楚吗?
您正在将'cursor_mc'设置为新光标,但是您立即将其从舞台上删除?我想你想删除旧的光标,而不是新的。 EG:在更改游标之前,尝试执行'removeChild'。 –
@SunilD。 甚至在'removeChild(cursor_mc);'之前,它已经在做这个问题。 而且,如果我事先做好了,它会给我这个错误: '错误#2025:提供的DisplayObject必须是调用者的孩子。' – TwistedRaven
关于上次代码示例,您将'== == '=',这是有道理的,因为一个'='正在做一个赋值,它不是一个布尔表达式。所以当你在'if'语句的条件中使用'='时,它通常会解析为“truthy”。当你改变所有的if语句来使用一个'='时,它们都是真的,因此你可以看到最后一条if语句的结果。所有这些都说明你的'if'陈述中的条件可能不会评估为“真实”......并且你可能会尝试检查它们。 –