成人性生交大片免费看视频r_亚洲综合极品香蕉久久网_在线视频免费观看一区_亚洲精品亚洲人成人网在线播放_国产精品毛片av_久久久久国产精品www_亚洲国产一区二区三区在线播_日韩一区二区三区四区区区_亚洲精品国产无套在线观_国产免费www

主頁 > 知識庫 > scratch3.0二次開發(fā)之用blocks生成python代碼

scratch3.0二次開發(fā)之用blocks生成python代碼

熱門標(biāo)簽:西青語音電銷機(jī)器人哪家好 南昌地圖標(biāo)注 無錫智能外呼系統(tǒng)好用嗎 百應(yīng)電話機(jī)器人總部 旅游廁所地圖標(biāo)注怎么弄 成都呼叫中心外呼系統(tǒng)哪家強(qiáng) 宿州電話機(jī)器人哪家好 地圖標(biāo)注與注銷 電梯新時達(dá)系統(tǒng)外呼顯示e

在開始之前,先回顧下之前寫的文章《scratch3.0二次開發(fā)之blocks生成代碼思路》,在文章里大概地寫了生成代碼的幾個步驟,讀者看了可能還不太理解,這是根據(jù)我的開發(fā)經(jīng)驗寫出來的。現(xiàn)在具體寫寫實現(xiàn)的方法。

一、引入一個生成代碼的文件

比如要生成arduino代碼,就要引入生成arduino代碼的文件,要生成python代碼,就要引入python文件。

這個生成代碼的文件是從Blockly引入進(jìn)來的,scratch-blocks是在blockly的基礎(chǔ)上開發(fā)出來的?,F(xiàn)在的scratch-blocks是沒有g(shù)enerators目錄的,這個也可以從blockly那里copy過來。
具體分析blockly的python.js代碼:

Blockly.Python = new Blockly.Generator('Python');

python是blockl.generator的一個實例,會調(diào)用generator里的方法;

Blockly.Python.addReservedWords(...);

這方法的作用是給python添加關(guān)鍵字,blockly的python文件已經(jīng)設(shè)置了許多python的關(guān)鍵字在里面了。

Blockly.Python.ORDER_ATOMIC = 0;            // 0 "" ...
Blockly.Python.ORDER_COLLECTION = 1;        // tuples, lists, dictionaries
Blockly.Python.ORDER_STRING_CONVERSION = 1; // `expression...`
Blockly.Python.ORDER_MEMBER = 2.1;          // . []
Blockly.Python.ORDER_FUNCTION_CALL = 2.2;   // ()
Blockly.Python.ORDER_EXPONENTIATION = 3;    // **
Blockly.Python.ORDER_UNARY_SIGN = 4;        // + -
Blockly.Python.ORDER_BITWISE_NOT = 4;       // ~
Blockly.Python.ORDER_MULTIPLICATIVE = 5;    // * / // %
Blockly.Python.ORDER_ADDITIVE = 6;          // + -
Blockly.Python.ORDER_BITWISE_SHIFT = 7;     //  >>
Blockly.Python.ORDER_BITWISE_AND = 8;       // 
Blockly.Python.ORDER_BITWISE_XOR = 9;       // ^
Blockly.Python.ORDER_BITWISE_OR = 10;       // |
Blockly.Python.ORDER_RELATIONAL = 11;       // in, not in, is, is not,
                                            //     , =, >, >=, >, !=, ==
Blockly.Python.ORDER_LOGICAL_NOT = 12;      // not
Blockly.Python.ORDER_LOGICAL_AND = 13;      // and
Blockly.Python.ORDER_LOGICAL_OR = 14;       // or
Blockly.Python.ORDER_CONDITIONAL = 15;      // if else
Blockly.Python.ORDER_LAMBDA = 16;           // lambda
Blockly.Python.ORDER_NONE = 99;             // (...)

以上代碼設(shè)置了優(yōu)先級。
Blockly.python的其他方法請參考blockly的python文件。

二、定義生成的python代碼

需要對每個block定義生成的代碼。

1、獲取block的type

block是根據(jù)type來區(qū)分的,每個block的type是唯一的。scratch-blocks的基本blocks的定義是在scratch-blocks\blocks_vertical目錄里。
具體可以查閱之前的博客《scratch3.0二次開發(fā)之scratch-blocks中的blocks的類型、定義和使用方法》

以下是一個type為“motion_movesteps”的block塊的定義

Blockly.Blocks['motion_movesteps'] = {
  /**
   * Block to move steps.
   * @this Blockly.Block
   */
  init: function() {
    this.jsonInit({
      "message0": Blockly.Msg.MOTION_MOVESTEPS,
      "args0": [
        {
          "type": "input_value",
          "name": "STEPS"
        }
      ],
      "category": Blockly.Categories.motion,
      "extensions": ["colours_motion", "shape_statement"]
    });
  }
};

定義生成的python語句:

 Blockly.Python['motion_movesteps'] = function (block) {
        var steps = Blockly.Python.valueToCode(block, "STEPS", Blockly.Python.ORDER_NONE);
        return 'move ' + steps + ' steps\n';
    };

2、獲取參數(shù)的值

根據(jù)參數(shù)的類型,選擇Blockly.Python.valueToCode、block.getFieldValue還是Blockly.Python.statementToCode來獲取值。

type類型 方法
input_value Blockly.Python.valueToCode
input_statement Blockly.Python.statementToCode
field_* block.getFieldValue

3、從xml來解析一個塊的組成結(jié)構(gòu)

這是motion_movesteps塊的xml結(jié)構(gòu),它由兩個block組成,"motion_movesteps"和“math_number”,shadow也是一個block;

block type="motion_movesteps">
            value name="STEPS">
                shadow type="math_number">
                    field name="NUM">10/field>
                /shadow>
            /value>
        /block>

所以除了上面已經(jīng)定義好的"motion_movesteps"生成python語句,還需要的定義math_number的生成語句

Blockly.Python['math_number'] = function(block) {
  // Numeric value.
  var code = parseFloat(block.getFieldValue('NUM'));
  var order;
  if (code == Infinity) {
    code = 'float("inf")';
    order = Blockly.Python.ORDER_FUNCTION_CALL;
  } else if (code == -Infinity) {
    code = '-float("inf")';
    order = Blockly.Python.ORDER_UNARY_SIGN;
  } else {
    order = code  0 ? Blockly.Python.ORDER_UNARY_SIGN :
            Blockly.Python.ORDER_ATOMIC;
  }
  return [code, order];
}

4、根據(jù)塊的形狀來設(shè)置return的數(shù)據(jù)類型

形狀 return的類型
字符串
字符串
[code, order] 數(shù)組
[code, order] 數(shù)組

引入模塊:Blockly.Python.definitions_[模塊名] = ”import xxxx";
聲明函數(shù):Blockly.Python.definitions_[模塊名] = ”def xxx …";

三、生成python代碼

在scratch-gui/src/containers/block.jsx文件中,對workspace添加監(jiān)聽

 this.workspace.addChangeListener(this.generatPythonCode);

四、結(jié)語

本文主要介紹了blocks生成python代碼的方法,由于篇幅有限,寫的也不是很全面,不過大概地生成方法也就這些。如果在開發(fā)地過程中碰到問題,可以私信我給我留言,我盡可能地幫助大家解決問題

到此這篇關(guān)于scratch3.0二次開發(fā)之用blocks生成python代碼的文章就介紹到這了,更多相關(guān)scratch blocks生成python代碼內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:
  • 詳解scratch3.0二次開發(fā)之scratch-blocks中的blocks的類型、定義和使用方法
  • Scratch3.0二次開發(fā)之windows環(huán)境下打包成exe的流程
  • Scratch3.0 頁面初始化同時加載sb3文件的操作代碼
  • 解析scratch3.0二次開發(fā)之scratch-blocks免編譯修改問題

標(biāo)簽:贛州 渭南 七臺河 濰坊 辛集 西安 許昌 雅安

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《scratch3.0二次開發(fā)之用blocks生成python代碼》,本文關(guān)鍵詞  scratch3.0,二次開發(fā),之用,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《scratch3.0二次開發(fā)之用blocks生成python代碼》相關(guān)的同類信息!
  • 本頁收集關(guān)于scratch3.0二次開發(fā)之用blocks生成python代碼的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    精品一区二区三区免费爱| 99re这里只有精品视频首页| 丁香花在线电影| 日本熟妇一区二区| 欧美两根一起进3p做受视频| 国产成人免费av一区二区午夜| 日韩一区二区免费看| 一本久道久久综合狠狠爱| 亚洲一二三不卡| 高潮一区二区三区乱码| 公侵犯人妻一区二区三区| 中文字幕视频网| 日韩欧美小视频| 国产白丝网站精品污在线入口| 亚洲成av人影院在线观看网| 电影一区电影二区| 欧美黑人性视频| 免费三片在线播放| 欧美色图激情小说| 99精品女人在线观看免费视频| 日韩av在线最新| 91精品久久久久久久久久久久| 成人性生交大片免费观看嘿嘿视频| 国产成人综合精品| 人人玩人人添人人澡免费| 久久性天堂网| 亚洲va电影大全| 久久国产福利国产秒拍| 久久97久久97精品免视看秋霞| 在线观看av一区| 自拍欧美日韩| 97人妻天天摸天天爽天天| 麻豆国产高清在线播放| 欧美午夜精品久久久久久久| 亚洲日本高清| 午夜精品一区二区三区在线观看| 欧美一区二区三区视频| 亚洲春色综合另类校园电影| 一区二区三区欧美日韩| 欧美久久一区| 欧美亚洲一区二区三区| 国产美女在线一区二区三区| 亚洲天堂福利av| 国产在线精彩视频| 亚洲精品视频大全| 亚洲天堂免费看| 中文字幕视频在线免费观看| 国产99在线播放| 国内一区二区三区在线视频| 玉足女爽爽91| 成年人黄色大片在线| 免费看毛片的网站| 青青草国产免费自拍| 好吊操这里只有精品| www.午夜色大片| 国产精品视频一区麻豆| 国产精品电影一区二区三区| 992tv在线观看在线播放| 超碰在线超碰在线| 亚洲精品精选| 美女av在线播放| 免费看美女视频在线网站| 欧美日韩一区二区综合| 男人的天堂网av| 吉吉日韩欧美| 成人性生交xxxxx网站| 国产伦精品一区二区三区妓女| 国产成人久久精品| 欧美一区激情| 国产日韩v精品一区二区| 91老师国产黑色丝袜在线| 久久久久久久久久久99999| 久久亚洲国产成人精品无码区| 激情五月综合色婷婷一区二区| 亚洲性视频大全| 午夜剧场成人观在线视频免费观看| 日韩欧美一区电影| 99伊人久久| 国产黄大片在线观看画质优化| 麻豆精品国产免费| 成人美女av在线直播| 国产欧美一区二区三区在线看蜜臂| 色噜噜在线观看| 一区二区三区中文在线观看| 性色av一区二区咪爱| 一区二区不卡视频在线观看| 国产一级不卡视频| 精品久久精品| 国产区高清在线| 一本大道香蕉久久| 香蕉久久国产| 69av成年福利视频| 亚洲女同另类| 在线看三级网站视频| 免费在线观看日韩| 人妻体内射精一区二区| 日本女人高潮视频| 欧美日本国产精品| 在线观看黄色av网站| 亚洲欧洲一区二区三区在线观看| 无码av免费精品一区二区三区| 国产日韩欧美一区二区三区乱码| 波多野吉衣在线视频| 国产丝袜一区| 日韩欧美猛交xxxxx无码| 国产伦精品一区二区三区免费| 亚洲麻豆国产自偷在线| 色狠狠桃花综合| 中文字幕日韩久久| 国产精品成人av在线| 久久久91精品国产一区二区三区| 国产成人精品在线视频| 波多野结衣在线播放| 久久精品国产第一区二区三区最新章节| 国产精品久久久久久久牛牛| 中文字幕精品在线播放| 国产日产精品一区二区三区的介绍| 国产成人一二三区| 久久这里只有精品1| 91极品身材尤物theporn| 国产精品成人久久电影| 久久精品国产亚洲AV无码男同| 欧美日韩亚洲不卡| 亚洲欧美国产三级| 九九这里只精品视在线99| 国产精品欧美综合在线| 欧美亚洲网站| 欧美激情一区| 精品一区在线| 黑人糟蹋人妻hd中文字幕| 国产大片中文字幕在线观看| 伊人春色精品| 亚洲高清成人| 亚洲人成亚洲人成在线观看| 中文字幕+乱码+中文乱码91| 欧美日韩和欧美的一区二区| 午夜视频福利在线| 国产精品91xxx| 宅男噜噜噜66国产精品免费| 欧美日韩一区二区在线免费观看| 亚洲美女屁股眼交| 桃花视频大全不卡免费观看网站| 午夜伦理在线视频| eeuss影院在线播放| 国产精品久99| 日韩精品成人一区二区在线观看| 亚洲丝袜精品| 大陆av在线播放| 日韩高清欧美激情| chinesemodel无套啪啪| 国精品产品一区| 成年丰满熟妇午夜免费视频| 在线观看h视频| 国产免费一区二区三区网站免费| 污污片在线免费视频| 欧美日韩日日夜夜| 少妇视频在线观看| 亚洲高清不卡一区| 国产富婆一区二区三区| 国产美女精品久久久| 天天做夜夜做人人爱精品| 亚洲一级大片| 99久久精品久久久久久ai换脸| 欧美特大特白屁股xxxx| 婷婷五月色综合| 波多野结衣电影在线播放| 国精一区二区三区| 久久人人妻人人人人妻性色av| 国产欧美日韩激情| 黄页网站在线免费观看| 国产精品丝袜在线播放| 91精品国产综合久久久久久久久久| 欧美成人视屏| 国产丝袜视频在线播放| 网曝91综合精品门事件在线| 日韩在线观看www| 伊人影院在线观看视频| 啪啪一区二区三区| 欧美第一页在线观看| 成在线人视频免费视频| 福利在线一区二区三区| 欧美激情亚洲综合| 精品黄色免费中文电影在线播放| 在线免费观看视频一区| 一级黄色香蕉视频| 特黄特色大片免费视频大全| 91啦中文成人| 久久精品国产亚洲5555| 麻豆精品国产传媒mv男同| 国产激情精品久久久第一区二区| 国产毛片一区二区三区va在线| 果冻天美麻豆一区二区国产| 欧美xxxx黑人xyx性爽| 精品播放一区二区| 成年人视频在线观看免费| 免费一级网站| 91在线视频观看| 97caopor国产在线视频| 国产成人综合亚洲91猫咪| 精品深夜av无码一区二区老年| 先锋影音一区二区三区| 亚洲小说欧美另类婷婷| 精彩视频一区二区| 色视频线观看在线播放| 精品国内自产拍在线视频| 国内精品久久久久影院色| yellow在线观看网址| 精品少妇久久久久久888优播| 国产精品成人3p一区二区三区| 色综合久久88色综合天天免费| 国产一区二区三区黄| 欧美激情性爽国产精品17p| 久草国产视频| 欧洲vodafonewi精品| 熟女俱乐部一区二区| 一区二区三区在线视频观看| 久久人妻少妇嫩草av蜜桃| 欧美一区二区黄色| 国产欧美一区二区三区在线观看视频| 久久久久久国产精品免费播放| 欧美日韩一区视频| 成人av网站在线| www.激情成人| av网站在线播放| 久久综合伊人77777麻豆最新章节| 欧美激情黄色片| 日韩在线第二页| 中文字幕乱码一区二区免费| 1pondo在线播放免费| 日韩美女在线观看一区| 四虎国产精品永久在线| 高清av一区二区| 天天爽夜夜爽人人爽| www.久久久.com| www欧美成人18+| 激情视频免费网站| 写真片福利在线播放| 一级日韩一级欧美| 熟女少妇a性色生活片毛片| 在线观看精品视频看看播放| 亚洲一区亚洲二区| 91丨九色丨蝌蚪丨对白| 日本一区二区不卡高清更新| 精品日产免费二区日产免费二区| 国产chinesehd精品露脸| 一级黄色片毛片| vam成人资源在线观看| 亚洲欧美日韩国产另类专区| 亚洲欧洲高清| 高清国语自产拍免费一区二区三区| 欧美精品一区二区三区在线看午夜| 极品人妻一区二区| 亚洲在线视频播放| baoyu135国产精品免费| 亚洲综合免费观看高清完整版| 国产成人无码精品久久二区三| 天天色天天操天天| h网站视频在线观看| 麻豆国产精品一区| 久久99久久99精品蜜柚传媒| 精品呦交小u女在线| 欧美日韩视频在线一区二区| 邪态动恶图27期gif| 91精品中文字幕一区二区三区| 亚洲a级在线观看| 成人精品久久久| 亚洲性猛交xxxxwww| 国产又大又黄又粗| 亚洲日本中文字幕| 国内久久婷婷综合| 91小视频xxxx网站在线| 欧美色图校园春色| 麻豆视频在线观看免费网站黄| yw193.com尤物在线| 亚州成人在线电影| 国产自产v一区二区三区c| 成人在线视频电影| 蜜桃成人在线| 国产精品久久久久久免费免熟| 日韩av网站在线观看| 欧美日韩福利在线观看| 久久亚洲国产精品日日av夜夜| 久久综合给合久久狠狠狠97色69| 亚洲av无码不卡| 亚洲国产精品二十页| 国产三级免费观看| 日韩精品福利在线| 国产 欧美 日本| 先锋资源在线视频| 欧美momandson| av之家在线观看| 亚洲香蕉成人av网站在线观看| 亚洲在线观看| 天天干天天舔天天射| 夜色资源网av在先锋网站观看| 乱亲女h秽乱长久久久| 日韩精品视频在线播放| 欧美激情在线一区二区三区| 久久免费视频这里只有精品| 亚洲丝袜美腿综合| 国产欧美日韩在线观看视频| 国产丝袜一区视频在线观看| 国产成人亚洲综合小说区| 色综合影院在线观看| 免费黄网站在线| 亚洲精品二区| 欧美成人久久久免费播放| 国产最顶级的黄色片在线免费观看| 国产成人精品自线拍| 欧美大胆的人体xxxx| 综合免费一区二区三区| 精品中文字幕在线观看| 星空大象在线观看免费播放| 羞羞网站在线观看| 四虎精品视频| 国产高清视频色在线www| 午夜精品久久久久久久第一页按摩| 手机看片福利在线| 国产国语老龄妇女a片| 7777女厕盗摄久久久| 在线免费观看黄色片| 亚洲欧美中文另类| 日b视频在线观看| 午夜在线不卡| 亚洲精品免费一二三区| 国产一级淫片a视频免费观看| 1313精品午夜理伦电影| 欧美高清视频手机在在线|