blockly -- Custom Blocks: Style Guide

Blockly自定义的块添加自定义右键菜单customContextMenu 题外话:自从可以科学上网后,翻看blockly文档那些就简单舒服多了~~ 翻看了很久blockly文档,发现很少有关于ContextMenu的一些内容,经过一翻的搜索,终于找到解决的方法。 要自定义块右键的菜单(customContextMenu),需要在块定义的时候也定义这个customContextMenu。   直接上代码: Blockly.Blocks['string_leng... 阅读详情

Custom Blocks: Style Guide

多年来,区块和区块游戏团队已经吸取了许多教训,适用于开发新区块。以下是我们所犯的错误,或其他人常犯的错误的集合。

这些是我们在使用Blockly的视觉风格时学到的一般经验,可能并不适用于所有的用例或设计。其他解决方案存在。这也不是用户可能遇到的问题以及如何避免这些问题的详尽列表。每个案例都有点不同,都有自己的取舍。

1. Conditionals vs. Loops

对于新用户来说,最困难的块是条件和循环。许多基于块的环境将这两个块分组到同一“控件”类别中,两个块具有相同的形状和颜色。当新用户混淆这两个块时,这通常会导致挫败感。Blockly建议将条件和循环移动到单独的“逻辑”和“循环”类别中,每个类别都有不同的颜色。这清楚地表明,这些是不同的想法,表现不同,尽管有相似的形状。

建议:将条件和循环分开。

2. One-based Lists

新手程序员第一次遇到基于零的列表时反应很差。因此,BBLLY遵循Lua和LAMBDA MOO的领先地位,通过列表和字符串索引之一。

对于Blockly的更高级使用,支持基于零的列表,以便更容易地转换到文本。对于年轻或更多的新手观众,仍然推荐基于一个索引。

建议:一是第一个号码。

3. User inputs

从用户获取参数有三种方法。下拉列表是最具限制性的,对于简单的教程和练习非常有用。输入字段允许更多的自由,有利于更多的创造性活动。值块输入(通常带有阴影块)提供了计算值(例如随机生成器)的机会,而不仅仅是静态值。

建议:选择适合用户的输入方法。

4. Live block images

块的文档应该包括它所引用的块的图像。截屏很容易。但是如果有50个这样的图像,并且应用程序被翻译成50种语言,那么突然一个应用程序就维护了2500个静态图像。然后颜色方案改变了,2500张图片需要更新——再一次。

为了从这个维护噩梦中解脱出来,Blockly游戏用Blockly以只读模式运行的实例替换了所有屏幕截图。结果看起来与图片相同,但保证是最新的。只读模式使国际化成为可能。

建议:如果支持多种语言,请使用只读模式。

5. Your other Left

来自美国儿童的反馈(虽然有趣的不是来自其他国家)揭示了左右之间的混乱。通过添加箭头解决了这个问题。如果方向是相对的(例如,相对于化身),箭头的样式很重要。当化身面向相反的方向时,A→直箭头或A↱转向箭头会造成混淆。最有用的是⟳圆形箭头,即使在旋转角度小于箭头指示的情况下也是如此。

建议:尽可能用Unicode图标补充文本。

6. High-level Blocks

在可能的情况下,应该采取更高级别的方法,即使它降低了执行性能或灵活性。请考虑以下应用程序脚本表达式:

SpreadsheetApp.getActiveSheet().getDataRange().getValues()

在保留所有潜在功能的1:1映射下,将使用四个块构建上述表达式。但是Blockly的目标是更高的级别,并且将提供一个封装整个表达式的块。目标是对95%的病例进行优化,即使这使剩下的5%更加困难。Blockly并不是要取代基于文本的语言,而是要帮助用户克服最初的学习曲线,从而使用基于文本的语言。

建议:不要盲目地将整个API转换为块。

7. Optional Return Values

在基于文本的编程中,许多函数执行一个操作,然后返回一个值。此返回值可以使用,也可以不使用。例如堆栈的pop()函数。可以调用Pop来获取和删除最后一个元素,或者调用它来删除最后一个元素,并忽略返回值。

var last = stack.pop();  // Get and remove last element.
stack.pop();  // Just remove last element.

基于块的语言通常不擅长忽略返回值。值块必须插入接受该值的内容。有几种策略可以解决这个问题。

a) 避开这个问题。大多数基于块的语言设计语言是为了避免这些情况。例如,Scratch没有任何既有副作用又有返回值的块。

b) 提供两个街区。如果工具箱中的空间不是问题,那么一个简单的解决方案是为每种类型的块提供两个,一个带返回值,一个不带返回值。缺点是,这可能会导致一个包含许多几乎相同块的混乱工具箱。

c) 变异一个街区。使用下拉列表、复选框或其他控件,允许用户选择是否有返回值。然后,块根据其选项更改形状。Blockly的列表访问块就是一个例子。

d) 吃掉价值。App Inventor的第一个版本创建了一个特殊的管道块,该块接受任何连接的值。用户不理解这个概念,App Inventor的第二个版本删除了管道块,而是建议用户简单地将值赋给一个一次性变量。

建议:每种策略都有利弊,选择适合你的用户的策略

8. Growing blocks

某些块可能需要可变数量的输入。例如,对任意一组数字求和的加法块,或具有任意一组else if子句的if/elseif/else块,或具有任意数量初始化元素的列表构造函数。有几种策略,各有利弊。

a) 最简单的方法是让用户用更小的块组成块。一个例子是通过嵌套两个两个数字加法块来添加三个数字。另一个例子是只提供if/else块,并让用户嵌套它们以创建elseif条件。

这种方法的优点是它最初的简单性(对用户和开发人员都是如此)。缺点是,在存在大量嵌套的情况下,代码变得非常麻烦,用户很难阅读和维护。

b) 另一种方法是动态扩展块,以便在末尾始终有一个自由输入。同样,如果最后有两个自由输入,则块删除最后一个输入。这是App Inventor的第一个版本使用的方法。

App Inventor的用户不喜欢自动增长的块,原因有两个。首先,总是有一个免费的输入,程序永远不会“完成”。其次,在堆栈中间插入一个元素是令人沮丧的,因为它涉及到断开编辑下面的所有元素并重新连接它们。也就是说,如果顺序不重要,并且用户可以在他们的程序中使用漏洞,这是一个非常方便的选择。

c) 为了解决孔问题,一些开发人员在块中添加了+/-按钮,这些块可以手动添加或删除输入。Open Roberta使用两个这样的按钮从底部添加或删除输入。其他开发人员在每行添加两个按钮,以便可以从堆栈中间插入和删除。另一些则在每一行加上两个向上/向下按钮,以便可以适应堆栈的重新排序。

这种策略是一系列选项,从每个块只有两个按钮,到每行四个按钮。一端是用户无法执行所需操作的危险,另一端是用户界面充满了按钮,看起来就像星际飞船企业号的桥梁。

d)最灵活的方法是向块中添加一个突变泡。这表示为打开该块的配置对话框的单个按钮。元素可以随意添加、删除或重新排列。

这种方法的缺点是,对于新手用户来说,它的变异并不直观。引入变异需要某种形式的指导。针对年幼儿童的基于块的应用程序不应使用突变子。虽然一旦学会了,它们对电力用户来说是无价的。

 

建议:每种策略都有利弊,选择适合你的用户的策略。

9. Clean Code Generation

高级Blockly用户应该能够查看生成的代码(JavaScript、Python、PHP、Lua、Dart等),并立即识别他们编写的程序。这意味着需要付出额外的努力来保持机器生成的代码可读。多余的括号、数值变量、压碎的空白和冗长的代码模板都会妨碍生成优雅的代码。生成的代码应该包含注释,并且应该符合Google的风格指南。

建议:为您生成的代码感到骄傲。显示给用户。

10. Language Dependence

对干净代码的渴望的一个副作用是Blockly的行为在很大程度上是根据交叉编译语言的行为定义的。最常见的输出语言是JavaScript,但是如果Blockly要交叉编译到另一种语言,就不应该做出不合理的尝试来保持两种语言之间的精确行为。例如,在JavaScript中,空字符串为false,而在Lua中为true。为Blockly的代码定义一个单独的行为模式来执行,而不管目标语言是什么,这将导致无法维护的代码看起来像是来自GWT编译器的。

建议:Blockly不是一种语言,允许现有语言影响行为。

 

IBM Cloud Kubernetes Service - k8s外挂云存储性能测试(一)文件和块存储 k8s数据存储的方式很多:临时存储(emptyDir),半持久化存储(hostpath),持久化存储(文件、块、对象存存储等)。公有云各厂商几乎都支持k8s集成自己的云存储服务,k8s系统本身通过两个概念PersistentVolume(PV)和 PersistentVolumeClaim(PVC)实现存储持久化的生命周期管理(申请、保留、删除、废弃等),pod根据需求向集群系统申请数据卷并使用,如果pod一旦释放,应用消失,数据卷相应分离解绑,数据会保留下来,在使用中pod以及应用对存储的后端基础架构并无 阅读详情

相关推荐

blockly二次开发(一)自定义模块

blockly自定义模块 一、创建快 非压缩模式 由于blockly压缩模式需要翻墙编译,没有梯子只要使用非压缩模式   1.定义块(存放位置在..blockly/blocks) 定义类型名Blockly.Blocks['vision_imread'] = {}; 2.代码生成器(存放位置在..blockly/generators) Blockly.JavaScript['visi...

wangsiqi91的博客 1万+

Java字节码生成框架终极对比:Byte Buddy vs CGLIB vs Javassist性能深度分析

在Java开发中,动态代码生成技术对于实现AOP、代理模式、测试框架等功能至关重要。本文将深入对比三大主流字节码生成框架的性能表现,帮助开发者选择最适合的工具。通过详细的基准测试数据,我们将揭示Byte Buddy、CGLIB和Javassist在类扩展、方法实现和简单类创建等场景下的真实性能差异。 ## 🚀 为什么需要字节码生成框架? Java字节码生成框架允许开发者在运行时动态创建和修改

gitblog_00076的博客 508

Blockly开发入门指北

Blockly开发入门指北 【腾讯文档】Blockly开发入门指北 https://docs.qq.com/doc/DRWRDUU5kR2lhaGNN 写这篇文章的目的 最近公司的项目用到了Blockly这个东西(不知道怎么形容,就用东西这个词吧),但是这个东西呢,官网没有中文,示例给的也都很简单,api文档也是杂七杂八什么都有令人头秃,国内用这个的人似乎也不多(是不是真的不多我也不清楚),网络上的相关文档很少,成体系的教程也没有,因此我打算自己写一个,出于个人水平问题,如有疏漏,在所难免。

大悦=-=的博客 9493

blockly -- Custom Blocks: Block Paradigms

Custom Blocks: Block Paradigms 当设计一个使用块的应用程序时,有几个范例可供选择。应该尽早考虑这些选择,因为它们会影响用户需要的块。 Configuration 许多块应用程序用于描述配置,而不是可执行程序。配置应用程序通常从初始化工作区上的一个根级别块开始。一个很好的例子是Blockly开发工具的Block Factory选项卡: var xml = ...

wolf 559

图形化编程应用 Blockly

你是不是对编程感到好奇,也想自己做一个程序,但是却有无从下手呢?Google Blockly 是一个图形化编程语言,它可以帮助你快速入门。这个网页应用让你可以将不同的模块拖拽到一起来创作程序,然后你可以将它们输出到真实的程序语言中(比如 C 语言)。 Blockly 包含了许多 App Inventor 的元素,Google 的另一个图形化编程工具,而这个工具是受到了 MIT 的一款教小孩子编程的工具 Scratch 的启发。 Blockly 看起来非常像 Scratch,不过它还具有导出代码块及将你的代码块以 JavaScript、Dart、Python或 XML 来表达出来的功能。它对孩子和大人来说都适用。

blockly-custom-blocks

块状React样本 运行样本 安装 npm install 跑步 npm run start 浏览 打开

052仿安卓.9图实现Div模拟blockly风格的办法

9图的后缀格式为:.9.png。

阿赛 743

DC/DC开关电源EMC仿真红宝书

本红宝书系统性介绍开关电源EMC仿真方法,包括仿真原理、仿真思路、仿真工具以及仿真效率提升与仿测一致性的实战经验。从理论到仿真,从仿真到应用,真正帮你实现一文掌握开关电源EMC仿真!全文约14000字,适读人群:开关电源设计、电磁兼容EMC相关从业者,电磁相关专业研究生及CST仿真爱好者等。

电磁学社 2499

blockly研究(二)自定义svg图形块

来更了。。 这篇就大概说说如何做简单的自定义图形吧,第三篇再说自定义生成代码以及自定义校验相关 以下所有截图都是mac截取的,分辨率较大,在csdn里面变形了, 建议放大看 其实就是捋一捋源码画图方法是用来干嘛的 -1、先构建基础块 当然是去blockly提供的工厂生成自定义块,不会的可以去看第一篇教程的入门部分 0、了解blockly图形化是怎么画的 1、...

听闻青春丶 6320

因时机器人-灵巧手配置方案(Ubuntu18.04)

因时机器人-灵巧手配置方案(Ubuntu18.04)

CH_monsy的博客 3848

C++总结笔记

/ ++操作 这是因为定义的数组,申请的是连续的内存空间,当ptr++(ptr是int类型的指针变量),地址空间向后偏移是以int类型的大小为单位进行偏移的,相当于int类型数组元素的向后偏移。使用场景:它是最通用的转换形式,用于将一种类型转换为另一种类型,例如基本数据类型的转换(如 float 转 int),指向基类的指针或引用转为指向派生类的指针或引用等。在派生类被调用时会调用派生类中的函数,不会调用基类中的被重写的函数(基类中的函数需要加上virtual才可以,即基类中的函数是虚函数)。

weixin_50890461的博客 5233

blockly--主题

主题 主题是一种定制Blockly外观和感觉的方法。目前我们支持在块和类别上自定义某些样式。我们创建主题的主要目标是授权开发人员创建更容易访问的块体验。 然而,伴随着强大的力量而来的是巨大的责任。如果不需要控制块的所有三种样式值(块颜色、边框颜色和阴影块颜色),我们强烈建议用户坚持使用块颜色。很难找到协调一致的颜色,所以最简单的方法仍然是使用色调定义颜色,并允许Blockly计算边框和阴影块的...

wolf 1434

STM32F4的sct文件理解

原文地址http://blog.sina.com.cn/s/blog_898f36590100ya2l.html ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~...

weixin_34008805的博客 995

blockly自定义块简单实现

blockly自定义块支持使用json和JS,本文使用JS。 自定义块需要两个部分,blocks和generators。要看效果可以新建自己的index.html。 一、自定义块的步骤 1.在blocks/文件夹下新建文件myblocks.js文件,写入 'use strict'; goog.require('Blockly.Blocks'); goog.require('Blo...

tomato3351的博客 4732

从零到一构建一个智能爬虫 Agent 完整教程

本文将打造一个具备自主决策、动态解析、反反爬、持久化能力的智能爬虫 Agent

数据知道的博客 4793

AgentScope Java 2.0 项目实战: 从零构建自己的个人AI助手“小龙虾“

本文系统介绍如何基于Spring Boot WebFlux、React 18和TypeScript,从零搭建一个本地化的个人AI助手管理平台——AgentScope Paw。项目支持多Agent创建与管理、SSE流式对话、工作区文件CRUD、技能市场、子智能体孵化、AI辅助起草Agent配置等核心功能,并深度集成钉钉、企业微信、飞书、GitHub等IM通道。

program哲学 1426

Blockly学习——定义块(define blocks)

Blockly学习——定义块(define blocks) 定义块是blockly开发最重要的环节,可以利用官方工具:Blockly Developer Tools ,也可以自己定义,本文记录整理通过代码定义方法,原网址为: https://developers.google.com/blockly/guides/create-custom-blocks/define-blocks JSON vs JavaScript 有两种定义 block 的方式: JSON objects 和 JavaScr

qq_41818255的博客 2259

YOLOv11改进 | 模型知识蒸馏篇 | 利用模型蒸馏改进YOLOv11进行无损涨点 | CWDLoss(在线蒸馏 + 离线蒸馏)

这篇文章给大家带来最新改进的是模型的蒸馏利用教师模型指导学生模型从而进行模型的涨点,本文的内容不仅可以用于论文中,在目前的绝大多数的工作中模型蒸馏是一项非常重要的技术,所以大家可以仔细学习一下本文的内容,本文从YOLOv11的项目文件为例,进行详细的修改教程,文章内包括完整的修改教程,针对小白我出了视频修改教程,如果你还不会我提供了修改后的文件大家直接运行即可,所以说不用担心不会适用!模型蒸馏真正的无损涨点,蒸馏你只看这一篇文章就足够了!欢迎大家订阅我的专栏一起学习YOLO!

Snu77的博客 3304

Android-blockly增加定制代码块(Custom Blocks)

————————————————增加定制代码块—————————————— [听英文的视频听到的内容,有一半是猜的,大概内容没问题,如果想看视频视频链接,当然,必须要翻墙的~为了避免我不专业的翻译给大家带来困扰,很多单词保留了原文] 代码块包括三个部分 1、代码定义实体:定义一个代码块的外观和行为,包括text、color、fields & connections.

wxyfennie的博客 5651

使用Simulink进行带通滤波器的设计与仿真研究

摘要:本文介绍利用Simulink设计和仿真带通滤波器的方法。通过定义系统需求(保留100-500Hz信号),创建包含多频信号源、加法器和巴特沃斯滤波器的模型,重点展示滤波器频率选择特性。详细步骤包括模块配置、参数设置(中心频率300Hz、带宽400Hz)、信号连接及可视化分析。实验验证了带通滤波器有效提取目标频段信号的能力,为复杂信号处理系统开发提供基础框架。所需工具为MATLAB R2023a和DSPSystemToolbox。

xiaoheshang_123的博客 326

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

Blockly编程教程-Google Blockly入门与介绍

介绍blockly是google发布的可视化编程工具,基于web技术构建。在功能/设计上和MIT的儿童编程语言Scratch类似使用blockly的时候,用户可以通过拖曳模块,来构建代码逻辑,过程很像搭积木在用户视角下,blockly是一个简单易用的可视化工具,用来生成代码。在开发者视角下,blockly是一个文本框,里边包含了用户输入好的代码。代码生成到文本框的过程,就是用户在blockly里拖...

LitTwoTwo的博客 2万+

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

Blockly之工具Block模块的加入流程

一.Block小模块的加入过程: 在Blockly中侧边栏中的ToolBox是的加入经过assets目录下的json文件数据进行转化成Block的小模块。json中的数据标签通过BlockDefinition类解析一个个的具有属性Block模块,之后把Block模块加入到BlockFactory的工厂中。在需要的地方绘制到Fragment中去。 二.添加自定义的模块的流程:

wangyongyao1989的博客 6012

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

blockly -- 自定义块

本文档面向希望在Blockly中创建新块的开发人员。假定有人拥有一个可以编辑的Blockly本地副本,一个通常熟悉Blockly的用法,另一个则对JavaScript有基本的了解。 Blockly带有大量预定义的块。从数学函数到循环结构,应有尽有。但是,为了与外部应用程序接口,必须创建自定义块以形成API。例如,创建绘图程序时,可能需要创建一个“半径为R的绘图圆”块。 在大多数情况下,...

wolf 2496

Blockly-图形化编程工具

整个过程只需要鼠标的拖曳,不需要键盘敲击。Blockly初始时,将分类XML转化为分类区和积木区,生成Workspace,运行时,将脚本区中的积木组,转成对应的代码段,然后转成可执行的高级编程语言,获得结果。Blockly语言2012年还处于技术探讨阶段,希望开发人员使用Blockly,给予反馈,想出新的能使用它的地方,所有的代码都是开源的。用于编写代码的区域,将积木区中的积木,拖动到脚本区,积木进行卡合形成积木组,积木组即可成为可执行的代码段,执行代码段获得运算结果;不需要任何的代码编写。

顺其自然~专栏 1万+

Blockly web版更改workspace背景

刚开始走了很多弯路,在HTML中,workspace是在 <div id="content_blocks" class="content"></div> 此标签下的,便在CSS中更改content样式,结果其他content背景图片都能改变,唯独workspace不行。 接着想更改此标签透明度,也未能成功。 发现workspace其实有一个grid,查了半天才发现是b...

qq_40516521的博客 1041

vue + blockly 自定义块、工具箱、主题

vue + blockly 自定义块、工具箱、主题 自定义块建议使用 Blockly Developer Tools 方便而且选择多样,随时生成块代码。 自定义块 块由三个组件组成: 块定义对象:定义块的外观和行为,包括文本、颜色、字段和连接。 工具箱引用:对工具箱 XML 中块类型的引用,因此用户可以将其添加到工作区。 生成器函数:生成此块的代码字符串。它总是用 JavaScript 编写,即使目标语言不是 JavaScript。 通过 Blockly Developer Tools

范百岁 5478
上一篇: blockly -- Custom Blocks: Block Paradigms
下一篇: blockly 把工作区中的块输出成代码
wolf131721
博客等级 码龄9年 38粉丝 31原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值