日本搞逼视频_黄色一级片免费在线观看_色99久久_性明星video另类hd_欧美77_综合在线视频

國內最全IT社區平臺 聯系我們 | 收藏本站
阿里云優惠2
您當前位置:首頁 > php開源 > 綜合技術 > 技能樹之旅: 計算點數與從這開始

技能樹之旅: 計算點數與從這開始

來源:程序員人生   發布時間:2015-04-11 09:34:26 閱讀次數:2529次

之前寫了1篇技能樹之旅: 從模塊分離到測試,現在來講說這其中產生了甚么。

從這開始

在我們沒有點擊任何技能的時候,顯示的是”從這開始”,而當我們點下去時產生了甚么?

Start

明顯變化以下:

  • 樣式變了
  • URL變成了http://skill.phodal.com/#_a2_1_Name
  • 點數 + 1
  • 點亮了箭頭

從Knockout開始

Knockout是1個輕量級的UI類庫,通過利用MVVM模式使JavaScript前端UI簡單化。

聽說有下面的1些特性。

  • 聲明式綁定 (Declarative Bindings):使用簡明易讀的語法很容易地將模型(model)數據關聯到DOM元素上。
  • UI界面自動刷新 (Automatic UI Refresh):當您的模型狀態(model state)改變時,您的UI界面將自動更新。
  • 依賴跟蹤 (Dependency Tracking):為轉變和聯合數據,在你的模型數據之間隱式建立關系。
  • 模板 (Templating):為您的模型數據快速編寫復雜的可嵌套的UI。

在我們的html中的從這開始是這樣1段HTML

<h2 class="start-helper" data-bind="css:{active:noPointsSpent}">從這開始!</h2> 

這是對應的CSS:

.start-helper-avatar {
  background: url(../images/red-arrow.png) no-repeat left center;
  padding-left: 55px;
  top: 80px;
  position: relative;
  left: 410px;
  -moz-opacity: 0;
  -khtml-opacity: 0;
  -webkit-opacity: 0;
  opacity: 0;
  -ms-filter: progid:DXImageTransform.Microsoft.Alpha(opacity=0);
  filter: alpha(opacity=0);
}

.start-helper-avatar.active {
  -moz-opacity: 1;
  -khtml-opacity: 1;
  -webkit-opacity: 1;
  opacity: 1;
  -ms-filter: progid:DXImageTransform.Microsoft.Alpha(opacity=100);
  filter: alpha(opacity=100);
}

.start-helper-avatar.active.start-helper-avatar的不同的地方在于.actie將opacity設置為了1。

而,我們對應的JS代碼是這模樣的:

self.noPointsSpent = ko.computed(function () {
  return !Boolean(ko.utils.arrayFirst(self.skills(), function (skill) {
    return (skill.points() > 0);
  }));
});

當有1個技能點數大于0時,返回False。而當沒有技能點數時,html是這樣的。

<h2 class="start-helper active" data-bind="css:{active:noPointsSpent}">從這開始!</h2>

故而對此,我們可以明白,Knockout的CSS綁定是這模樣的:

CSS綁定主要是給DOM元素對象添加或移除1個或多個css class類名。這非常有用,比如當值變成負數的時候用紅色高亮顯示。

點數計算

對應的我們可以找到點數計算的HTML

<div data-bind="css: { 'can-add-points': canAddPoints, 'has-points': hasPoints, 'has-max-points': hasMaxPoints }, attr: { 'data-skill-id': id }" class="skill">

固然還有:

<div data-bind="click: addPoint, rightClick: removePoint" class="hit-area"></div>

與CSS:

.skill.can-add-points .frame {
  background-position: ⑻0px top;
}
.skill.can-add-points .skill-dependency {
  -moz-opacity: 1;
  -khtml-opacity: 1;
  -webkit-opacity: 1;
  opacity: 1;
  -ms-filter: progid:DXImageTransform.Microsoft.Alpha(opacity=100);
  filter: alpha(opacity=100);
}

對應的,我們可以找到它的js函數:

  self.addPoint = function () {
    if (self.canAddPoints()) {
      self.points(self.points() + 1);
    }
  };
  self.removePoint = function () {
    if (self.canRemovePoints()) {
      self.points(self.points() - 1);
    }
  };

看上去通俗易懂,唯1需要理解的就是click

click綁定在DOM元素上添加事件句柄以便元素被點擊的時候履行定義的JavaScript 函數。

其他

Sherlock:1個新的技能樹:https://github.com/phodal/sherlock。

開發進行時,歡迎加入。

生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 91久操| 国产视频一二区 | 麻豆视频国产 | 亚洲精品久久久久久下一站 | 一区二区视频在线 | 久久久蜜桃一区二区 | 国产精品久久久久久婷婷天堂 | 日韩 国产 欧美 精品 在线 | 天堂网在线视频 | 网站一区 | 看全色黄大色黄大片男爽一次 | 视频在线一区二区三区 | 久9re热视频这里只有精品 | 亚洲精品在线观看视频 | 日本aⅴ免费视频一区二区三区 | 天天干天天爽 | 最近中文幕mv免费高清 | 亚洲精品国产精品乱码在线观看 | 日韩av一卡二卡 | www.888www看片 | 久久精品国产亚洲 | 一区二区三区精品在线 | 日韩精品一区在线视频 | 亚州国产 | 久久1区 | 久久久高清 | 天天操夜夜爱 | 精品美女一区二区 | 国产午夜久久 | 国产在线一区二区三区 | 国产91成人在在线播放 | 久久韩日 | 日韩欧美一区在线 | 中文字幕超碰在线 | 国产乱码精品一区二区三区中文 | 欧美一区二区日韩 | 不卡的av电影在线 | 免费国产网站 | 波多野在线视频 | 国产一区二区三区精品在线观看 | 色偷偷8888欧美精品久久 |