包含的js文件(按照下載順序)
- common.js
- gamer.js
- block.js(構(gòu)造函數(shù)的形式)
- face.js(構(gòu)造函數(shù)的形式)
- floor.js
- cube.js (自動執(zhí)行兩段init代碼)
- view.js(自動執(zhí)行一段init代碼)
文件內(nèi)容詳解:
common.js
- 全局變量:
- cube_floor_num ( Number ) 魔方層數(shù)诵冒,默認(rèn)為3
- rotateDir ( Object ) 非常重要!!十偶,多個地方會用到
- $ ( Function ) 根據(jù)id獲取元素,貌似沒用到過
- rotateSquareArr ( Function ) 用處不明
gamer.js
- 自動執(zhí)行的代碼
- 計(jì)時器準(zhǔn)備,在調(diào)用start時候啟動,調(diào)用reset時候清零
- 全局變量
- gamer (Object)
包含的方法:- init 直接調(diào)用reset方法
- success
- registerStart 向startCallbacks中push函數(shù)
- registerReset 向resetCallbacks中push函數(shù)
- gamer (Object)
- 局部變量
- startBtn (Dom)開始游戲
- resetBtn (Dom)從心開始游戲
- timeEle (Dom)
- successTxt (Dom)
- startCallbacks (Array)gamer.registerStart進(jìn)行push操作厌漂,存放的是函數(shù),在調(diào)用start函數(shù)時候調(diào)用其中的每個函數(shù)斟珊。
- resetCallbacks (Array)gemer.registerReset進(jìn)行push操作苇倡,存放的是函數(shù),在調(diào)用reset方法時會調(diào)用其中的每個函數(shù)囤踩。
- reset (Function)
- start (Function)
block.js
- 全局變量
- Block 構(gòu)造函數(shù)
包含的方法- setType ( Function )
- getType( Function )
- distory( Function )
- reset( Function )
Block構(gòu)造函數(shù)解析:
一共有8個參數(shù):type , col , row , width , height , left , top , floorBlock旨椒,調(diào)用時機(jī)是在face.resset方法中。如果最后一個參數(shù)floorBlock為undefined堵漱,則構(gòu)造出來的是魔方上的小塊综慎,并且會給這個block生成四個箭頭,供旋轉(zhuǎn)用勤庐。如果floorBlock有有效值示惊,則會變成floorBlock,在floor.reset中調(diào)用愉镰,含義不明米罚,生成的dom所處位置在floorWrap中。
- Block 構(gòu)造函數(shù)
face.js
格式上與block.js相似丈探,都是設(shè)定構(gòu)造函數(shù)录择,然后添加原型,face的含義很明確碗降,就是魔方的六個大面糊肠。
- 全局變量
Face構(gòu)造函數(shù)
包含的方法- col(Function)
- row(Function)
- getFloorData(Function)
- setFloorData(Function)
- getFaceData(Function)
- setFaceData(Function)
- isAllSame(Function)
- getFaceEle(Function)
- reset(Function)
floor.js
- 全局變量
- floor
包含的方法- rotate(Function)
- reset(Function)
- floor
- 局部變量
- floorEles(Object)
- sizeEdges(Object)
- frontFace(Face實(shí)例)
- backFace(Face實(shí)例)
- blockWidthPercent(Number)
- hasBeenInit(Boolean)
- init(Function)
- setSizeData(Function)
cube.js
-
自動執(zhí)行的函數(shù)
- init兩個匿名函數(shù)中均自動執(zhí)行
-
全局變量
- rotateFloorRotating(Boolean)
- rotateFloorData(Object)
- newSetFloorData(Object)
- cube(Object)
- getCurrentCubeSize(Function)
- setSize(Function)
- setColNum(Function)
- setStyle(Function)
- rotate(Function)
- reset(Function)
-
局部變量
- faces(Object)
- cubeSize(Number)
- style(String)
- cubeWrapEle(Dom)
- init(Function)
- reset(Function)
另一個匿名函數(shù):
- lock(Boolean)
- motions(Array)
- redoMotions(Array)
- cubeWrapEle(Dom)
- cubeOptWrap(Dom)
- cubePlayingOptWrap(Dom)
- init(Function)
- initEvent(Function)
- startRotateAnimate(Function)
- stopRotateAnimate(Function)
- startCube(Function)
- resetCube(Function)
- handRotateCube(Function)
- redo(Function)
- rotateCube(Function)
view.js
- 自動執(zhí)行的代碼
- init(匿名函數(shù)中的)
- 全局變量
- view(Object)
包含的變量:- reset(Function)
- reset(Function)
- rotateCount(Object)
包含的變量:- fromRotation(Function)
- multiply(Function)
- toRotation(Function)
- toRotations(Function)
- view(Object)
代碼執(zhí)行順序
- 自動執(zhí)行的代碼
- cube.js
init:生成floor,face和block遗锣,形狀已經(jīng)確定,但是沒有染色
1.生成魔方的6個大面(face)
2.調(diào)用reset方法嗤形,在reset方法中繼續(xù)調(diào)用floor.reset和face.reset精偿。
3.調(diào)用face.reset
4.調(diào)用block的init和reset方法,設(shè)定block的位置以及箭頭旋轉(zhuǎn)的含義赋兵。
- cube.js
代碼執(zhí)行順序
- Block的構(gòu)造函數(shù)值得注意笔咽,里面那四個小箭頭是如何生成的要特別加以關(guān)注。構(gòu)造函數(shù)里面會通過innerHTML的方式生成四個小箭頭的dom霹期,但是真正給它賦予含義的是在reset方法里面叶组,構(gòu)造函數(shù)會在最后調(diào)用reset方法。