一聚教程网:一个值得你收藏的教程网站

最新下载

热门教程

flash制作旋转花朵

时间:2022-07-02 17:11:31 编辑:袖梨 来源:一聚教程网

本课中的内容涉及:函数定义,
for...in 语句, .onEnterFrame 三个关键内容

函数的作用是实现代码的重用,配合for...in语句可批量赋予函数.

望初学者仔细阅读

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

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

var F1:Function =
function () {

this.startDrag(true);

};

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)

热门栏目