收藏本站 | 站点地图 | 繁體中文
沭阳乐园
您现在的位置: 沐阳乐园 >> 文章中心 >> 网络教程 >> 动画实例 >> 正文
影片剪辑(MovieClip)的属性控制         
影片剪辑(MovieClip)的属性控制
作者:佚名 文章来源:网络 点击数:1449 更新时间:2011-1-4 21:10:08

在Flash中,影片剪辑(MovieClip)是非常重要的,通过控制MC的属性,我们可以实现很多炫目的效果。下面,我们通过实例来研究怎样控制MC的一些最基本的属性。

一、新建一个文件,550*400,背景色#990000,帧频12。

二、建组件:

(1)新建图形元件1,导入米老鼠的图片,名字为mc.wmf

(2)新建影片剪辑元件1,在第一帧拖入米老鼠的图片,菜单--修改--组合,在第5,10帧各插入关键帧,第5帧水平翻转图片。注意在右图中图片在MC中的位置,把X和Y轴的位置设为0。
 

(3)新建按钮元件2,在第一帧画一个白边渐变填充的矩形,用填充变形工具调整颜色的方向,再复制一个矩形,缩小,旋转180度,把二个矩形相加,在第二帧指针经过区适当改变颜色就OK了,如图

三,设置主场景:

(1)第一层中拖入米老鼠的MC,调整好位置和大小,60*80像素,实例名:mc

(2)第二层拖入按钮共六个,在场景的左边从上向下纵向排列,菜单--修改--左对齐--按高度对齐--属性面板中设置大小,位置,依次加上文本:透明,旋转,缩放,可见,数目,重置。

(3)action层中设置代码,

//把mc在x,y轴上的坐标值赋于变量x,y

X = mc._x;

Y = mc._y;

下面我们设置通过键盘上方向键来控制米老鼠的移动。

点击米老鼠的MC,加代码:

//以影片帧频不断地触发此动作

onClipEvent (enterFrame) {

// 如果按下键盘上的向左方向键,实例"mc"左移15px

if (Key.isDown(Key.LEFT)) {

_x -= 15;

}

// 不让实例"mc"跑到按钮区里

if (_x<=100) {

_x = 100;

}

// 如果按下按下键盘上的向右方向键,实例"mc"右移15px

if (Key.isDown(Key.RIGHT)) {

_x += 15;

}

// 不让实例"mc"从场景右面外跑出去

if (_x>=480-_width) {

_x = 480-_width;

}

// 如果按下按下键盘上的向上方向键,实例"mc"上移20px

if (Key.isDown(Key.UP)) {

_y -= 20;

}

// 不让实例"mc"从场景上面外跑出去

if (_y<=30) {

_y = 40;

}

// 如果按下按下键盘上的向下方向键,实例"mc"下移20px

if (Key.isDown(Key.DOWN)) {

_y += 20;

}

// 不让实例"mc"从场景下面外跑出去

if (_y>=360-_height) {

_y = 360-_height;

}

}

接着,我们来设置主场景左侧六个按钮的作用:

透明
// 透明度属性的值减10

// 实例"mc"完全透明时重置透明值为100

on (release) {

mc._alpha -= 10;

if (mc._alpha<0) {

mc._alpha = 100;

}

}

旋转
// 控制实例"mc"顺时针旋转30度

on (release) {

mc._rotation += 30;

}

缩放
// 在水平和垂直方向上按一定比例进行缩放实例

on (release) {

mc._xscale *= 0.6;

mc._yscale *= 0.6;

if (mc._width<10) {

mc._xscale = 60;

mc._yscale = 80;

}

}

可见
// 1是布尔值,动作脚本会在需要时将值 true 和 false 转换为 1 和 0。

on (release) {

mc._visible -= 1;

}

数目
on (release) {

// 如果变量i<3,就加1

if (i<3) {

i++;

}

// 复制mc,新mc的名称为"mc" add i,层深为i

duplicateMovieClip("mc", "mc" add i, i);

// 新复制出的mc的位置X轴左移60,Y轴下移50

this["mc" add i]._x -= i*60;

this["mc" add i]._y += i*50;

}

重置

on (release) {

// 删除被复制出的实例

for (i=1; i<=3; i++) {

removeMovieClip("mc" add i);

}

// 重置实例"mc"的其它属性

mc._alpha = 100;

mc._rotation = 0;

mc._width = 60;

mc._height = 80;

mc._visible = 1;

i = 0;

// 使实例"mc"回到起始状态时的位置

mc._x = X;

mc._Y = Y;

}

四,测试存盘。

五,课后补充

本课的语法是用点语法写的语句,点语法用于表明与对象或影片剪辑相关联的属性或方法。它还用于标识影片剪辑、变量、函数或对象的目标路径。点语法表达式以对象或影片剪辑的名称开始,后面跟着一个点,最后以要指定的元素结束,还是举几个我们常见的例子吧:

首先,设定aa是主场景中的一个影片剪辑。

例一 指令aa开始播放:

_root.aa.play();

例二 一个叫cc的影片剪辑嵌套在叫bb的影片剪辑中,bb又嵌套在aa中,要在主场景中指令cc的透明度为20:

aa.bb.cc._alpha=20;

例三 按下cc中的按钮,指令aa的透明度为20:

on (release) {

_parent._parent._alpha=20;

}

同是控制mc的属性,我们也可以用上堂课中学过的setProperty语句来发出指令,比如上面的例二可以写成下面的语句:

例四 setProperty(_root.aa.bb.cc, _alpha, 20);

例五 当按钮按下时,指令aa在Y轴的位置上每次上移20个像素:

on (release) {

setProperty(_root.aa, _y, getProperty(aa, _y)-20);

}

关于用setProperty语句控制mc的属性问题,有兴趣的朋友可以参考下面的实例。

源文件可到论坛的问题收集专贴中下载

总结:

  一,坐标:首先,请大家打开菜单--查看--标尺。

在本例中,我们研究了怎样设置MC的常用属性及怎样用键盘上的方向键来控制MC在场景中的移动和移动范围,不知您注意过没有,如果你在主场景中随意复制一个图形,然后在电影剪辑中点编辑--粘贴到当前位置,它一定会落在MC的右下方,为什么会这样呢?这里因为主场景的坐标和元件的坐标不同之故,在主场景中,以左上角为0,0,在X轴上,以0为原点,向右为正,向左为负,在Y轴上,以0为原点,向下为正,向上为负;在MC中,默认状态下,十字星位于场景的中间,十字星的坐标是0,0,它将场景分为四个象限,在各个象限上,X,Y轴的正负情况如下表:

左上象限
X为负,Y为负
右上象限
X为正,Y为负
左下象限
X为负,Y为正
右下象限
X为正,Y为正

您在主场景中拷的图形,它的X,Y坐标必然是正值,粘贴到MC中的当前位置时,它只好落在右下象限了,了解了这些,有助于我们正确理解action指令,例如:

if (Key.isDown(Key.UP)) {

_y -= 20;

这句的意思是当按下键盘上的向上方向键时,mc在y轴的数值减去20,我们已经知道了,在y轴上越向下数值越大,减去20,数值变小,mc就会向上移动20个像素了。

同时,了解这些,也有助于我们在MC中操作时参考。

在参考坐标时,我们常用到的工具是标尺、辅助线、网格。  

标尺:在flash中,系统默认的标尺单位是像素,我们可以通过在属性面板上点击“大小”调出文档属性面板,在倒数第二行标尺单位中设置像素。也可以通过菜单--修改--文档,打开文档属性面板。在场景中移动元件时会在X、Y轴上的标尺上显示几条线指示元件在场景中的位置。

网格:菜单--查看--网格--对齐网格,选取此项后,我们在场景中绘制的图形其边缘有自动吸咐到网格上的趋势,在编辑网格中可以设置对齐的精度,有必须接近、正常、可以远离、总是对齐四个选择。

辅助线:辅助线只出现在设置时的场景中;锁定辅助线,选择此项后,拖到在场景中的辅助线松手后就不能再移动,鼠标放上去旁边也不会出现  小黑三角和线段;对齐辅助线的功能同网格近似,但在当辅助线处于网格线之间时,对齐辅助线优先于对齐网格。

在指示元件位置的时候,我们可以利用属性面板和信息面板来查看并改变元件的位置。

本例中的部分代码简表:

名称
意义
_x 设置影片X 坐标的整数,该坐标相对于父级影片剪辑的本地坐标
_y 设置MC的y轴的位置。
if 对条件进行计算以确定影片中的下一步动作。如果条件为 true,则 Flash 将运行条件后面花括号 ({}) 内的语句。如果条件为 false,则 Flash 跳过花括号内的语句,运行花括号后面的语句。
+= x+= y ,将 x值加上 y 值赋予 x。
<= x<=y,比较两个表达式以确定 x 是否小于等于y;如果是,则该运算符返回 true。如果 x 大于 y,则该运算符返回 false。
i++

x++:预先递减格式, 将x 加 1 并返回 x的初始值(即加上 1 之前的值)。

= i=i+1,将位于右侧的参数的类型赋予左边的变量、数组元素或属性。
this 引用对象或影片剪辑实例
-= 减法赋值,用符号左边的变量减去右边的变量再赋值给左边的变量。
变量 变量是保存信息的容器。变量可以存储任何类型的数据:数字、字符串、布尔值、对象或影片剪辑。

知识发散:

除了上面介绍的几个MC常用属性外,我们再用列表的形式列出另外的几个属性:

名称
作用
示例
_currentframe 返回影片当前正在播放影帧的帧数,可以实现影片的前进和后退。 on(release) {

car.gotoAndStop(_currentframe + 5);

}

_framesloaded 纪录载入影片的帧数,用来控制影片正在下载,直到下载结束的显示。 if (_framesloaded >= _totalframes) {

gotoAndPlay ("scene 1", "start");

} else {

_root.loader._xscale = (_framesloaded/_totalframes) * 100);

}

_target 返回指定影片剪辑实例的目标路径 on (release) {

n = mouse._target;

trace(n);

}

_url 获取下载影片剪辑的SWF文件的URL on (release) {

path = swf._url;

trace (path);

}

_focusrect 指定当影片剪辑具有键盘焦点时其周围是否有黄色矩形 "mybutton._focusrect = true;"
_quality 控制影片的播放品质 on (release) {

_quality = "HIGH";

}

_droptarget 将返回值从斜杠语法转换为点语法表示的引用,右面的例子,判断影片实体garbage被放置的位置是不是和场景中的实体trash一致,如果是,则隐藏影片实体garbage,否则将影片实体garbage的X(Y)轴坐标值用变量x_pos的值来赋值

if (eval(garbage._droptarget) == _root.trash) {

garbage._visible = false;

} else {

garbage._x = x_pos;

garbage._y = y_pos;

}

变量x_pos和y_pos在影片的第一帧上设置:

x_pos = garbage._x;

y_pos = garbage._y;

文章录入:晴天    责任编辑:清水洗尘 
  • 上一篇文章:
  • 下一篇文章:
  • 【字体: 】 【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
    广告招商
    网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)
    ::发表评论::
     姓 名:
     评 分: 1分 2分 3分 4分 5分
     评论内容:
  • 严禁发表危害国家安全、政治、黄色淫秽等内容的评论。
  • 用户需对自己在使用本网服务过程中的行为承担法律责任。
  • 本站管理员有权保留或删除评论内容。
  • 评论内容只代表网友个人观点,与本网站立场无关。
  • 广告招商
    文章 下载 图片 文字广告
    | 设为首页 | 加入收藏 | 联系站长 | 友情链接 | 版权申明 | 网站公告 | 管理登陆

    备案/许可证编号: 闽ICP备16020960号-1号 域名创建于2016年8月
    版权: 沐阳乐园 All Rights Reserved 站长:张萍 邮箱:381415887@qq.com 联系QQ:联系站长