【教程】 Scratch怎么自己添加功能
scratch吧
全部回复
仅看楼主
level 6
最近我看了@史蒂夫◆萧 的【教程】如何在 FlashDevelop 里二次开发 Scratch 后,发现没有把怎么添加新功能写进去,就想在这里帮作者补充一下。
注意:在进行此教程之前,首先要按照上面的教程配置好Flex SDK开发环境,否则无法继续!
2019年05月30日 09点05分 1
level 6
1.源代码中的各个文件的作用
要添加新功能,首先要知道源代码中的部分文件的作用是什么。
先放一张图:
红色笔涂上的部分是我自己添加的,请忽视。
用荧光笔涂上的是改造Scratch过程中主要用到的文件及文件夹。
1. /src/Scratch.as
这个文件是Scratch第一个运行的文件(前提是你按照前面的教程去做了)
也是对舞台等其他组件的初始化代码
起到这个作用的是initialize()函数:
当要对Scratch的fps和舞台大小进行操作时,这个函数特别重要。
2019年05月30日 09点05分 2
前排提醒:坟贴勿回
2019年08月29日 07点08分
level 6
2./src/Specs.as
这个源文件是定义代码块的文件,而且添加新的选择菜单时也要对这个文件进行操作。
下面节选一些内容截个图:
从左往右数第一列为块的名称,第二列为块的类型,第三列为要添加到的菜单的编号(在上面查看),第四列为要执行的函数(全部要执行的函数定义位于/src/primitives文件夹中,明天会说),再往后的所有列为默认参数
其中右边我用荧光笔涂的部分为块的类型,全部类型可以到/src/blocks/Block.as里查看
其中左边我用荧光笔涂的部分为参数的类型,全部类型可以到/src/blocks/BlockArg.as里查看
最上面有个%d.var的东西,其中的点的后面为菜单名称
顺便说一下,有些参数类型不支持菜单
今天先更到这里,明天放学继续更
2019年05月30日 10点05分 3
level 11
你的二楼不见了
2019年05月30日 10点05分 4
2楼还在啊
2019年05月30日 10点05分
@遧傂鼝 [狂汗]我的贴吧怕不是有毒
2019年05月30日 10点05分
吧务
level 15
后排支持
2019年05月30日 10点05分 5
谢谢支持
2019年05月31日 08点05分
level 12
支持,虽然我已经转战sscn了hh
2019年05月30日 11点05分 6
谢谢支持
2019年05月31日 08点05分
level 14
加油,看Spec写的扩展操作和我写的异曲同工啊[滑稽]
2019年05月30日 11点05分 7
谢谢支持
2019年05月31日 08点05分
level 6
预计17点20左右开始更新
今天说一下/src/primtives文件夹和PatternSelector.as文件,以及怎么添加新功能(主要的来了)
2019年05月31日 08点05分 8
level 6
4./src/ui/PaletteSelector.as
这个源文件主要是定义模块菜单的
上图:
只要在第一行或者第二行添加自己的菜单名,编译后就能看见多了一个菜单了。
2019年05月31日 10点05分 10
再补发一下9楼内容: /src/primitives文件夹 这个文件夹里包含了所有的模块函数调用,要添加新功能的话也要在这里添加新函数(度娘吃饱了吗??[喷][喷][喷])(再补上10楼又要吞)
2019年05月31日 11点05分
level 6
先发一张成品图:
2019年05月31日 10点05分 12
level 6
2.写出函数
其中用荧光笔画上的部分为永远不变的,用红笔画出下划线的部分表示可变的。
在这个文件写函数的一般形式为:
private function functionname(b:Block):returnvalue {
functionbody;
}
其中的returnvalue的类型看情况而定,大概类型为:
像连接()(),文件()的内容模块返回字符串的,这里填String。
像()+(),()*()模块返回数值的,填Number。
像()=(),()and()模块返回布尔值(true,false)的,填Boolean。
像移动()步,旋转()度等什么都不返回的,像上面一样填void。
以上是几种常见的类型。
有些人写完以后发现和上面的不太一样:
而且运行之后还会报错。这是为什么呢?[滑稽]
因为File和FileStream这两个包没有事先导入进去,所以编译器找不到这两个类,就报错了。
解决方法:
2019年05月31日 11点05分 14
11楼似乎被吞了
2019年05月31日 11点05分
突然发现13楼让人吞了,再补发一下:在10楼图片的地方自己添加一下菜单(记得加顿号)
2019年05月31日 11点05分
早上起来补一下interp.arg的作用: 后面有两个参数,第一个为一个方块类型,即上面写的b:Block,第二个参数是指要获取的参数,例如第十九楼的第三张图片只设置了一个参数,要获取第一个参数,就要填0,要获取第二个参数,就要填1,以此类推。 一定要记得变量类型要随着参数的类型的变化而变化!
2019年06月01日 00点06分
底下填的是%s,就在对应获取参数位置处填String类型 底下填的是%s,就在对应获取参数位置处填String类型 底下填的是%b,就在对应获取参数位置处填Boolean类型 底下填的是%n,就在对应获取参数位置处填Number类型
2019年06月01日 00点06分
level 6
1.向上拉拉到这里:
2.在底下打出import File,这时候会弹出一个表(一定要手动打,否则不会弹出表!):
从这里可以看出,File类是属于flash.filesystem包里的。因为我们不止要用File一个类,所以接下来把刚才打进去的File删掉,打出 flash.filesystem.*
最终效果应该是这样:
记得给语句后面加上分号!
这次在编译运行,应该就不会报错了。
2019年05月31日 11点05分 15
level 10
哇,直播哎[滑稽][滑稽]不过我看不懂
2019年05月31日 11点05分 16
[滑稽][滑稽]
2019年05月31日 12点05分
2019年05月31日 12点05分
level 6
3.在头部绑定函数
其实你写完函数在Space中做出模块也无法使用,因为你忘了绑定函数。
看到primtable了吗?在底下打出来:
primtable["newFile"]=newFile;
注意末尾的分号一定要写!
primtable方括号里的是你在Specs里填的调用的名字,等于号右面的才是你刚才起的函数名字。
2019年05月31日 12点05分 17
level 6
5.在Specs里创建模块及运行
先把参数和模块类型列表图片奉上:
--
先按照第三张图片填好。
再说一下常用的类型:
方块” “或”w“:普通方块(看第一张旁边画的)
方块”r“:数字方块
方块”b“:布尔值方块
参数”b“:布尔值参数
参数”n“:数字参数
参数”s“:字符串参数
第三张图片的第二列为方块类型,
第三列为它所在的菜单编号(第四步里你的id填的多少这里就填多少)
第四列为Primitives.as里你填的primtable方括号里的字符串(第三步)
第五列及以后的列为默认参数(因为字符串里只有一个参数%s,所以这边就只有一个默认参数)
填完这个列表后,一定要在末尾加上英文逗号!!!
这步完成后,点上面的运行,你的第一个模块就制作完成了!
今天先更到这里,明天继续更
PS:明天放假.......
2019年05月31日 12点05分 19
1 2 3 4 尾页