设计代码
这部分是本文的重点,也是精华,希望大家花点心思研究一下。
1.右键单击主场景的第1帧,在弹出菜单中选择“动作”命令,然后在打开的“动作”面板中键入如下代码。这段代码主要是创建一个声音对象和两个全局函数。
// 创建新的Sound对象 mysound = new Sound(); // 把在库中建立链接的声音附加到mySound对象中 mysound.attachSound("music"); // 隐藏动态文本“text1”,使得声音没有播放时“光谱分析器”的条件不满足而不能工作_root.text1._visible = 0; // 使用_global对象来创建全局函数stsrt_fun // stsrt_fun函数的作用是播放声音、显示时间 _global.start_fun = function() { // 播放声音 mysound.start(); // 初始化两个动态文本的内容为“00” _root.text1.text = _root.text2.text = "00"; // 定义fun函数,用来显示时间 function fun() { // Math对象的floor方法返回小于等于指定参数的整数 // Sound对象中的position属性返回声音已播放的毫秒数 // 变量x纪录了声音已经播放的时间 x = Math.floor(mysound.position/1000); // 根据分秒的关系,显示文本的内容 // TextField对象的text属性可以设定文本内容 if (x<10) { _root.text1.text = "00"; _root.text2.text = "0" + x; } else if (x>=10 && x<60) { _root.text1.text = "00"; _root.text2.text = x; } else if (x<600) { if (x%60<10) { _root.text1.text = "0" + Math.floor(x/60); _root.text2.text = "0" + x%60; } else if (x%60>=10) { _root.text1.text = "0" + Math.floor(x/60); _root.text2.text = x%60; } } } // 每隔1000毫秒调用一次fun函数 setInterval(fun, 1000); // 循环播放声音 mysound.onSoundComplete = start_fun; } // 定义全局函数stop_fun,作用是停止播放声音 _global.stop_fun = function() { mysound.stop(); }
2.进入“主元件”的编辑场景。右键单击“主元件”场景中的第1帧,在弹出菜单中选择“动作”命令,在打开的“动作”面板中键入如下代码。这段代码的作用是“music 1”按钮被点击后,如果动态文本没有被隐藏,则跳转到第2帧。
stop(); music1.onRelease =function() { if ( _root.text1._visible == 1 ) { gotoAndStop(2); } }
在打开的“动作”面板中键入如下代码。
右键单击场景中的第2帧,在“动作”面板中键入如下代码。该代码的作用是“music2”按钮被点击后,返回到到第1帧。
stop(); music2.onRelease = function() { gotoAndStop(1); }
3.进入“按钮”影片剪辑元件的编辑场景。右键单击场景中第1帧,在“动作”面板中键入如下代码。这段代码的作用是“bn1”按钮被点击后,显示动态文本,执行start_fun函数,然后跳转到第2帧。
stop(); bn1.onRelease = function() { _root.text1._visible = 1; _root.text2._visible = 1; start_fun(); gotoAndStop(2); }
右键单击场景中的第2帧,在“动作”面板中键入如下代码。该代码的作用是点击“bn2”按钮后,先调用stop_fun函数。接着隐藏两个动态文本并让“mc”实例(即“主元件”)返回其场景的第1帧。最后“按钮”影片剪辑元件也返回到其场景的第1帧停止。
stop(); bn2.onRelease = function() { stop_fun(); _root.text1._visible = 0; _root.text2._visible = 0; _root.mc.gotoAndStop(1); gotoAndStop(1); }
4.打开库,双击“光谱”元件。在其场景中选中“光柱二”元件,按F9键打开“动作”面板,键入如下代码。代码中随机数值的大小可以随意设置。但要注意“光柱二”和“光柱一”元件之间的距离。
// _alpha是影片剪辑的透明度属性 // _yscale属性的作用是使影片剪辑在垂直方向上进行缩放 // Math对象的random方法返回一个大于等于0而小于1的数字。“ramdom(90)”的用法已经不被建议了 onClipEvent (enterFrame) { _alpha = Math.random()*60 + 40; _yscale = Math.random()*90 + 10; }
选中场景中的“光柱一”元件,按F9键打开“动作”面板,键入如下代码。
// _y是影片剪辑的(Y)轴坐标属性 onClipEvent (enterFrame) { _y = -Math.random()*6 - 12; }
好了,整个效果到这里就设计完成了。测试一下,应该会让你自己吃惊不小的。在效果中,读者可以使用电子表中的显示字体,这样,效果看起来就更逼真些。
|