鲍通
一般来说,线性思维有助于深入思考,探究事物的本质,侧重于“目的”;非线性思维有助于拓展思路,理清事物的普遍联系,侧重于“过程”。二者并举,至于如何调控,不同的人有不同的看法。对于非线性思维的特征而言,哪怕初始条件有一个很小的变化,都有可能造成结果的巨大改变。目前,非线性思维对创新教育的影响日益凸显,如STEM研究性学习、非线性写作等。下面,笔者将以儿童歌曲《让我们荡起双桨》为例进行实践探究。
● 戴上耳机找灵感
1.实施方法——体现主题的音乐文本
对于《让我们荡起双桨》这首歌,很多学生都已经熟悉了,闲暇时光,让学生带上耳机再次聆听美妙的音符。伴随着动听的歌声,学生可以成为“项目发起人”,在歌词和旋律中捕获灵感,并将音乐中的意境和感悟分享给其他同学或者合作伙伴,引起情感共鸣,进而提高参与者的积极性、激发团队活力,学生在听歌的同时即可构思如何用编程动画来呈现脑海里的某一段景象。
2.策略意图——目标灵活化
歌词最重要的是意境,而意境最重要的是表达。“荡起双桨”“小船飘荡”“海面倒映白塔”“水中鱼儿望着我们”等,这些带有动作色彩的内容都可以用可视化编程脚本搭配多种素材实现动画效果。因为对于歌词而言,不同的人有不同的想象,所以表达出来的动画效果自然也就不尽相同,学生对学习内容的选择应该具有灵活性和随意性。例如,非灵活的目标:为了有教养而读书;灵活的目标则是为了有教养,每周读一本书。编程同理。非灵活的目标是为了MV更有趣,请大家一起来创作;灵活的目标则是为了MV更有趣,请你选择一两句自己喜欢的歌词进行创作。灵活性目标是具体的、可操作的,并且划分了一定的层次,这样按阶段实现起来就会比较轻松一些。
● 拿起画笔绘思维
1.实施方法——呈现结构的思维导图
为了梳理创作思路,使项目中涉及的知识体系化,“项目发起人”可以通过思维导图表达思维过程,将与主题相关的各层面绘制出来(也可多人一起参与)。
第一层:主题,最能表达中心思想的语句,一般为歌曲的名称,即“让我们荡起双桨”。
第二层:分析歌词的内容,结合动画创作的可行性,将歌词拆分再进行重组。通常情况下相邻的两句歌词为一个单元,分配一组镜头,如A组镜头、B组镜头、C组镜头等,然后作为分支与主题相连(如下页图1)。
第三层:为每组镜头(每组歌词)寻找关键词,筛选出最能表达歌词内容的词语,如双桨、小船、波浪、海面、白塔等,作为该镜头组中的主要元素与上一级相连。
第四层:为每组镜头分配素材,确定镜头组中的场景以及该场景下的若干角色。一般歌词中的关键词即为角色。素材主要包括图片、文字以及音效等。
再往下分层就是更加细致的构思了,如“小船儿推开波浪”中的“推开”动作如何实现,或者双桨如何“荡起”等。另外,如果要求歌词与动画同步,那么每组镜头的时间分配也是一个重要因素。初创不建议太复杂,随性自由一些为好,负责该组镜头的学生可根据实际情况决定是否还需延伸。
2.策略意图——任务分层化
图文并茂、形式多样的思维导图将歌词划分为多个层次,具体化了源自音乐的创作灵感,也相当于将一个大的任务分割成了若干个子任务。所以,为了避免“牵一发动全身”的水波效应,镜头组之间要尽量减少联系,即一个镜头组动画尽量减少与另一个镜头组动画的关联,以此降低耦合度。但对于一个镜头组本身而言,内部各元素之间的联系反而要紧密,提高内聚度,确保一个分支动画的连贯性和完整性。任务分层化,消除了任务之间明显的分支判断,加强了任务内部零散的逻辑关系,它以“高内聚,低耦合”为原则,确保项目设计的清晰合理,也为下一步“程序模块化”奠定基础。
● 敲击键盘编智慧
1.实施方法——实现镜头的脚本搭建
第一步:定义本项目中的命名规则。如果是多人合作,那么这一步非常重要。
镜头组别:建议以图1的思维导图为准,也可自定义(如:A,B,C …)。
场景:镜头组别-C编号(如A组镜头场景:A-C01,A-C02,A-C03 …)。
角色:镜头组别-J编号(如B组镜头角色:B-J01,B-J02,B-J03 …)。
第二步:制订程序框架及流程示意,全程以“场景切换”为触发点展开。程序中的词语解释及流程简述如下。
函数:定义镜头组编号,即组别(可视为接口)。
清场:将所有角色的属性回归初始化状态。
开机:调用第一个场景,紧跟着是演示该场景下的角色动作,完毕后清场(需要注意的是,如果该场景下有多个角色陆续或者同时出现,如鱼儿游、鸟儿飞,则可以采取并行的方式实现,然后将清场安排在最迟完成的动作之后。此处,时间差的计算是关键,必要时也可另设广播。下页图2中省略了多角色在同一场景中互动或并行的情况)。
第一个场景结束后(动画结束+清场完毕),如果还有下一个场景,则进行跳转,且演示下一个场景中的角色动作,完毕后清场;如果没有下一个场景,则“关机”,结束本组镜头。
关机:在分组镜头中作为一个“预留”功能,为最后串联多组镜头的工作做铺垫。
第三步:完成一组镜头的制作后,导出场景和角色。
主程序写在舞台场景里,子程序写在各个角色里,完成及测试顺畅后均要做“导出”操作。其中,场景导出后仅为图片,文件的后缀名为svg或png;角色导出后则将携带已有程序,文件的后缀名为sprite3。
2.策略意图——程序模块化
模块化设计,并非直接写出计算机程序,而是通过主程序调用子程序或子过程的形式搭建一个框架结构,即通过函数调用实现一系列联动机制。这样的设计不仅让各部分程序变得简明直观,还可将经常用到的功能编写成通用函数以提高执行效率。一个好的抽象必须能表达出“是什么”或者“做什么”,而尽量隐藏“怎么做”,如下页图2所示,將一个镜头组内部繁杂的业务逻辑,最终封装成为一个函数接口,便于主程序调用。此处需说明:Scratch函数目前没有返回值功能,所以借助一条“关机”消息来标识一个镜头组的结束。变量也可以实现,只是于分支中使用会因增加一条命名规则而带来不必要的麻烦。
● 拉开幕布展创意
1.实施方法——展现动画的镜头组合
第一步:新建一个可视化编程空白文档,命名为“总镜头”,即《让我们荡起双桨》这首歌的可视化编程动画总镜头。
第二步:在舞台场景中定义函数,如图3所示,函数中的具体流程与分支镜头相吻合。
第三步:导入各个镜头组的场景和角色,并完成主程序调用。通过主程序将各个镜头组串联,就实现了类似酷狗音乐中“串串动画”的效果。需要注意的是,程序中需要捕获“关机”消息,通过标识变量来控制分支镜头依次调用。总镜头的表演时长(动画时长)以整首歌曲播放的时间为准,该规则仅在主程序中设定即可。
至此,歌曲动画基本已经实现了对各个分支镜头组的自由搭配,其次序灵活,且任意修改或删减其中的镜头不会影响整体的运行状态,即称之为满足于用户多样化的体验需求,进而说明,这种多人参与的模式可行。当然,对于程序中难免出现的一些问题,还需创作团队利用一些常见的测试方法,通过异常处理机制及时加以解决。综上所述,整个制作过程和运行模式呈非线性特点,具体功能实现和效果预览呈线性特点,二者并举,相互依存又相互促进。
2.策略意图——成果多样化
本文的方法是围绕一首歌进行创作,既要紧扣歌曲的主题特色,又要符合歌词的内容大意,这仍然带有“局限性”。其实,学生还可以在完全脱离歌词大意的情况下,随性设计一些有趣的小动画,然后对其进行分类,如生活类、喜剧类、冒险类、科幻类等,最终可选取与歌曲主题相接近的几段拼搭起来作为这首歌的MV,当然,如果选取与主题毫不相关的,甚至完全将歌曲换成诗歌朗诵,也许会另有一番滋味。另外,还可以考虑附加一个统计功能(或借助第三方工具),显示出哪些镜头被调用的次数较多,公布一份“热播排行榜”,评选出一批“优秀设计师”,展才华无穷、示创意无限,充分调动更多学生的好奇心和积极性,让编程成为学生们休闲娱乐的主阵地。
● 结束语
今后,随着社会的发展和科技的进步,当思维与环境不对称的时候,还需灵活调控两种思维方式的平衡,一方面去发现研究过程的非线性特点,一方面用线性的方式去应对。这样的经历才能让学生更好地理解和应用科学知识,掌握科学研究方法,更为深入地理解科技的本质,也能更好地面对生活中的实际问题。