欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

解析scratch3.0二次開(kāi)發(fā)之scratch-blocks免編譯修改問(wèn)題

 更新時(shí)間:2022年03月01日 10:47:09   作者:取個(gè)昵稱就那么難  
大家在使用scratch-blocks編譯時(shí)會(huì)遇到scratch-gui依賴的scratch-blocks模塊在安裝的時(shí)候編譯會(huì)報(bào)錯(cuò),針對(duì)這個(gè)問(wèn)題我們?cè)撛趺唇鉀Q呢,下面小編給大家?guī)?lái)了scratch3.0二次開(kāi)發(fā)之scratch-blocks免編譯修改方法,感興趣的朋友一起看看吧

scratch-blocks編譯的時(shí)候會(huì)出現(xiàn)的問(wèn)題:scratch-gui依賴的scratch-blocks模塊在安裝的時(shí)候編譯會(huì)報(bào)錯(cuò)。

原因:scratch-blocks編譯時(shí)要調(diào)用的build.py文件運(yùn)行時(shí)發(fā)生錯(cuò)誤。windowst系統(tǒng)下,代碼壓縮的過(guò)程是build.py通過(guò)一個(gè)closure-library的插件處理后,發(fā)送到谷歌的服務(wù)器進(jìn)行壓縮,返回的結(jié)果會(huì)生成blocks_compressed.js,blocks_compressed_horizontal.js,blocks_compressed_vertical.js這幾個(gè)文件。(linux系統(tǒng)下,有網(wǎng)友反映會(huì)編譯成功的。)build.py運(yùn)行時(shí),因?yàn)閣indow系統(tǒng)在574行處要處理大量的信息流,所以導(dǎo)致錯(cuò)誤發(fā)生。但即便成功,因?yàn)橹笠汛a發(fā)送到國(guó)內(nèi)經(jīng)常訪問(wèn)不到的谷歌服務(wù)器,所以也會(huì)經(jīng)常編譯失敗。這種方法每修改一次代碼就要編譯一次,效率比較低,比較耗時(shí)。

有沒(méi)有種方法不用編譯,就能修改scratch-blocks代碼,而且能即時(shí)生效呢?答案是,有的。

scratch3.0是怎么引進(jìn)scratch-blocks的呢?在scratch-gui的源文件src\containers\blocks.jsx中,引入了scratch-blocks,

import VMScratchBlocks from '../lib/blocks';

嗯…這是經(jīng)過(guò)修改后的blocks,我們?cè)夙樦{(diào)用的路徑,打開(kāi)文件src\lib\blocks.js,這文件的作用是修改對(duì)應(yīng)的角色(target)塊的菜單項(xiàng)。

第一步,引入scratch-blocks,這是已經(jīng)編譯好的文件

import ScratchBlocks from 'scratch-blocks';

第二步,根據(jù)vm的數(shù)據(jù)修改blocks的菜單項(xiàng)。比如looks_costume塊的修改代碼如下:

ScratchBlocks.Blocks.looks_costume.init = function () {
        const json = jsonForMenuBlock('COSTUME', costumesMenu, looksColors, []);
        this.jsonInit(json);
    };

在修改之前,looks_costume塊的菜單項(xiàng)這樣子的:

菜單項(xiàng)是原來(lái)在scratch-blocks里定義的,沒(méi)有變化。

修改后是這樣子的:

看到?jīng)]?菜單項(xiàng)的數(shù)據(jù)和vm聯(lián)系起來(lái)了。

再舉個(gè)例子吧,比如修改workspace界面在block上右鍵彈出菜單項(xiàng),我要保留’添加注釋’,然后把其他兩項(xiàng)去掉,修改前,右鍵彈出菜單是這樣子的:

在src\lib下創(chuàng)建scratch-blocks-modify文件夾,文件夾里創(chuàng)建了blocks_svg.js文件,從scratch-blocks的core文件夾中找到blocks_svg.js,把其中需要修改的函數(shù)代碼復(fù)制過(guò)來(lái)。
修改的blocks_svg.js文件代碼如下 :

export default function(Blockly){
    Blockly.BlockSvg.prototype.showContextMenu_ = function(e) {
        if (this.workspace.options.readOnly || !this.contextMenu) {
            return;
        }
        // Save the current block in a variable for use in closures.
        var block = this;
        var menuOptions = [];
        if (this.isDeletable() && this.isMovable() && !block.isInFlyout) {
            //menuOptions.push(
             //   Blockly.ContextMenu.blockDuplicateOption(block, e)); 這是注釋掉的代碼
            if (this.isEditable() && this.workspace.options.comments) {
                menuOptions.push(Blockly.ContextMenu.blockCommentOption(block));
            }
            //menuOptions.push(Blockly.ContextMenu.blockDeleteOption(block));這是注釋掉的代碼
        } else if (this.parentBlock_ && this.isShadow_) {
            this.parentBlock_.showContextMenu_(e);
            return;
        }

        // Allow the block to add or modify menuOptions.
        if (this.customContextMenu) {
            this.customContextMenu(menuOptions);
        }
        Blockly.ContextMenu.show(e, menuOptions, this.RTL);
        Blockly.ContextMenu.currentBlock = this;
    };
}

注意:現(xiàn)在可以使用es6來(lái)編寫(xiě)代碼了。

然后在src\lib\blocks.js文件引入 :

blockSvgModify是導(dǎo)入的函數(shù)變量。

最后刷新下界面,修改生效:

方法:知道要修改的scratch-blocks的代碼,然后把代碼復(fù)制到一個(gè)js文件中修改,作為一個(gè)函數(shù)導(dǎo)出來(lái),再把ScratchBlock作為參數(shù)傳進(jìn)去,函數(shù)返回的就是改過(guò)后的scratch-block文件了。

小結(jié):我們可以通過(guò)引入scratch-block到一個(gè)文件中,在這個(gè)文件中修改我們想要修改的scratch-block函數(shù)、屬性和方法,再導(dǎo)出來(lái),實(shí)現(xiàn)我們想要的效果。而且這種方法是熱修改。和修改react一樣,每次修改會(huì)引起gui界面相應(yīng)的變化,避免反復(fù)編譯源文件繁瑣的過(guò)程。

到此這篇關(guān)于scratch3.0二次開(kāi)發(fā)之scratch-blocks的免編譯修改方法的文章就介紹到這了,更多相關(guān)scratch blocks的免編譯內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Web 設(shè)計(jì)與開(kāi)發(fā)者必須知道的 15 個(gè)站點(diǎn)

    Web 設(shè)計(jì)與開(kāi)發(fā)者必須知道的 15 個(gè)站點(diǎn)

    今天讀到一篇文章,介紹了15個(gè)對(duì) Web 設(shè)計(jì)與開(kāi)發(fā)師極端有用的站點(diǎn),里面有不少也是我們一直在使用的,也許對(duì)很多人都有用,翻譯出來(lái)以餉同仁。
    2009-08-08
  • 性能測(cè)試QPS+TPS+事務(wù)基礎(chǔ)知識(shí)分析

    性能測(cè)試QPS+TPS+事務(wù)基礎(chǔ)知識(shí)分析

    本篇文章是性能測(cè)試基礎(chǔ)篇,主要介紹了性能測(cè)試中對(duì)QPS+TPS+事務(wù)的基礎(chǔ)知識(shí)分析,有需要的朋友可以借鑒參考下,希望可以對(duì)廣大讀者有所幫助
    2021-09-09
  • 云vscode搭建之使用容器化部署的方法

    云vscode搭建之使用容器化部署的方法

    隨著容器化的發(fā)展,現(xiàn)在涌現(xiàn)出了很多云IDE,比如騰訊的Cloud?Studio,但是其也是基于Code-Server進(jìn)行開(kāi)發(fā)部署的,用了它的云IDE后,我便產(chǎn)生出了自己部署一個(gè)這樣的云IDE的想法,這篇文章主要介紹了云vscode搭建使用容器化部署,需要的朋友可以參考下
    2022-09-09
  • 進(jìn)制轉(zhuǎn)換基礎(chǔ)

    進(jìn)制轉(zhuǎn)換基礎(chǔ)

    很多年前大學(xué)里學(xué)過(guò)的進(jìn)制轉(zhuǎn)換還是挺簡(jiǎn)單的,沒(méi)想到多年不用了,都忘了,剛好看到這篇文章,特分享下,方便需要的朋友
    2013-02-02
  • Visual Studio安裝git插件的方法步驟

    Visual Studio安裝git插件的方法步驟

    這篇文章主要介紹了Visual Studio安裝git插件的方法步驟,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-04-04
  • 關(guān)于代碼閱讀問(wèn)題的小技巧 腳本之家原創(chuàng)(適合所有網(wǎng)站)不定時(shí)更新

    關(guān)于代碼閱讀問(wèn)題的小技巧 腳本之家原創(chuàng)(適合所有網(wǎng)站)不定時(shí)更新

    因?yàn)楹芏嗑W(wǎng)站為了網(wǎng)站的安全,特將一些字符替換成中文字符,導(dǎo)致很多情況下,代碼無(wú)法運(yùn)行,或復(fù)制內(nèi)容的適合都是一行顯示,這里將會(huì)為大家整理一些。
    2011-01-01
  • Windows 版本Git命令行的使用詳解

    Windows 版本Git命令行的使用詳解

    這篇文章主要介紹了Windows 版本Git命令行的使用詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-07-07
  • Vscode 基礎(chǔ)使用教程大全

    Vscode 基礎(chǔ)使用教程大全

    本文給大家匯總介紹了一些vscode開(kāi)始使用的過(guò)程中需要用到的基礎(chǔ)的操作教程,非常簡(jiǎn)單實(shí)用,希望對(duì)大家熟練掌握vscode能夠有所幫助
    2020-01-01
  • git clone下來(lái)的代碼如何放在指定路徑

    git clone下來(lái)的代碼如何放在指定路徑

    這篇文章主要介紹了git clone下來(lái)的代碼如何放在指定路徑,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-08-08
  • git rebase -i合并多次提交的實(shí)現(xiàn)

    git rebase -i合并多次提交的實(shí)現(xiàn)

    這篇文章主要介紹了git rebase -i合并多次提交的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-07-07

最新評(píng)論