3d魔方示例代碼分析筆記

包含的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ù)
  • 局部變量
    • 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中。

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)
  • 局部變量
    • 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)

代碼執(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)的含義赋兵。

代碼執(zhí)行順序

  • Block的構(gòu)造函數(shù)值得注意笔咽,里面那四個小箭頭是如何生成的要特別加以關(guān)注。構(gòu)造函數(shù)里面會通過innerHTML的方式生成四個小箭頭的dom霹期,但是真正給它賦予含義的是在reset方法里面叶组,構(gòu)造函數(shù)會在最后調(diào)用reset方法。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末历造,一起剝皮案震驚了整個濱河市甩十,隨后出現(xiàn)的幾起案子船庇,更是在濱河造成了極大的恐慌,老刑警劉巖侣监,帶你破解...
    沈念sama閱讀 222,183評論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件鸭轮,死亡現(xiàn)場離奇詭異,居然都是意外死亡橄霉,警方通過查閱死者的電腦和手機(jī)窃爷,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,850評論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來姓蜂,“玉大人按厘,你說我怎么就攤上這事∏” “怎么了逮京?”我有些...
    開封第一講書人閱讀 168,766評論 0 361
  • 文/不壞的土叔 我叫張陵,是天一觀的道長滩字。 經(jīng)常有香客問我造虏,道長,這世上最難降的妖魔是什么麦箍? 我笑而不...
    開封第一講書人閱讀 59,854評論 1 299
  • 正文 為了忘掉前任漓藕,我火速辦了婚禮,結(jié)果婚禮上挟裂,老公的妹妹穿的比我還像新娘享钞。我一直安慰自己,他們只是感情好诀蓉,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,871評論 6 398
  • 文/花漫 我一把揭開白布栗竖。 她就那樣靜靜地躺著,像睡著了一般渠啤。 火紅的嫁衣襯著肌膚如雪狐肢。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,457評論 1 311
  • 那天沥曹,我揣著相機(jī)與錄音份名,去河邊找鬼。 笑死妓美,一個胖子當(dāng)著我的面吹牛僵腺,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播壶栋,決...
    沈念sama閱讀 40,999評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼辰如,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了贵试?” 一聲冷哼從身側(cè)響起琉兜,我...
    開封第一講書人閱讀 39,914評論 0 277
  • 序言:老撾萬榮一對情侶失蹤凯正,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后呕童,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體漆际,經(jīng)...
    沈念sama閱讀 46,465評論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,543評論 3 342
  • 正文 我和宋清朗相戀三年夺饲,在試婚紗的時候發(fā)現(xiàn)自己被綠了奸汇。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,675評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡往声,死狀恐怖擂找,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情浩销,我是刑警寧澤贯涎,帶...
    沈念sama閱讀 36,354評論 5 351
  • 正文 年R本政府宣布,位于F島的核電站慢洋,受9級特大地震影響塘雳,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜普筹,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,029評論 3 335
  • 文/蒙蒙 一败明、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧太防,春花似錦妻顶、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,514評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至酿愧,卻和暖如春沥潭,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背嬉挡。 一陣腳步聲響...
    開封第一講書人閱讀 33,616評論 1 274
  • 我被黑心中介騙來泰國打工叛氨, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人棘伴。 一個月前我還...
    沈念sama閱讀 49,091評論 3 378
  • 正文 我出身青樓,卻偏偏與公主長得像屁置,于是被迫代替她去往敵國和親焊夸。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,685評論 2 360

推薦閱讀更多精彩內(nèi)容

  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法蓝角,類相關(guān)的語法阱穗,內(nèi)部類的語法饭冬,繼承相關(guān)的語法,異常的語法揪阶,線程的語...
    子非魚_t_閱讀 31,664評論 18 399
  • 工廠模式類似于現(xiàn)實(shí)生活中的工廠可以產(chǎn)生大量相似的商品昌抠,去做同樣的事情,實(shí)現(xiàn)同樣的效果;這時候需要使用工廠模式鲁僚。簡單...
    舟漁行舟閱讀 7,777評論 2 17
  • 1.JQuery 基礎(chǔ) 改變web開發(fā)人員創(chuàng)造搞交互性界面的方式炊苫。設(shè)計(jì)者無需花費(fèi)時間糾纏JS復(fù)雜的高級特性。 1....
    LaBaby_閱讀 1,347評論 0 2
  • 姓名:岳沁 學(xué)號:17101223458 轉(zhuǎn)載自:http://www.cnblogs.com/fsyz/p/80...
    丘之心閱讀 494評論 0 0
  • 要限制一個UITextField的輸入字?jǐn)?shù)(參考鏈接)冰沙,首先想到的應(yīng)該是通過 UITextFieldDelegat...
    Fang_OSH閱讀 218評論 0 2