我提出了一個新問題,因爲它有意義,因爲問題不再一樣了。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'陳述中的條件可能不會評估爲「真實」......並且你可能會嘗試檢查它們。 –