Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • CreatiCode
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
Brand Logo

CreatiCode Scratch Forum

  1. CreatiCode Forum
  2. 知识库
  3. 二维积木
  4. 克隆角色

克隆角色

Scheduled Pinned Locked Moved 二维积木
1 Posts 1 Posters 1.8k Views
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • C Offline
    C Offline
    creaticodeteacher2-mail
    wrote on last edited by admin
    #1

    介绍

    在有些项目中,我们需要用到很多个表现相同的对象。例如,我们想让10只小狗在舞台上随意走动。比较幼稚的方法就是创建10个小狗角色并分别添加代码积木。问题是,大部分代码是相近的,所以我们要重复添加相同的积木10次。

    更好的方法就是用“克隆”。当我们克隆某个角色,就是新建这个角色的副本,包括其代码积木、造型和声音。不过,一个主要区别就是,只有当程序开始运行后我们才新建角色副本。所以,在程序开始后,我们对角色的代码和造型所做的全部更改都会完好无损地复制过去。当程序结束时,所有克隆体都被自动删除。

    与克隆相关的所有积木都在“控制”类别:

    https://cdncreaticodecom.b-cdn.net/scratch-gui-projects/forum/025ebe75-e1f8-41bd-a8fd-9273ba285d85.png" width="400" style="border-radius: 5px; border: 1px solid #29622d;">

     

    如何克隆?

    可使用该积木进行克隆:

    https://cdncreaticodecom.b-cdn.net/scratch-gui-projects/forum/6bd7ed59-05b6-4761-bc6a-f2c6a75e5877.png" width="250" style="">

    • 角色列表:第一个参数指定克隆哪个角色。“自己”就是该积木所在的本角色。如果项目中还有其他角色,例如“篮球”、“棒球”,其名称也会显示在该列表中。

    • 克隆体ID编号:第二个参数可以给克隆体赋值一个数字或文本。如果空着,就会给新的克隆体赋值一个随机的唯一ID。

    例如,这个程序会创建3个克隆体,ID编号分别为“1”、“2”、“3”。

    https://cdncreaticodecom.b-cdn.net/scratch-gui-projects/forum/5fa29cca-7031-4261-9445-c837d6cbac9d.gif" width="800" style="">

    注意:你看不出来有3个克隆体,因为克隆体都和原角色重叠在一起,位置、大小和造型都完全一样。

     

    创建克隆体后运行的代码

    生成克隆体后,为了让克隆体做一些行为,你可以在这个积木下面添加新的代码积木:

    https://cdncreaticodecom.b-cdn.net/scratch-gui-projects/forum/36bf5bd0-2e1d-483d-9f98-43cda0a44f6c.png" width="150" style="">

    例如,这段代码让每个克隆体移动到随机位置,这样我们就能清楚看到全部克隆体。注意,原角色不受克隆体行为的影响。

    https://cdncreaticodecom.b-cdn.net/scratch-gui-projects/forum/51d41450-53c0-4eaf-82b7-b9b666d5683b.gif" width="800" style="border-radius: 5px; border: 1px solid #29622d;">

     

    克隆体ID编号

    当创建好所有克隆体之后重新调用这个积木,每个克隆体被赋值一个唯一ID。利用这个积木,每个克隆体都能找出自己的ID。

    https://cdncreaticodecom.b-cdn.net/scratch-gui-projects/forum/2467effd-2d72-4e21-9b31-b26fe8171223.png" width="100" style="">

    例如,我们可以让克隆体报告自己的“克隆ID”:
    https://cdncreaticodecom.b-cdn.net/scratch-gui-projects/forum/9491f876-e45e-49b3-8135-e37c1b5c31a3.gif" width="800" style="border-radius: 5px; border: 1px solid #29622d;">

     

    让克隆体删除自身

    利用这个积木,克隆体做完行为后就可以删除自身:

    https://cdncreaticodecom.b-cdn.net/scratch-gui-projects/forum/ec00ff07-ec8f-45f5-82e2-61265ced248e.png" width="150" style="">

    注意:不能在这个积木下面连接其它积木,因为克隆体已经被删除。

    在如下示例中,我们让每个克隆体说出自己的“克隆ID”,时长2秒,然后删除自身。

    https://cdncreaticodecom.b-cdn.net/scratch-gui-projects/forum/a79abd76-97bc-45fd-8f7d-c8cf82419792.gif" width="800" style="border-radius: 5px; border: 1px solid #29622d;">

     

    获取克隆体的信息

    舞台下方的角色面板只显示原角色的信息。无论如何,原角色仍然能利用这个积木根据克隆体的ID获取其信息:

    https://cdncreaticodecom.b-cdn.net/scratch-gui-projects/forum/038ae1af-5173-4e32-afe3-194ec900074f.png" width="300" style="">

    • 属性名称:第一个下拉菜单包含了所能读取的克隆体的属性列表,比如位置、方向和造型。

    • 角色名:第二个下拉菜单指定你想查询哪个角色或者克隆体。
      例如,生成3个克隆体后,你可以通过原角色获取克隆体的“x位置”。
      https://cdncreaticodecom.b-cdn.net/scratch-gui-projects/forum/5c7057aa-8987-47ac-b476-ea2d9fde75dd.gif" width="1000" style="border-radius: 5px; border: 1px solid #29622d;">

     

    利用消息与克隆体通信

    尽管你可以在积木“当作为克隆体启动时”下面添加克隆体的代码积木,但这些积木只能运行一次。与克隆体“通话”的另一种方式就是广播消息。其好处就是,你什么时候都可以发送消息。

    例如,在这个程序中,生成所有克隆体后,我们在原角色广播“消息1”。还有一个积木用来接收这个消息。因为所有克隆体的代码与原角色相同,所以都会运行这一叠积木“当收到消息( )”。

    https://cdncreaticodecom.b-cdn.net/scratch-gui-projects/forum/637ed04a-3fe8-4fe6-98c6-9bfc7045b8b0.gif" width="1000" style="border-radius: 5px; border: 1px solid #29622d;">

    注意:原角色尽管不是克隆体,但也会响应“消息1”,并且也有一个随机“克隆ID”。一个普遍的做法就是,只让克隆体运行,隐藏原角色。比如,我们可以检查一下“克隆ID”是否属于我们赋予克隆体的ID范围。如果不是,那我们就在原角色的代码中,所以什么都不做并隐藏角色。

    https://cdncreaticodecom.b-cdn.net/scratch-gui-projects/forum/04e988bd-4016-4c15-bdd2-2891247c51a7.gif" width="1100" style="border-radius: 5px; border: 1px solid #29622d;">

    1 Reply Last reply
    0

    Hello! It looks like you're interested in this conversation, but you don't have an account yet.

    Getting fed up of having to scroll through the same posts each visit? When you register for an account, you'll always come back to exactly where you were before, and choose to be notified of new replies (either via email, or push notification). You'll also be able to save bookmarks and upvote posts to show your appreciation to other community members.

    With your input, this post could be even better 💗

    Register Login
    Reply
    • Reply as topic
    Log in to reply
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes


    • Login

    • Don't have an account? Register

    • Login or register to search.
    • First post
      Last post
    0
    • Categories
    • Recent
    • Tags
    • Popular
    • Users
    • Groups
    • CreatiCode