Cocos Creator類似iPhone的滑動以解鎖

  • Creator 版本: v2.1.0
  • 平臺: 模擬器
  • 語言: Typescript

今天突然想做一個類似 iPhone 的滑動以解鎖.

slidedemo.gif

首先想到使用 Creator 自帶的 cc.Slider 組件, 在 Slide 事件中獲取 Slider 的 progress, 遇到了問題:

  1. 如果 handle 設(shè)置的比較大會發(fā)現(xiàn)在進度條最左端或最右端會出現(xiàn) handle 挪出了背景框

    解決方案: 將 Slider 的 background 向左右加長

  2. 點擊在 cc.Slider 的進度條上會使 handle 移動, 然而我們并不需要這種效果

    解決方案:

    • (不推薦)
      start() {
        cc.eventManager.pauseTarget(sliderNode);
      }
      
    • (推薦)
      start() {
        this.node.targetOff(sliderNode);
      }
      

    因為 Slider 的有些事件可能是注冊在 onLoad 后, 所以我們把取消 Slider 監(jiān)聽的函數(shù)寫在 start 中來避免一些未知錯誤

  3. 沒有滑到最右端時 Slider 的回彈

    最近正好在琢磨 Physics 組件的玩法, 所以想到一個騷操作就是用 Joint 將 Slider 和 handle 連接起來, 不過后來還是用一個簡單的 action 解決了

    var springBack = cc.moveTo(0.1, cc.v2(-this.node.width / 2, 0));
    this.silderHandle.node.runAction(springBack);
    
  4. 對滑到最右端松手的處理

    如果只是簡單地檢測 handle 的 touchend 事件, 如果手指滑出了 handle 就無法觸發(fā)了, 所以同時還要檢測 handle 的 touchcancel 事件(當手指滑出 handle 節(jié)點的范圍時觸發(fā)), 詳細代碼在下方給出

整體代碼如下:

/* slider.js */
const { ccclass, property } = cc._decorator;

@ccclass
export default class Slider extends cc.Component {
  @property(cc.Slider)
  slider: cc.Slider = null;

  @property(cc.Button)
  silderHandle: cc.Button = null;

  onLoad() {
    this.slider = this.node.getComponent(cc.Slider); // get slider component

    this.slider.progress = 0; // set slider progress to 0
    this.silderHandle = this.slider.handle; // get handle of the slider
    this.silderHandle.node.on(
      cc.Node.EventType.TOUCH_END,
      function(event) {
        this.callback(event);
      },
      this
    ); // trigger when touch ended on handle
    this.silderHandle.node.on(
      cc.Node.EventType.TOUCH_CANCEL,
      function(event) {
        this.callback(event);
      },
      this
    ); // trigger when touch ended and moved out of handle
  }

  callback(event) {
    cc.log(this.slider.progress);
    if (this.slider.progress == 1) {
      cc.director.loadScene('next');
    } else {
      // this.slider.progress = 0;
      var springBack = cc.moveTo(0.1, cc.v2(-this.node.width / 2, 0));
      this.silderHandle.node.runAction(springBack); // handle spring back to initial position
    }
    console.log(event);
  }

  start() {
    this.node.targetOff(this.slider); // prevent slider touch event
  }

  // update (dt) {}
}

將代碼綁定到 Slider 所在節(jié)點進行微調(diào)即可實現(xiàn)滑動以解鎖的效果.

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末津肛,一起剝皮案震驚了整個濱河市摸柄,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌厢汹,老刑警劉巖吐根,帶你破解...
    沈念sama閱讀 222,252評論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件吆录,死亡現(xiàn)場離奇詭異矮燎,居然都是意外死亡鸡号,警方通過查閱死者的電腦和手機转砖,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,886評論 3 399
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來鲸伴,“玉大人府蔗,你說我怎么就攤上這事」埃” “怎么了姓赤?”我有些...
    開封第一講書人閱讀 168,814評論 0 361
  • 文/不壞的土叔 我叫張陵,是天一觀的道長仲吏。 經(jīng)常有香客問我不铆,道長蝌焚,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,869評論 1 299
  • 正文 為了忘掉前任誓斥,我火速辦了婚禮只洒,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘劳坑。我一直安慰自己毕谴,他們只是感情好,可當我...
    茶點故事閱讀 68,888評論 6 398
  • 文/花漫 我一把揭開白布泡垃。 她就那樣靜靜地躺著析珊,像睡著了一般。 火紅的嫁衣襯著肌膚如雪蔑穴。 梳的紋絲不亂的頭發(fā)上忠寻,一...
    開封第一講書人閱讀 52,475評論 1 312
  • 那天,我揣著相機與錄音存和,去河邊找鬼奕剃。 笑死,一個胖子當著我的面吹牛捐腿,可吹牛的內(nèi)容都是我干的纵朋。 我是一名探鬼主播,決...
    沈念sama閱讀 41,010評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼茄袖,長吁一口氣:“原來是場噩夢啊……” “哼操软!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起宪祥,我...
    開封第一講書人閱讀 39,924評論 0 277
  • 序言:老撾萬榮一對情侶失蹤聂薪,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后蝗羊,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體藏澳,經(jīng)...
    沈念sama閱讀 46,469評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,552評論 3 342
  • 正文 我和宋清朗相戀三年耀找,在試婚紗的時候發(fā)現(xiàn)自己被綠了翔悠。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,680評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡野芒,死狀恐怖蓄愁,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情狞悲,我是刑警寧澤涝登,帶...
    沈念sama閱讀 36,362評論 5 351
  • 正文 年R本政府宣布,位于F島的核電站效诅,受9級特大地震影響胀滚,放射性物質(zhì)發(fā)生泄漏趟济。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 42,037評論 3 335
  • 文/蒙蒙 一咽笼、第九天 我趴在偏房一處隱蔽的房頂上張望顷编。 院中可真熱鬧,春花似錦剑刑、人聲如沸媳纬。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,519評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽钮惠。三九已至,卻和暖如春七芭,著一層夾襖步出監(jiān)牢的瞬間素挽,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,621評論 1 274
  • 我被黑心中介騙來泰國打工狸驳, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留预明,地道東北人。 一個月前我還...
    沈念sama閱讀 49,099評論 3 378
  • 正文 我出身青樓耙箍,卻偏偏與公主長得像撰糠,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子辩昆,可洞房花燭夜當晚...
    茶點故事閱讀 45,691評論 2 361

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