在西游记中,有一集是“真假悟空”,六耳猕猴变成了悟空的模样与真悟空真假难辨,打的不可开交。

在Scartch中,我们常常会使用一个本体来生成多个克隆体,这在开发过程中有重要的意义。但在实际操作中,每个克隆体看起来都是一样的,如何在程序中区分克隆体呢?

我们这里需要区分两个问题:

第一个是如何区分本体和克隆体.第二个是如何标识及区分多个不同的克隆体。

今天,我们就把克隆体的相关知识及区分的问题分析一下。

克隆体与本体的关系是什么呢? 

在本体生成克隆体时,克隆体会具有和本体相同的位置、方向、大小、特效、造型、声音、局部变量和程序。由于它们具有相同的程序,所以在响应消息时,本体和克隆体可能会同时接受消息,产生错误的结果。因此必须区分本体及克隆体。

下面,我们从克隆体的生命周期上分析区分的方法,克隆体的生命周期包括如下几个过程。

1

克隆体的创建:是使用“克隆”积木生成的,可以生成一个角色的克隆体,或生成另外角色的克隆体。

2

在克隆体生成时,就会激发“当作为克隆体启动时”的事件,可以在此进行一些克隆体的初始化工作。

3

删除克隆体,克隆体最后可以删除自己。只有删除后,克隆体的所有资源才释放。

而本体的生命周期呢?

本体是一直存在的,只要在项目中加入了这个本体角色,这个角色就存在,直到将这个角色从项目中删除才会释放所有的资源。

很重要的一个区别就是,只有本体可以接收绿旗事件。由于在点击绿旗时,系统会先删除所有的克隆体,这时舞台上只有本体,也就只有本体可接受绿旗事件。

从上面的分析可以知道,本体和克隆体发生的事件是不同的。

只有本体可以接收绿旗事件,只有克隆体可以接收“当作为克隆体启动时”事件。

这样就可以区分这两者了。

典型的方式如下,可以设置一个局部变量“是克隆体”,在绿旗时设置为0,表示不是克隆体,在“当作为克隆体启动时”时,再把这个变量设置为1,表示是克隆体。

程序如下:

这样这个变量的值就表示了是否是克隆体。

下面是区分克隆体的问题,在生成多个克隆体时,如何区分不同的克隆体呢?

可以使用这样的方式,建立一个局部变量ID,使每个克隆体的数值不同,就可以用来区分多个克隆体了。那么如何设置这个值呢?可以在本体中改变值后再克隆,因为克隆体继承了本体变量的值,所以每个可以有不同的值。

程序如下:

可以看到,在生成10个克隆体的过程中,每个克隆体都有了不同的ID。在点击绿旗及按下空格后,就得到了下面的效果。

可以看到每个克隆体得到了从1到10的不同ID,而说11的就是本体。

结论

1   克隆体是Scratch中重要的功能,在程序中区分克隆体是很重要的技术。

2   区分包括两个方面,一个是区分本体和克隆体,另一个是区分不同的克隆体。

3   区分本体和克隆体的方式是利于两者的不同事件。

4   区分不同克隆体的方式是使用一个标识的变量。

Scratch教程:谁是真悟空的更多相关文章

  1. iOS Sprite Kit教程之真机测试以及场景的添加与展示

    iOS Sprite Kit教程之真机测试以及场景的添加与展示 IOS实现真机测试 在进行真机测试之前,首先需要确保设备已经连在了Mac(或者Mac虚拟机)上,在第1.9.1小节开始,设备就一直连接在 ...

  2. 【iOS系列】-iOS查看沙盒文件图文教程(真机+模拟器)

    [iOS系列]-iOS查看沙盒文件图文教程(真机+模拟器) 1:模拟器 1.1 方法1: 程序中打印一下的地址,能直接前往沙盒路径. NSString *path = [NSSearchPathFor ...

  3. scratch教程:学做控制类积木

    少儿编程中scratch很容易被小孩所接受,不管是从外观还是教程中,都符合少儿的兴趣,为此现在只要是开少儿编程课都会有scratch课程,今天娜娜姐小码王scratch培训机构就为大家分享,scrat ...

  4. 【转】【iOS系列】-iOS查看沙盒文件图文教程(真机+模拟器)

    原文网址:http://www.cnblogs.com/fengtengfei/p/5090276.html 1:模拟器 1.1 方法1: 程序中打印一下的地址,能直接前往沙盒路径. NSString ...

  5. Python3 环境搭建 保姆式 详细教程!真手把手教学!

    本文我们将向大家介绍如何在本地搭建 Python3 开发环境. Python3 可应用于多平台包括 Windows.Linux 和 Mac OS X. Unix (Solaris, Linux, Fr ...

  6. 少儿编程|Scratch编程教程系列合集,总有一款适合你

    如果觉得资源不错,友情转发,贵在分享!!! 少儿编程Scratch: 少儿编程Scratch第一讲:Scratch完美的初体验少儿编程Scratch第二讲:奇妙的接球小游戏少儿编程Scratch第三讲 ...

  7. 迷上我成真恋爱学心理学挽回她PDF文档资料完整版情感技巧脱单教程

    迷上我成真恋爱学心理学挽回她PDF文档资料完整版情感技巧脱单教程 成真迷上我偷听女人心挽回她课程 百度网盘迷上我教程pdf地址 百度网盘挽回她教程pdf+视频的地址 备用地址淘宝百度网盘发货地址 百度 ...

  8. 从Scratch到Python——python turtle 一种比pygame更加简洁的实现

    从Scratch到Python--python turtle 一种比pygame更加简洁的实现 现在很多学校都开设了Scratch课程,学生可以利用Scratch创作丰富的作品,然而Scratch之后 ...

  9. Photoshop制作Android UI: 怎样将图片背景变为透明

    看烦了代码.今天玩玩PS吧.本人是PS小白.Android开发中不可避免的要做一些图片,但我发现居然没有相似的专门教程.真想拜个美工为师.还记得2012年去宁波实习时为了将图片缩小我还matlab写个 ...

随机推荐

  1. Apache Flink - 常见数据流类型

    DataStream: DataStream 是 Flink 流处理 API 中最核心的数据结构.它代表了一个运行在多个分区上的并行流.一个 DataStream 可以从 StreamExecutio ...

  2. dubbo+zookeeper搭建时报错java.lang.NoClassDefFoundError: org/apache/curator/RetryPolicy

    说一下我的环境: jdk1.8 dubbo2.6.1 zookeeper3.4.10 maven3.3.9 搭建demo时报错:java.lang.NoClassDefFoundError: org/ ...

  3. 【Java】能提高日常工作效率的一些Java函数

    自编工具总是临时抱佛脚来得顺溜,宜常备手边以提高工作效率: package com.hy; import java.io.File; /** * 日常工作常用的一些工具方法 * @author 逆火 ...

  4. Kafka、RabbitMQ、RocketMQ、ActiveMQ消息中间件的对比--多年生产经验实践总结

    引言 分布式系统中,我们广泛运用消息中间件进行系统间的数据交换,便于异步解耦.现在开源的消息中间件有很多,前段时间我们自家的产品 RocketMQ (MetaQ的内核) 也顺利开源,得到大家的关注. ...

  5. EINVRES Request to https://bower.herokuapp.com/packages/ failed with 502

    Bower install fails with 502 - Bad Gateway when downloading bower packages. For example bower instal ...

  6. css 百分比减去像素

    1)第一种实现方式 @body_center_width: ~`$(document).width()-400+'px'`; #helloworld { width: @body_center_wid ...

  7. 严重性 代码 说明 项目 文件 行 禁止显示状态错误 C1128 节数超过对象文件格式限制: 请使用 /bigobj 进行编译。

    严重性 代码 说明 项目 文件 行 禁止显示状态错误 C1128 节数超过对象文件格式限制: 请使用 /bigobj 进行编译. 默认情况下,对象文件最多可存放 65,536 (2^16) 个可寻址的 ...

  8. Civil 3D百度云地址

    Civil 3D 2018百度云地址 https://pan.baidu.com/s/1edeVhG Civil 3D 2019注册机百度云地址 链接: https://pan.baidu.com/s ...

  9. 阶段5 3.微服务项目【学成在线】_day07 课程管理实战_01-我的课程-需求分析与PageHelper技术

    1 我的课程 1.1需求分析 课程添加完成后可通过我的课程进入课程修改页面,此页面显示我的课程列表,如下图所示,可分页查询. 注意:由于课程图片服务器没有搭建,这里在测试时图片暂时无法显示. 上边的查 ...

  10. 123457123456#0#-----com.threeapp.ErTongPaint01-----儿童宝宝绘画涂鸦游戏02

    com.threeapp.ErTongPaint01-----儿童宝宝绘画涂鸦游戏02