当前位置: 首页 > 图文教程 > Flash动画 > Flash动画制作 > Flash教程:旋转花朵效果的制作

Flash动画制作
Flash 3d效果精彩实例(5)
贺新年 制作五彩缤纷焰火动画
FlashMX2004中的XML应用之原理篇
制作一个骄艳的鲜花情人Flash贺卡
有趣 用Flash制作互动的小人
Flash制作鸡年新春动画贺卡
Flash MX 2004 UI组件系列教程(3)
Flash加载外部文件(5)
Flash MX 2004 UI组件系列教程(4)
Flash加载外部文件(2)
Flash加载外部文件(3)
一个最简便的代码实现任意数字和0的来回跳转
让Flash课件中测试题信手拈来
MX中如何实现swf文件的完美跳转
三分钟理解Flash中的级别关系
flash与ASP通信的几种方法
flashMX2004视频插件的应用教程
如何做好一个多人配合的flash项目
AS计算方面的错误
如何防止SWF文件被反编译

Flash动画制作 中的 Flash教程:旋转花朵效果的制作


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-11-22   浏览: 216 ::
收藏到网摘: n/a

效果演示:

本课中的内容涉及:函数定义, for...in 语句, .onEnterFrame 三个关键内容,函数的作用是实现代码的重用,配合for...in语句可批量赋予函数.望初学者仔细阅读.

思路:
1.使用for...in语句遍历整个主场景(_root)中所有的对象;
2.找到他们(如_root[k]),并为他们的不同方法指定不同函数;

步骤1:
在主场景放入若干个影片剪辑,不需要为他们起实例名。

步骤2:
加入AS代码:

var F1:Function = function () {
 this.startDrag(false);
};
var F2:Function = function () {
 this.stopDrag();
};
var F3:Function = function () {
 this._rotation += this.speed;
};
//定义三个函数:
// F1完成对象开始拖拽功能;
// F2完成对象停止拖拽功能;
// F3完成对象自转功能,速度为每个对象各自的speed*/
for (var k in _root) {
 _root[k].speed = random(20);
 _root[k].onPress = F1;
 _root[k].onRelease = F2;
 _root[k].onEnterFrame = F3;
}
//遍历主场景,为每个MC设置speed属性及onPress,onRelease.onEnterFrame方法。

Flash充电1:

两种定义函数的方法

(1)函数语句定义法:如

function Testadd(a, b) {
 return a+b;
}

 

(2)函数表达式定义法:如

var Testadd:Function = function (a, b) {
 return a+b;
};

 

平时,应当尽量使用函数语句定义[方法1],这种定义方法更加标准,也更简捷。

区别:方法2,需要先定义、后调用;方法1,可以先调用,后写定义。

Flash充电2:

for...in 用来枚举一个集合中所有的元素,多用于遍历(检索)如:XML,数组,Object甚至_root或MC等等,功能非常强大。本课中,我们用它来遍历整个_root。

例1:
var Car = {brand:"M6", color:"red", engine:2000};
for (var k in Car) {
 trace(k+"="+Car[k]);
}

// 输出结果:
//  brand=M6
//  color=red
//  engine=2000

例2:

//首先,在主场景中放入四个影片剪辑
for (var k in _root) {
trace(_root[k]);
}

//输出结果:
//_level0.instance4
//_level0.instance3
//_level0.instance2
//_level0.instance1

我们注意到,即使不给_root中的MC命名,FLASH编译器也自动为MC命名的,前面的_level10指该元件的深度为10.

Flash充电3:

onEnterFrame

(1) onEnterFrame是AS动画和游戏制作的灵魂。
(2) 当我们在主场景第一帧写入onEnterFrame=function(){...}时,实际上Flash编译器会自动在前面加上_root变为_root.onEnterFrame。
(3)重要:MovieClip.onEnterFrame=function(){...}形式。这种形式可以让MC独立地运行onEnterFrame。例:
//首先主场景上有三个影片剪辑,实例名分别为MC1,MC2,MC3。//
MC1.speed = random(10);
MC2.speed = random(10);
MC3.speed = random(10);
MC1.onEnterFrame = function() {
MC1._rotation += MC1.speed;
};
MC2.onEnterFrame = function() {
MC2._rotation += MC2.speed;
};
MC3.onEnterFrame = function() {
MC3._rotation += MC3.speed;
};

试想一下如果场景有100个这样MC那么写代码的过程是不是太痛苦了啊...呵呵...我们看看下面一种写法:
function F1() {
this._rotation += this.speed;
}
for (var k in _root) {
_root[k].speed = random(10);
_root[k].onEnterFrame = F1;
}

完成的功能相当于:
MC1.speed = random(10);
MC1.onEnterFrame = function() {
this._rotation += this.speed;
};

函数中this指:调用该函数的对象(MC1)