对教程网越来越有感情,由喜欢慢慢变成了爱。虽然付出了很多,也很辛苦,可是它带给我更多的是快乐,希望会有越来越多的人喜欢并且爱上这里!

(转)Flash教程:旋转花朵效果的制作[本文已收录教程库]

上一篇 / 下一篇  2007-12-13 14:08:28 / 个人分类:flash教程

查看( 151 ) / 评论( 7 )
先看下最终效果:中国教程网--个人空间6gIi:Pk

r e2Bx,I2t/@i0
k!f cQ$\"}2\ EP0
fSAs$ME0本课中的内容涉及:函数定义, for...in 语句, .onEnterFrame. 三个关键内容,函数的作用是实现代码的重用,配合for...in语句可批量赋予函数.望初学者仔细阅读.
YJ KF2i+cj a+y%F+x0
J"V8C8JB-^N#])G6z0思路:
[$u:@)?S(A"N01.使用for...in语句遍历整个主场景(_root)中所有的对象;中国教程网--个人空间,].zy9mRj
2.找到他们(如_root[k]),并为他们的不同方法指定不同函数;
2T#{3Q W ` W0中国教程网--个人空间"m4|I"ncBcQ[Hf
步骤1:
7I8CA6nG|$] H0b0NK0    在主场景放入若干个影片剪辑,不需要为他们起实例名。
.X;lP}[ l0步骤2:加入AS代码:中国教程网--个人空间w'm"u&n3D:v-Av
中国教程网--个人空间.gE xL3D8s
var F1:Function = function () {中国教程网--个人空间e h8n/z+s&`#N
this.startDrag(false);
;P)rhVL GG0};
7P*n @&K`5Z'v0var F2:Function = function () {中国教程网--个人空间9Q.j4_0lN
this.stopDrag();
{c`W;n0};
r R:Mm[#\VGgH3R0var F3:Function = function () {
4n%k:{;S5M0this._rotation += this.speed;
X+Z3plQ0};中国教程网--个人空间SyDb)\7I b
//定义三个函数:中国教程网--个人空间'ehbwU0[[
// F1完成对象开始拖拽功能;中国教程网--个人空间1`M;l:K`I#S-z
// F2完成对象停止拖拽功能;
6P!Qh0@E7hr_X'w0// F3完成对象自转功能,速度为每个对象各自的speed*/
(s8m0a%Gg/yT0for (var k in _root) {
b:zy ad.|^0_root[k].speed = random(20);
3Dq~B"tj*p(q0_root[k].onPress = F1;中国教程网--个人空间 Y/F'hO n~:jt
_root[k].onRelease = F2;中国教程网--个人空间2PkQ{N:Qm| ^
_root[k].onEnterFrame. = F3;中国教程网--个人空间EKI+P`q,o.R
}中国教程网--个人空间 m#A$d OavH
//遍历主场景,为每个MC设置speed属性及onPress,onRelease.onEnterFrame方法。
c!TqoSDUT0中国教程网--个人空间O9\3gsbv
Flash充电1:两种定义函数的方法
WBE.L_w0(1)函数语句定义法:如中国教程网--个人空间"o R k]p4Ck NR
中国教程网--个人空间 P2V&y.`'I8U+nmf
function Testadd(a, b) {
A([:F%`U0return a+b;中国教程网--个人空间4f:U qy]Tt$E
}
Nt9|m8s4Y)H8z0(2)函数表达式定义法:如中国教程网--个人空间#cSGOO h

uz@S:EZ"_3I0var Testadd:Function = function (a, b) {中国教程网--个人空间0g0iU(Po])u
return a+b;
u5V AyV.yO)l y0};
a'GVByy9\0平时,应当尽量使用函数语句定义[方法1],这种定义方法更加标准,也更简捷。区别:方法2,需要先定义、后调用;方法1,可以先调用,后写定义。
~4S`8Z0O0Flash充电2:for...in 用来枚举一个集合中所有的元素,多用于遍历(检索)如:XML,数组,Object甚至_root或MC等等,功能非常强大。本课中,我们用它来遍历整个_root。
/NEI%fn\{0SL0例1:中国教程网--个人空间b(Zx/](IJ{N
var Car = {brand:"M6", color:"red", engine:2000};
:V W3E]3N t0for (var k in Car) {中国教程网--个人空间9c,f1c7l py!u6L
trace(k+"="+Car[k]);
6z"D[1y n"D_&i;H Q0}中国教程网--个人空间8w`Ix@

,F)Xt/EXpZ9l0j0// 输出结果:
l_][ ~-vJ2[`0//  brand=M6中国教程网--个人空间:\[k5YY;}Z#Ug|
//  color=red
I9|'V#LH0//  engine=2000中国教程网--个人空间 N+eEUm;T X`y(i{
中国教程网--个人空间p8xTtd(QFq6N
例2:中国教程网--个人空间S0E7_%xHk~P {
//首先,在主场景中放入四个影片剪辑
A r|2V-g;^#x0for (var k in _root) {
zDo4Y8ti|.T} t0trace(_root[k]);
8yw d+S;tB+b0}
p/Lr+TIe?(lrb9P7`0中国教程网--个人空间,D9VN.H7^ |&w\ la_
//输出结果:中国教程网--个人空间 k#a ?#DO!A}P7FN"m
//_level0.instance4中国教程网--个人空间9Bw"q pj3I)I7t:`
//_level0.instance3
/[0C;T%}"\a0//_level0.instance2
z$Gu$c3e0//_level0.instance1中国教程网--个人空间@3`9W:D Os4q [&^
中国教程网--个人空间4HZ-F,G [1brs
我们注意到,即使不给_root中的MC命名,FLASH编译器也自动为MC命名的,前面的_level10指该元件的深度为10.
i#Vtc%Nm0中国教程网--个人空间%i eD$MS e/w uC
Flash充电3: .onEnterFrame中国教程网--个人空间2`RLI `&}@@
(1) onEnterFrame是AS动画和游戏制作的灵魂。
)e{*pt3}l+J0(2) 当我们在主场景第一帧写入onEnterFrame=function(){...}时,实际上Flash编译器会自动在前面加上_root变为_root.onEnterFrame。中国教程网--个人空间U+gr8Hn*Z.]bu
(3)重要:MovieClip.onEnterFrame=function(){...}形式。这种形式可以让MC独立地运行onEnterFrame。例:中国教程网--个人空间 M8rz"dPa)b'P
中国教程网--个人空间*Xk z;K [@5}T;v*h'G
//首先主场景上有三个影片剪辑,实例名分别为MC1,MC2,MC3。//中国教程网--个人空间O ByOv$D3d
MC1.speed = random(10);
ws,j9@?6H;ZS,JIU9[0MC2.speed = random(10);
(_ V jn/gj+MJ0MC3.speed = random(10);中国教程网--个人空间 TPI7Q(|!|1D?7t g'[d
MC1.onEnterFrame. = function() {
S.c)DL8U[0MC1._rotation += MC1.speed;中国教程网--个人空间9p4R/~~1lq'TKd
};中国教程网--个人空间0] V JVX~
MC2.onEnterFrame. = function() {中国教程网--个人空间\;j-MzR:e
MC2._rotation += MC2.speed;中国教程网--个人空间]2?L2d UT6L K)YP
};
)h#R0}Zx G,CT0MC3.onEnterFrame. = function() {中国教程网--个人空间$g tyk R
MC3._rotation += MC3.speed;中国教程网--个人空间${4D;s)lYs
};
/t-ywG'Ol8x0试想一下如果场景有100个这样MC那么写代码的过程是不是太痛苦了啊...呵呵...我们看看下面一种写法:中国教程网--个人空间k)zm3_%f.~v

a"t/L0|Q}0function F1() {中国教程网--个人空间p]^7X,cF
this._rotation += this.speed;
)XsV.V;XV4m&Bi0X0}
!x.nsd@ Xz0for (var k in _root) {
TXy x/R'\/S0_root[k].speed = random(10);
'H \mF6oW |]0_root[k].onEnterFrame. = F1;中国教程网--个人空间/O4aswl(F){9Cf3w
}
kRd z;n5A_T0完成的功能相当于:
"E,_9S5qw4c1w"y4s/vs0
1RO)H a8u!n0MC1.speed = random(10);中国教程网--个人空间4e!K}$Qa:YIK
MC1.onEnterFrame. = function() {中国教程网--个人空间'sBpJx
this._rotation += this.speed;中国教程网--个人空间5B0T&oB.J^$i w Gu:C+{c
};
#i ^)p g7_&Cy6m0函数中this指:调用该函数的对象(MC1)
%bda7F*Md0中国教程网--个人空间/Bnv8Lz}8F2g

旋转花朵.swf
0J|T6oj@0(2007-12-13 14:02:01, Size: 31.2 KB, Downloads: 3)中国教程网--个人空间#wj \~ R C_


TAG:

塵封記憶 清风掠影 发布于2007-12-13 14:08:00
#@#$*& 好多教程喔~什么时候才看得完~#@#$@!
txwh2006发布于2007-12-13 14:39:01
很好的教程,谢谢。
wangzh300发布于2007-12-13 15:12:17
(^#@#@ 应用范伟说过的3个字“谢谢啊”(^#@#@
玩世不恭发布于2007-12-25 21:57:24
#@#$*& 人才,人才啊,“谢谢啊”
红岩梦幻数码的个人空间 红岩梦幻数码 发布于2007-12-25 22:04:28
真的很漂亮
三只小熊的个人空间 三只小熊 发布于2007-12-26 13:14:07
好教程不能沉了~顶上去~
YJLandLSH的小窝 flasheryjl 发布于2007-12-26 13:32:40
不错啊~~
我来说两句

(可选)

Open Toolbar