我想在HTML5Canvas環境下的Adobe Animate中做一個簡單的任務。舞臺上有幾個按鈕,旁邊有相應的圓圈符號實體,在開始時是不可見的。當我點擊一個按鈕時,相鄰的圓是可見的。然后,如果我隨機點擊另一個按鈕,其相鄰的圓圈將是可見的,但之前可見的圓圈必須再次變得不可見,因為在任何時候都應該只有一個圓圈可見。
作為一個簡單的解決方案,我從4個實體開始。button_1, button_2, circle_1, circle_2。我計劃當我第一次點擊任何一個按鈕時,將圓圈實體的名稱存盤在一個叫做'store'的變數中。然后將該資訊傳遞給下一個按鈕的滑鼠點擊事件,使前一個圓的實體再次隱形。
/*在開始時使圓圈不可見*/。
this.circle_1.visible = false;
this.circle_2.visible = false;
/*按鈕的點擊事件*/。
var _this = this;
_this.button_1('click', function() {
_this.cicle_1.visible = true;
store.visible = false; /*使之前的圓圈不可見,如果有的話*/。
var store = this.circle_1; /*更新變數'store'中的當前圓的名稱*/)
});
var _this = this;
_this.button_2.on('click',function(){
_this.circle_2.visible = true;
store.visible = false; /*使之前的圓圈不可見,如果有的話*/。
var store = this.circle_2; /*更新變數'store'中的當前圓的名稱*/。
});
/* 如果我可以讓所有的圓圈實體不可見,然后在每次點擊事件中顯示預定的圓圈,這也是可行的,但我如何能在一個步驟中獲得并設定20多個圓圈實體不可見?*/
<iframe name="sif1" sandbox="allow-forms allow-modals allow-scripts" class="snippet-box-edit snippet-box-result" frameborder="0"></iframe>
然而,這段代碼并不奏效。我沒有編程經驗,所以我的邏輯可能是可笑的,但這是我能想到的最簡單的解決方案。也許我應該全域宣告我的變數?有沒有人可以改進這段代碼,或者讓它發揮作用,謝謝?請不要使用For-i或Array解決方案,因為這讓我頭暈目眩:) 請提前感謝。
uj5u.com熱心網友回復:
歡迎來到Javscript! 我可以知道你想做什么,但是你犯了幾個錯誤,對于剛開始的人來說,這些錯誤很容易犯。
var store = this.circle_1實際宣告變數之前訪問store變數。使用var關鍵字將在它的 "作用域 "的頂部宣告一個變數,不管它是在該作用域的哪一行宣告的,而let將在你指定的一行宣告它。不管怎么說,任何變數的存在都不會存在于它的作用域之外。一個作用域由一組大括號{}組成,這意味著你正在宣告store,但當你離開大括號時,它立即被洗掉。像下面這樣的方法可以解決這個問題:/*
在一個作用域中宣告的變數對其內部的所有作用域都可用。
通過在任何作用域/大括號之外宣告'store',它將可以從代碼中的任何地方被訪問。
*/
var store = this.circle_1; //你在這里存盤任一圓。我只是用circle_1作為一個占位符。
//其余的代碼。
this.button_1('click', function() {
store.visible = false;
store = this.circle_1;
this.circle_1.visible = true; //使圓1可見。
});
我覺得你有點想多了(沒關系,這是有可能的),如果你只有兩個圓圈,有一個更簡單的方法,我將在下面發布。
你似乎還忘記了
on關鍵字在this.button_1事件宣告中。你正在重新宣告
_this,這在第一次時不應該是必要的,更不用說兩次。代碼var _this = this;在一個名為_this的新變數中存盤了一個_this的參考,基本上只是重命名了它,并沒有做任何其他事情。
我對 Adobe Animate 的 JavaScript 風格了解不多,但我將嘗試以一種我認為應該適用于 Animate 的方式來修改你的原始 JavaScript。
如果你只有兩個圓圈,下面的代碼是最簡單的方法
//Made circles invisible at the beginning。
this.circle_1.visible = false;
this.circle_2.visible = false;
//按鈕的點擊事件。
this.button_1。 on('click', function() {
this.circle_1.visible = true; //使圓1可見。
this.circle_2.visible = false; //make the other circle invisible。
});
this.button_2。 on('click', function() {
this.circle_2.visible = true;
this.circle_1.visible = false;
});
讓我知道它是否作業,或者如果你在瀏覽器中運行它,按F12 > 點擊Console,讓我知道是否有任何錯誤。
如果你想要一個任意數量的圓圈,那么像你所說的 "陣列解決方案 "將是最好的。陣列和回圈是非常基本的,而且一旦你開始學習就很容易理解(盡管語法看起來很可怕)。如果你打算繼續學習編程,這可能應該是你學習的下一件事。
uj5u.com熱心網友回復:
你可能有一個變數可見性問題。在一個函式中宣告一個var,不應該讓其他的代碼片段接觸到該var的值。相反,你應該在外面宣告該var,并在那里存盤一個null,然后像if (store) store.visible=false;這樣呼叫。所以,只要把var store移到兩個函式之外,并在兩個函式中參考store,就可以了。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/319509.html
標籤:
下一篇:本地主機的網址沒有意義
