最贊回答 / l1uyub0b0b0
不一定優先級高,是執行順序的問題。這個demo里js是使用document.ready,也就是在頁面加載完以后才執行的。頁面加載也包括了css的加載,所以之后使用js修改css屬性會覆蓋本身設定的css。
使用js設定這些屬性是因為在程序中這些屬性要動態改變。也可以使用css布置初始屬性,但是為了統一,也為了方便,我統一使用js設置這些屬性。
2014-07-19
已采納回答 / l1uyub0b0b0
hasConflicted[i][k]的值每回合初始化為false,在不沖突的情況下,!hasConflicted[i][k]為true。但是若在move中檢查到了沖突,hasConflicted[i][k]設為true,!hasConflicted[i][k]則為false
2014-07-18
已采納回答 / l1uyub0b0b0
showNumberWithAnimation負責產生隨機數時動畫的產生,其中的numberCell.text先附上值,配合之后的動畫效果。
updateBoardView在任何動作以后都要調用,包括初始化,移動和產生隨機數,所以對于一般情況,對numberCell的text元素賦值。在這點上雖然和showNumberWithAnimation重復了,但是保證了一般狀況下的正確性。
2014-07-18
最贊回答 / 慕少1187603
加油,你得耐心,多思考,要慢,因為只有慢功夫才是真功夫。(我用的VS Code,也跟你一樣,而且我已經比對完代碼了,最后只能一個單詞一個單詞的比對,最后發現都是單詞拼錯的鍋。)
2014-07-17
最贊回答 / l1uyub0b0b0
canMoveLeft是對當前board整體給出一個判斷,是否需要具體的作移動操作。在moveLeft中,是針對每一個格子是否需要移動作判斷。
moveLeft不判斷board[i][j]是否為0,是效率考慮。否則相當于每次16個格子都要移動,不優。
其實moveLeft很研究,canMoveLeft確實可以不判斷。但是最初設計接口moveLeft返回bool,所以就加了這段邏輯。
確實有優化空間!謝謝提醒!
2014-07-17