1. 程式人生 > >CocosCreator之KUOKUO帶你做文字逐個顯示(2)

CocosCreator之KUOKUO帶你做文字逐個顯示(2)

本次引擎2.0.5

編輯工具VSCode

如遇不會某個步驟可以先過一遍之前教程,或者下方評論,感謝支援!

 

目標:對話方塊內文字的逐個列印

無論我們玩什麼遊戲,養成啦,文字冒險啦,戰鬥啦,都會有對話劇情的需要,今天我就來帶大家實現這個小目標。

 

首先,新建一個工程,然後新增一個白色背景(教程一提到過用精靈(單色)當背景);順便改個名字叫BK

然後我們再建立一個按鈕,再建立一個黑色的精靈(單色)。

哦,黑色的圖片覆蓋了按鈕,我們把它往下拖一拖,得到這樣的場景:

這個改成黑色的圖片,我準備用它當白色文字的底(你可以更改成你喜歡的顏色);

然後我們把它的長度和寬度都調一調(在屬性面板(也叫屬性檢查器)中的大小),比如這樣:

好了,文字的背景有了,我們建立個標籤(文字)吧!

注意,這裡要以黑色圖片為父節點建立標籤(文字),這樣的話,文字就會隨著文字背景的移動而移動了。

好了,這樣你試著拖動那個黑色背景,你會發現文字跟著一起動。

好了,場景佈局完畢,我們儲存為遊戲場景,Ctrl + s

然後我們新建一個指令碼起名字為labeljs吧

雙擊進入,然後讓指令碼可愛起來。

 

這一次我們還是要控制標籤(文字),所以我們這樣寫:

儲存一下,然後繫結在黑色文字背景上:

新增元件,新增使用者指令碼元件; labeljs;

然後把New Label拖過去,這樣:

讓我們先簡單的改個指令碼試一試吧:

嗯,成功了呢別先高興,難的來了,我們都知道有這麼一個特效:文字是一個個打出來,還伴隨鍵盤敲擊的聲音(本次先不帶聲音),對吧這該怎麼實現呢?

首先先了解一個知識點。

(字串就是零個或多個排在一起的字元,放在單引號或雙引號之中。)

舉個例子:

其實定義我為字串時,我可以當成一個字元陣列;

我們執行一下:

怎麼樣,是不是一下子迸發出無數特效的靈感,^ _ ^

別急,一步一步來:

我們先改一下命名:把我改成str(這樣看著不會跟j混),然後加個迴圈,注意是+ =符號:

這裡面的str.length指的是字串長度;我們先看看結果:

由於是+ =運算子,我們把標籤也弄了進去,不過,這個小問題你一定會自己解決的〜,思考思考再往下看答案:

第一種是在這改的:

不過我推薦在程式碼裡面改。

好了,接下來講重點,讓文字的顯示延時。

怎麼延時呢,CocosCreator給我們提供了一種封裝:

// 以秒為單位的時間間隔
 var interval = 5;
 // 重複次數
 var repeat = 3;
 // 開始延時
 var delay = 10;
 this.schedule(function() {
     //寫你想執行的程式碼
 }, interval, repeat, delay);

上面的計時器將在10秒後開始計時,每5秒執行一次回撥,重複3次。

好,我們就使用它:

cc.Class({
    extends: cc.Component,
    properties: {
        text:cc.Label,
    },
    start () {
        this.text.string = '';
        var str = 'KUOKUO帶你飛';
        var j = 0;
        var interval = 1;// 以1秒為單位的時間間隔
        var repeat = str.length - 1;// 重複次數 = 字串長度 - 1
        var delay = 1;// 我們在1秒後開始執行
        this.schedule(function() {
            this.text.string += str[j];
            j++;
        }, interval, repeat, delay);
    },
});

特別說明一下:重複次數那裡預設從1開始累計,如果你在那裡打的是2,會重複3次,所以我們用的時候記得減去1;

儲存一下看看效果吧;

O(∩_∩)O~

進階:

結合著教程一:我們讓按鈕成為開關,我們點選按鈕,才會出現效果。

先寫個按鈕點選函式再把程式碼拖過去:

然後又到了緊張刺激的找節點,選指令碼,選函式的過程啦!

如圖:

第一步點選按鈕節點,

第二步把點選事件改為1,

第三步把指令碼所在的節點拖過去,

第四步選擇指令碼,選擇函式

怎麼樣,最後我們來點選按鈕試驗一下〜

怎麼樣,是不是很有意思O(∩_∩)O~

這樣,我出個小小的思考題:如果你狂點按鈕,會發生什麼現象?

怎麼解決?

^ _ ^