• 思缘论坛首页
  • 论坛搜索
  • 下载记录
  • 每日签到
  • 设计软件,PS下载
  • VIP素材区预览
  • VIP素材区下载
  • 缘分币充值
发新话题
打印

[精彩实例] FLASH实例教程:MC的属性控制

FLASH实例教程:MC的属性控制

千库网
FLASH实例教程:MC的属性控制

先看看效果图

源文件下载:

本帖隐藏的内容需要回复才可以浏览


素材下载:

本帖隐藏的内容需要回复才可以浏览


      在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 谢谢您的支持,辛苦了. 2008-4-14 17:38
包图网

TOP

我怎么就不能发贴呢

TOP

教程刚刚编排完成,文件刚传成功,可以下载了

TOP

哎..
莪这机子被人锁死.不能下载..
晕痹了~!

TOP

学习学习学习学习学习

TOP

看看 学习!~

TOP

回贴才能看啊!

TOP

学习学习了。

TOP

根本下载不下来

TOP

很重要的东西啊

TOP

发新话题

关于本站 广告服务 联系我们 版权隐私 合作站点 网站地图 免责申明 管理团队

Powered by Discuz Copyright © 2005-2019 www.MissYuan.com All rights reserved.