婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > 解析scratch3.0二次開發之scratch-blocks免編譯修改問題

解析scratch3.0二次開發之scratch-blocks免編譯修改問題

熱門標簽:400電話辦理費用低 宿遷怎么辦理400電話 谷歌地圖標注日期 400電話申請到底哪家好 鶴壁高頻外呼系統多少錢一個月 聯通外呼系統電腦app軟件 地圖標注項目幾個月 外呼系統怎么群發短信 蘇州呼叫中心外呼系統哪家強

scratch-blocks編譯的時候會出現的問題:scratch-gui依賴的scratch-blocks模塊在安裝的時候編譯會報錯。

原因:scratch-blocks編譯時要調用的build.py文件運行時發生錯誤。windowst系統下,代碼壓縮的過程是build.py通過一個closure-library的插件處理后,發送到谷歌的服務器進行壓縮,返回的結果會生成blocks_compressed.js,blocks_compressed_horizontal.js,blocks_compressed_vertical.js這幾個文件。(linux系統下,有網友反映會編譯成功的。)build.py運行時,因為window系統在574行處要處理大量的信息流,所以導致錯誤發生。但即便成功,因為之后要把代碼發送到國內經常訪問不到的谷歌服務器,所以也會經常編譯失敗。這種方法每修改一次代碼就要編譯一次,效率比較低,比較耗時。

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

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

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

嗯…這是經過修改后的blocks,我們再順著調用的路徑,打開文件src\lib\blocks.js,這文件的作用是修改對應的角色(target)塊的菜單項。

第一步,引入scratch-blocks,這是已經編譯好的文件

import ScratchBlocks from 'scratch-blocks';

第二步,根據vm的數據修改blocks的菜單項。比如looks_costume塊的修改代碼如下:

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

在修改之前,looks_costume塊的菜單項這樣子的:

菜單項是原來在scratch-blocks里定義的,沒有變化。

修改后是這樣子的:

看到沒?菜單項的數據和vm聯系起來了。

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

在src\lib下創建scratch-blocks-modify文件夾,文件夾里創建了blocks_svg.js文件,從scratch-blocks的core文件夾中找到blocks_svg.js,把其中需要修改的函數代碼復制過來。
修改的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;
    };
}

注意:現在可以使用es6來編寫代碼了。

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

blockSvgModify是導入的函數變量。

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

方法:知道要修改的scratch-blocks的代碼,然后把代碼復制到一個js文件中修改,作為一個函數導出來,再把ScratchBlock作為參數傳進去,函數返回的就是改過后的scratch-block文件了。

小結:我們可以通過引入scratch-block到一個文件中,在這個文件中修改我們想要修改的scratch-block函數、屬性和方法,再導出來,實現我們想要的效果。而且這種方法是熱修改。和修改react一樣,每次修改會引起gui界面相應的變化,避免反復編譯源文件繁瑣的過程。

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

您可能感興趣的文章:
  • 詳解scratch3.0二次開發之scratch-blocks中的blocks的類型、定義和使用方法
  • scratch3.0二次開發之用blocks生成python代碼
  • Scratch3.0二次開發之windows環境下打包成exe的流程
  • Scratch3.0 頁面初始化同時加載sb3文件的操作代碼

標簽:遵義 莆田 錫林郭勒盟 雙鴨山 鄂爾多斯 丹東 哈爾濱 襄陽

巨人網絡通訊聲明:本文標題《解析scratch3.0二次開發之scratch-blocks免編譯修改問題》,本文關鍵詞  解析,scratch3.0,二次,開,發之,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《解析scratch3.0二次開發之scratch-blocks免編譯修改問題》相關的同類信息!
  • 本頁收集關于解析scratch3.0二次開發之scratch-blocks免編譯修改問題的相關信息資訊供網民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    欧美三级视频在线播放| 久久免费看少妇高潮| 欧美一区二区免费视频| 欧美激情综合五月色丁香| 亚洲国产sm捆绑调教视频| 国产黄色成人av| 3d动漫精品啪啪一区二区竹菊 | 欧美国产成人在线| 中文字幕av一区 二区| 亚洲欧美中日韩| 五月婷婷久久综合| 国模少妇一区二区三区| 成人黄色大片在线观看| 欧美亚洲一区二区在线观看| 在线不卡免费av| 久久久久亚洲蜜桃| 欧美日韩欧美一区二区| 久久久久国产成人精品亚洲午夜 | 中文字幕综合网| 国产成人免费在线观看| 欧美r级在线观看| 蜜桃视频第一区免费观看| 91精品国产综合久久久久久| 丝袜亚洲另类欧美综合| 在线不卡免费欧美| 日日嗨av一区二区三区四区| 欧美日韩mp4| 日韩中文字幕麻豆| 欧美一区二区大片| 精品一区精品二区高清| 久久99精品视频| 精品在线免费观看| 色婷婷av久久久久久久| 精品国产91九色蝌蚪| 国产精品人妖ts系列视频| 五月天激情综合网| av男人天堂一区| 日韩免费电影网站| 亚洲大片一区二区三区| 国产v综合v亚洲欧| 91麻豆精品国产91久久久久久| 欧美国产一区在线| 美女看a上一区| 欧美伊人久久大香线蕉综合69 | 成人在线综合网| 欧美一级二级在线观看| 亚洲黄色尤物视频| 国产ts人妖一区二区| 欧美一区二区在线观看| 一区二区三区四区不卡在线| 成人一级片网址| 欧美精品一区二区久久久| 午夜电影网一区| eeuss鲁片一区二区三区| www成人在线观看| 蜜桃视频免费观看一区| 欧美日韩另类国产亚洲欧美一级| 国产精品久久99| 国产精品99久久久久久似苏梦涵| 91精品国产综合久久精品| 樱花草国产18久久久久| 99免费精品视频| 国产精品女人毛片| 高清久久久久久| 久久亚洲一级片| 国产福利一区二区三区视频在线 | 91久久线看在观草草青青| 欧美韩日一区二区三区四区| 狠狠色狠狠色合久久伊人| 精品国产乱码久久久久久久| 美女视频网站久久| 26uuu亚洲综合色| 国内精品不卡在线| 久久亚洲欧美国产精品乐播 | 亚洲黄色性网站| 在线免费观看成人短视频| 亚洲乱码日产精品bd| 欧美午夜寂寞影院| 日韩一区精品视频| 欧美精品一区二区三区一线天视频 | 色先锋资源久久综合| 亚洲激情校园春色| 欧美日韩在线观看一区二区| 亚洲一区二区综合| 日韩区在线观看| 国产盗摄视频一区二区三区| 中文字幕日韩av资源站| 色狠狠色噜噜噜综合网| 亚洲成人动漫在线观看| 欧美一区二区三区视频在线| 激情文学综合插| 日韩理论片一区二区| 欧美日韩精品欧美日韩精品一 | av一本久道久久综合久久鬼色| 国产精品高清亚洲| 欧美丝袜丝交足nylons| 国产一区二区三区视频在线播放| 国产精品国产自产拍高清av王其| 欧美在线看片a免费观看| 日韩成人午夜电影| 国产精品久久久久久久久搜平片| 欧美中文字幕一区| 国内成人免费视频| 亚洲激情在线激情| 久久精品亚洲国产奇米99| 日本高清成人免费播放| 国产麻豆精品在线观看| 依依成人精品视频| 久久久久青草大香线综合精品| 一本在线高清不卡dvd| 久久精品国产一区二区| 一区二区三区在线免费观看 | 成人免费高清视频在线观看| 亚洲综合成人在线视频| 久久久久久久久久久电影| 在线观看av一区二区| 国产成人自拍网| 肉色丝袜一区二区| 亚洲乱码中文字幕| 日本一区二区在线不卡| 欧美www视频| 91精品国产综合久久久久久久久久 | 精品影视av免费| 洋洋av久久久久久久一区| 久久精品网站免费观看| 日韩欧美中文字幕一区| 欧美日韩色综合| 一本一道久久a久久精品| www.欧美精品一二区| 国产精品亚洲人在线观看| 日韩精品91亚洲二区在线观看| 亚洲美女精品一区| 国产精品成人午夜| 国产色一区二区| 久久精品亚洲乱码伦伦中文| 精品国产伦一区二区三区观看体验| 欧美系列一区二区| 欧美在线免费视屏| 欧美视频在线观看一区二区| 色综合一区二区| 色老综合老女人久久久| 91丨porny丨国产入口| 成人综合婷婷国产精品久久蜜臀 | 精品少妇一区二区三区在线播放| 欧美日本韩国一区| 欧美日韩激情一区| 91麻豆精品国产| 欧美一卡二卡三卡| 欧美sm极限捆绑bd| 国产三级精品三级| 国产精品美女视频| 亚洲黄色av一区| 日韩专区欧美专区| 久久66热偷产精品| 国产不卡视频在线观看| voyeur盗摄精品| 在线亚洲欧美专区二区| 欧美精品自拍偷拍| 日韩精品影音先锋| 久久色中文字幕| 日韩伦理电影网| 亚洲va欧美va人人爽午夜| 免费观看日韩av| 国产精品综合一区二区三区| 丁香天五香天堂综合| 色国产综合视频| 欧美一级淫片007| 国产精品视频免费看| 一区二区三区国产精华| 麻豆国产欧美一区二区三区| 岛国精品在线播放| 欧美综合天天夜夜久久| 日韩视频一区二区三区在线播放| 国产亚洲va综合人人澡精品| 亚洲美女偷拍久久| 六月丁香婷婷色狠狠久久| eeuss鲁一区二区三区| 欧美色爱综合网| 国产欧美日本一区二区三区| 亚洲网友自拍偷拍| 国产成人综合亚洲网站| 欧美优质美女网站| 久久精品日韩一区二区三区| 亚洲最新视频在线观看| 国产高清精品网站| 欧美麻豆精品久久久久久| 国产精品天天摸av网| 日日夜夜精品视频天天综合网| 成人的网站免费观看| 日韩欧美123| 亚洲国产aⅴ天堂久久| 大白屁股一区二区视频| 欧美一区二区三区免费在线看| 国产精品免费免费| 国产主播一区二区三区| 欧美在线观看视频一区二区| 欧美国产成人在线| 极品少妇一区二区三区精品视频| 欧美日韩黄视频| 亚洲综合色丁香婷婷六月图片|