350 likes | 517 Views
第七章 动作脚本进阶. 主讲:王玉姝. MovieClip (电影剪辑)控制. 1 . MC 属性控制 ( 1 ) MC 属性简介 _alpha : 电影剪辑实例的透明度。有效值为 0 (完全透明)到 100 (完全不透明)。 _rotation : 电影剪辑的旋转角度(以度为单位)。从 0 到 180 的值表示顺时针旋转,从 0 到 -180 的值表示逆时针旋转。.
E N D
第七章 动作脚本进阶 主讲:王玉姝
MovieClip(电影剪辑)控制 1.MC属性控制 (1)MC属性简介 • _alpha:电影剪辑实例的透明度。有效值为 0(完全透明)到100(完全不透明)。 • _rotation:电影剪辑的旋转角度(以度为单位)。从0到180的值表示顺时针旋转,从0到-180的值表示逆时针旋转。
_visible:确定电景剪辑的可见性,当MC的_visible的值是True(或者为1)时,MC为可见;当MC的_visible的值是false(或者为0)时,MC为不可见。_visible:确定电景剪辑的可见性,当MC的_visible的值是True(或者为1)时,MC为可见;当MC的_visible的值是false(或者为0)时,MC为不可见。 • _height:影片剪辑的高度(像素为单位)。 • _width:影片剪辑的宽度(像素为单位)。
_xscale:影片剪辑的水平缩放比例。 • _yscale:影片剪辑的垂直缩放比例。 • 当_xscale和_yscale的值在0~100之间,是缩小影片剪辑百分数;当_xscale和_yscale的值大于100时,是放大原影片剪辑;当_xscale或_yscale为负时,水平或垂直翻转原影片剪辑并进行缩放。
不要把影片剪辑的高度与垂直缩放比例混淆,也不要把影片剪辑的宽度与水平缩放比例混为一谈,例如:不要把影片剪辑的高度与垂直缩放比例混淆,也不要把影片剪辑的宽度与水平缩放比例混为一谈,例如: • MC._width=50//表示把MC的宽设置为50像素; • MC._xscale=50//表示把MC的水平宽度设置为原来水平宽度的50%。 • _x:影片剪辑的x坐标(整数)。 • _y:电景剪辑的y坐标(整数)。
(2)getProperty()setProperty()命令 • 这两个命令在【动作】面板中【全局函数】|【影片剪辑控制】类别下。 • setProperty()命令用来设置MC的属性,它的一般使用形式为: • setProperty(目标,属性,值);
命令中有三个参数: • 目标:就是要控制(设置)属性的MC的实例名,注意包括MC的位置(路径)。 • 属性:即要控制的何种属性,例如透明度、可见性、放大比例等。 • 值:属性对应的值,包括数值、布尔值等。 • 例如: • setProperty(“_root.mc.mc1”,_visible, false);//表示把影片mc下一个实例名为mc1的影片设置为不可见。
setProperty("_root.dm",_rotation,30);//表示要使实例名叫dm的影片剪辑转动30度。setProperty("_root.dm",_rotation,30);//表示要使实例名叫dm的影片剪辑转动30度。 • getProperty()命令用来获取MC的属性,它的一般使用形式为: • getProperty(目标,属性); • 命令中有两个参数: • 目标:被取属性的MC实例的名称; • 属性:要取得的MC的属性。
(3)使用点语法存取属性值 可以用“.”点语法来设置或取得MC的属性 • 影片剪辑名称.属性=属性值。 例子: • setProperty(“_root.mc.mc1”,_visible, false); • 可以写成: • _root.mc.mc1._visible=false; • setProperty("_root.dm",_rotation,30);
可以写成: • _root.dm._rotation=30; • mx= getProperty(“_root.mc.mc1”,_x); • 可以写成: • mx= _root.mc.mc1._x; • setProperty("_root.dm1",_y, getProperty("_root.dm0",_y)); • 可以改写成两句: • my=_root.dm0._y; • _root.dm1._y=my;
(4)MC属性控制实例 步骤1 创建元件 • 新建一个名字为“蝴蝶”的影片剪辑元件。拖放在场景的中心位置。 步骤2 布局场景 • 返回到主场景,将【图层1】重新命名为“背景”,将一个背景图像导入。 • 新建图层,命名为“蝴蝶”。拖出“蝴蝶”影片剪辑元件,在【属性】面板中命名为x1。
添加图层,命名为“动态文本”。在第1帧建两个动态文本,在【属性】面板中定义它们的变量名为zb和hw。添加图层,命名为“动态文本”。在第1帧建两个动态文本,在【属性】面板中定义它们的变量名为zb和hw。 • 新增一个图层,并命名为“按扭”。在这个图层上,从【库】面板中拖出17个按扭实例 ,在每个按钮下添加相应的静态文本加以说明。
步骤3 定义动作脚本 • 选中“可见”按扭,定义它的动作脚本为: on (press) { x1._visible=1;//也可以写成:x1._visible=true } • 其他按钮脚本详见书上
键盘控制 1.键盘对象的方法详解 Key对象包括以下6种常用的方法: (1)Key.getAscii() 语法:Key.getAscii(); 功能:返回最近被按下或松开的按键所代表的ASCII值。 • 通过Key.getAscii()方法可精确地传回字符值。当键盘上有键被按下时,该按键会对应到一个ASCII码,
(2)key.getCode() 语法:key.getCode(); 功能:返回最近被按下或松开的按键的对应码。 用户只想知道是否按下某个键而不理会它的ASCII值,key.getCode()最适合用。Flash替每个按键都赋予一个码,例如,按键A的对应码是65,按键Shift的对应码是16。key.getCode()的返回值就是这些按键的对应码。
Flash事先定义了一组常量(Key对象的属性)来存储一些常用键按键的对应码,书上 表7-2-1所示。 (3)key.isDown() 语法:key.isDown(keyCode); 功能:侦测键盘上指定的按键是否被按下,如果返回值为true则表示被按下。
4)key.isToggled() 语法:key.isToggled(keyCode); 功能:侦测键盘上的Caps Lock或Num Lock的指示灯是否亮着。 例如: onClipEvent(enterFrame){ if(key.isToggled(144){ this.stop(); } }键盘上的Num Lock指示灯是亮着时,影片对象动画停止。
(5)key.addListener() 语法:key.addListener(实例名); 功能:将某个对象赋予响应按键事件功能,实例名可以是指定的按钮、影片剪辑(包括_root)、文字字段甚至是自定义对象的实例名称。 自定义对象和文字字段对象等,可以用key.addListener()方法,赋予它们接收和处理按键信息的能力。Key对象提供onKeyDown和onKeyUp两个事件处理程序,让通过key.addListener()方法指定响应Key事件的实例使用。
(6)key.removeListener() 语法:key.removeListener(实例名); 功能:取消指定实例响应Key事件的功能。
2.键盘控制实例1——用空格键控制白兔的跑动2.键盘控制实例1——用空格键控制白兔的跑动 (1)创建影片界面 步骤1 创建影片文档 • 新建一个影片文档,设置舞台尺寸为 步骤2 创建背景 • 从外部导入一幅背景图像将【图层1】重新命名为“背景”,调整背景的大小,与舞台尺寸相匹配。
2)制作MC元件 步骤1 制作白兔MC • 新建一个为“tutu”的影片剪辑元件。在这个MC元件绘制一只白兔图形,定义关键帧实现了白兔眼睛和耳朵的动画。 步骤2 制作移动的白兔MC • 新建一个为“tutu_run”的影片剪辑元件。将【库】面板中的“tutu”MC元件拖放到场景中间,然后创建白兔移动的动作补间动画。
(3)定义动作脚本 步骤1 布局元件 • 返回到【场景1】,新建一个图层,并将这个图层,命名为“白兔跑动”。将【库】中的“tutu_run”影片剪辑元件放到舞台的右边。 • 定义“tutu_run”实例 脚本。参见书上
键盘控制实例2——用左右方向键控制白兔移动键盘控制实例2——用左右方向键控制白兔移动 • 在实例1的基础上制作实例2 • 从 “ 实例1”源文件的 库 中,将“tutu”元件导入到当前文件的库 中,得到一个白兔C 元件。 • 新建一个图层,并重新命名为 “白兔 ”。将【库】面板中的白兔MC元件拖放到舞台的合适位置。 • 选择这 个白兔MC 实 例,在【属性】面板中定 义它的名称为“tuL ”。 • 复 制 并 翻 转 白 兔 MC 元件 • 选择舞台上的白兔MC实例,复制它,选中复制出 来的白兔,执行【修改】【 变 形】 |【水平翻 转 】命令,将它水平翻转 。
选择这个翻转得到的白兔实例,在【属性】面板中定义它的名称为“tuR ”。 ( 3)定义动作脚本 • 选择名字为“tuL”的白兔实例,在【动 作】面板中定义它的动作脚本为: onClipEvent (load) { movie_x = this._x; _ root.tuR._visible = false; • }
onClipEvent (keyDown) { • if (Key.isDown(Key.LEFT)) { • movie_x -= 10; • this._x = movie_x; • this._visible = true; • _root.tuR._visible = false; • } • } • 其它代码参看教材
第三节 声音控制和智能动画片断 1 .滑杆控制声音音量 • 在动画作品中,音量控制是非常常见 的,制作方法有很多。下面我们制作一个实例,采用一种很逼真的“ 滑杆控制器” 。 • 本例涉及到【库 】操作中的一个高级应用:元件的 “捆绑” 使用技 术 。 (1)关于“ 滑杆控制器 ” • 打开【窗口】 | 【其他面板】|【公用库 】菜 单,在菜单中有一个【按钮】项,单击它,弹出 “按钮 公用库 ”。 • 在【库-按钮】面板中,选择其中的【fader-ixer】影片剪辑,并把它拖到场景中。
看看“fader-mixer”实例的内部结构,建议你 打开一个新文档,把“fader-mixer” 拖进“场景”。 • 进入“ fader-mixer”的编辑界面,我们看到一个名叫“Fader”的MC,选择它,打开【动作】面板, 这是“Fader” 的运行代 码,代码的意思是,当这 个MC运行时: • 把它的“y轴”坐标值赋给变量 “ inity ” ; • 把它的“ x轴 ” 坐标值赋给变量 “ left ” ; • 把它的“ x轴 ” 坐标值赋给变量 “ right ” ; • 把它的“ y轴 ” 坐标值赋给变量 “ top ” ; • 把它的“ y轴 ” 坐标值“加100 ”赋给变量 “bottom”; 以上代 码不用自己编写,它是Flash随“滑杆控制器 ” MC一同提供给用户的,在实际应用时必不可少。
本例在使用这个“滑杆控制器”MC 时,需要提醒 你注意的有2条:一是为了使“Fader”被拉动时保 证仅 限于上、下动,左右不动,所以把 “x轴 ”座 标值同时赋予变量“left ”和“right” ;二是为了使“Fader”拉动到“顶部”或“底部”时更“到位”所以要在原来的“坐标值 ”上加“100 ”,“100 ”是“Fader”的高度。
( 2) 关 于 链 接 声 音 • 让这个MC 组件为音量控制服务。要达到这个目的有一个困难:音乐是个特殊的元件,它的实例 应用一般通过“帧属性”设置,这样显然不能使滑杆控制” 与其联系起来,所以,我们先得把音乐 “实例化”,使音乐成为“舞台”中的一个对象。 • 打开源文件:“滑杆控制 .fla ”,从【 库 】中找到音乐元件,用鼠标右键单击它。在 弹 出的菜单中选择【链接】,打开【链接属性】 对话框,设置输入音乐的实例名为 “mysound” ,并 选择【链接】为【为动作脚本导出】和【在第一 帧导出】。
(3)将声音实例和“ 滑杆控制器” 联系起来 • 需把“mysound”与 “滑杆控制器”联系起来就完成任务了,这种联系是通过几段并不复杂的代码进 行的,在讲解这些代码前,请熟悉一下其中主要几个指令的含义 : • und.attachSound("idName") • 是一个Flash的“方法” ,它将名为“idName” 的声 音附加(捆绑)到指定的音乐对象,在本例中,我们已经命名为 “mysound” 。 • und.start([secondOffset, loop]) • 这条指令能使前一条指令立即生效,即播放音 乐 。 其中 “secondOffset” 是一个可选参数,使 可以从某个指定时间播放声音, “loop ” 是一个 可选参数,指定声音连续 播放的次 数 。
und.setVolume(volume) • 这条指令用来设置音乐对象的音量 。 “volume ” 是一个从 “ 0 ” 到 “100” 之间的数字,表示声音级别。 “100” 为最大音量,而“0”为没有音量。 • und.getVolume() • 这条命令与上一指令相反,它为返回音量 级别,也是一个从 “ 0”到“ 100 ” 之间的整数。 • getProperty(instancename , property) • 是获取MC的某种属性,“instancename ” 为MC的实例名称 。