找回密码
 入住遨海湾
搜索
网站解决方案专享优惠-3折上云
查看: 1110|回复: 2

土人AS入门系列汇总

[复制链接]
发表于 2004-12-16 17:49:00 | 显示全部楼层 |阅读模式

登录后查才能浏览下载更多咨询,有问题联系QQ:3283999

您需要 登录 才可以下载或查看,没有账号?入住遨海湾

×
我写的这些教程,目的是希望初学Flash的爱好者们能, i! x1 p$ \" a0 \ t+ F 多动手,少提问 9 Q( k6 W- @4 _/ H$ H4 X。我下面这些教程面象有 Flash(MX) 基础操作知识的读者。 , H t' V) x; u) X* e7 t! QAS基础 , i6 {/ W2 H: G4 y, O1 B----------------------------------- 9 B+ M. e7 }1 b8 C. `: F做过Flash动画的Flash爱好者们都知道,要做好一个Flash动画,AS是必不可少的,即使只是很简单的几句代码也能起到整个Flash画龙点睛的作用。这里我只简单的介绍一下AS的基本常识。 t k2 V" s- y6 P" W 首先我们要了解AS要写在什么地方,什么时候AS会被触发执行。 1 S- H+ V, J& N" C1、帧: * R" b5 Y" t: M+ B& O写在关键帧上面的AS,当时间轴上的指针走到这个关键帧的时候,就写在这个帧上面的AS就被触发执行了。常见的例子有在影片结尾的帧写上 stop() 等。操作方法就是点选关键帧,然后打开AS面板。 1 q# N" f* M8 U2、按钮:% v# s) x% e/ W5 l$ m n 不同于帧上面的AS,按钮上面的AS是要有触发条件的。要把AS写在按钮上,操作方法是点选目标按钮,然后打开AS面板。举个例子能说的更明白。+ q9 Q4 }, w9 v 假设有一个动画,要让它在播放完同时停止,那么,你要做的就是在这个动画的最后一帧写AS4 T6 X7 B5 g* }1 m% ^ stop(); 6 Q! X2 U. P: D. a再假设有个按钮,效果是按下按钮后停止播放,那么步骤如下。+ P) I K; Z' E0 j- ~1 V8 J G 做一个按钮,放到主场景,点选按钮,然后打开AS面板。现在如果也在按钮上写. i1 b( p; T4 O% r5 ] stop();: a# s9 c3 x9 Z0 R 那么,输出的时候就会提示错误。正确的应该这样写 : A- t+ L5 A6 `on(# a* _: E6 ^1 R release : M/ I! M) W' \0 a1 l* h){ N9 B8 _9 z1 lstop(); $ Y% I Y, \8 \}: o0 k) q' h, t5 B g 这里要比帧的动画多这些代码: on(release){} , 整个代码翻译过来就是: T# ^' E, X+ H. U7 | 当(松开){ / S7 {; l) G. e; e/ F& Q" L停止- w1 a+ F' H; g+ N' u2 ]4 k }, v% @6 I7 I) ^4 v* K) v- s3 o G 红色的代码表示鼠标的触发事件事件之一,这里用的是 release 松开,按钮的常用事件: * B9 z9 ]9 ]" i5 o# N. Crelease 松开5 B; m- o( v/ {; A0 J releaseOutside 在按钮外面松开 E o) p+ I* w/ b# J8 ~press 按下' z; m# S1 Q }; l9 v2 q: | rollOver 鼠标进入按钮的感应区/ `: z% H" L/ W2 l rollOut 鼠标离开按钮的感应区 1 Z) S1 w7 G9 C2 U; X4 o: m现在很明确了:写在按钮上面的AS一定就是这种格式的: 8 T5 m) s4 X" L" Bon(事件){要执行的代码} % g9 j* M3 C, h* }. v3、MC(电影剪辑). l' r1 n3 L3 ? 如果你看懂了上面的内容,那么写在MC上面的AS和写在按钮上的大同小异。操作方法就是点选MC,然后打开AS面板。看个例子 ; M7 R; v( }% g5 H- h7 zonClipEvent( 8 E5 U& O: A9 |: |load3 [8 r2 [' T7 Q R* i ){ : N7 M: @ G4 dstop();: q2 P) K8 F0 o% Z; ^ } , w, \& @+ R5 U同样,MC需要一个事件来触发AS的执行。翻译这段代码就是) T8 V4 f, `. b) y' |, {6 n 当剪辑(载入){6 _) D( O5 R9 t# m2 M# b) q5 O 停止2 @ v8 j, v" i) B }2 \; h* \& [% \ 红色代码同样表示一个事件。MC的事件有下面这些:# y C, i, a% c& U7 ]5 {- I2 h load 载入,当MC出现的时候执行。也就是除非卸载这个MC,否则load事件内的代码只执行一次。 : v% y; @; g2 v( Gunload 卸载,当MC卸载的时候执行。 6 W9 t+ Z) |! g) x* henterFrame 存在的每个帧。在MC存在的每个帧都要执行一次代码。如果你的场景有100个帧,有个MC从41帧开始出现到100帧才消失,那么这个MC上面的代码执行了60次。 & p* A$ L& [0 x7 c/ mmouseDown 按下鼠标,在场景内任何地方都算。和按钮不一样的地方。 , A! \" {) `0 Q- j" NmouseMove 移动鼠标,只要移动鼠标就执行代码 & b p/ j+ U/ F X! K. BmouseUp 松开鼠标 5 T2 o7 i, r; w G! J9 e同样你要明确:写在MC上的代码一定总是这种格式:& D9 t: [* O! Y6 w6 r- _5 r onClipEvent(事件){代码} ' w' W( u+ z% W9 b; y$ L5 k看到这里,如果你明白的写在 帧、按钮、MC上的代码有什么不一样,任务就算完成了。(待续)
遨海湾-心灵的港湾 www.aosea.com
 楼主| 发表于 2004-12-16 18:01:00 | 显示全部楼层

土人系列AS入门教程--语法篇

我写的这些教程,目的是希望初学Flash的爱好者们能 ) Q! r7 i' }% h- r6 R" ^7 E多动手,少提问/ x/ V# n+ N& s2 s 。我下面这些教程面象有 Flash(MX) 基础操作知识的读者。在看我的教程的同时,希望也能打开Flash,边看边做,这样你的印象会更加深刻一点,顺便也看看我哪里写错了. u! x+ b5 s9 _+ Q AS 语法篇3 n: c2 k; J3 L ----------------------------------- H/ _+ w& M8 G$ U看过我的第一个教程--基础篇之后,现在你对AS的存在位子有了一定的概念了吧?如果还没有,那么去复习一下吧+ L% u! g( ~2 L3 {6 \, Q/ @ 土人系列AS入门教程--基础篇 / S) V }* P3 @0 `接下来我要讲的是AS的语法。 ! H1 @- O0 t' l首先要让大家明白的是:AS 语法的大小写是敏感的。: R2 i9 i. H5 L6 x* ` ^ 如: gotoAndPlay() 正确 gotoAndplay() 错误 。4 R& C' G/ {; S 关键字的拼写必须和语法一致,要做到很容易,因为在Flash的AS面板里面,关键字会有不一样的颜色显示。! a' ?8 i$ t- a0 ^" B; [; d! n0 W 很多Flash小鸟们也许要开始埋怨,记不住咋办?我这里有个办法,就是背。不要流下委屈的泪水,俺们都是这么走过来的。多用两次你就记住了。 + `" k; w0 e( O这里说一下,我们要从开始就养成编程的好习惯,如在每个语句后面都加上分号,有可能的话,尽量给复杂的语句加上注释。注释的例子 0 V- K! l6 c* g& v& w//这个是注释,但是只能有一行 * M; ^/ f1 Z* R6 H- M; |/* 这个也是注释,可以写很多行 */ 9 y2 W5 i8 @/ n5 l接下来,介绍几个类型的语法。 & o" }, z& W5 _7 d$ k1、几个常用的控制场景的方法,如 $ D7 n: `0 X$ R; xplay(); //让时间轴的指针播放 + z$ D5 P) A3 ~stop(); //停止时间轴的指针在程序触发时候的那个帧6 B& ~9 N c3 G+ J( m0 s gotoAndPlay(); //让指针跳转到某个帧,然后继续播放, H f0 w8 n1 v gotoAndStop(); //让指针跳转到某个帧,停止在那个帧 6 j7 ^ L) A5 s8 OnextFrame(); //往下走一帧; k" a% l# V+ {) i8 Y prevFrame(); //往前走一帧 8 |: S+ S; I# {* n! i% d% A上面的都是方法。 : H7 T# |) X& U, Y5 D方法?解:打个比方,我们管吃饭叫作一种方法,用来解决肚子饿这个问题。我们管stop()叫做一种方法,用来解决时间轴指针停下来的问题。我们管上面的几个东西叫方法,用来解决时间轴指针运动的问题。- H- e) T% R7 y+ ~+ d" t 2、控制属性的语法。有很多,我列几个 * b7 }2 u. R7 i) d% t, f$ } v! i_x F% g& X7 I: H- s: o9 _1 u9 p _y, ~/ N! B/ D( J, C: Z6 V4 P _alpha ) n4 I% A2 {& Z+ @& B0 m* q, F_width# U* q# C, u, b, [+ t$ L _name 3 n1 E& ~$ k7 l2 Q+ `: `0 d" S.....等等属性 9 E( X) [) o/ N7 v& C4 O上面的都是属性 1 b+ \. `. p- N2 }: ?属性?解:打个比方。我们管你的身高叫做属性,用来标识你的高度。我们管你的体重叫属性,用来标识你的质量。我们管 _x 叫属性,用来标识目标的X轴坐标。我们管_alpha叫属性,用来标识目标的透明度.......我真罗嗦啊,唉。/ L3 u0 H( J, s3 |; J* R! n 3、控制语句流程的语法,如0 r |! r4 c! A7 u% @0 d if (条件){ 0 e G/ f- ~6 d. B6 u0 l- [//条件满足执行这里的代码$ y& i4 k3 z- \" d; f4 o3 M }else{7 v: P. S. O+ o& i- o4 Y/ D //条件不满足执行这里的代码 1 X; r. C7 O# ?9 @& c* J7 A} 9 t2 S3 u3 Z1 x+ m2 efor(i=0;i. N- L& R& R8 C5 L+ _; X! c% P1 Z 等等。这些都是基本的语法,也是AS的基础。4 ]6 v! F' @* b; {1 A 4、其他方法和自己定义的方法。0 l9 r& o7 b; l( h$ ?% H) U 这里我不能把所有的语法都一一列出来介绍,因为实在是太多了,具体可以参考Flash自带的帮助手册。我们只能在以后的应用中慢慢熟悉。这里,你有个基本概念就行了。到后面我会给每句话都加上注释。$ n A$ a7 d% n 回顾一下,今次要大家记住的东西:# p, c" F; x. V1 j& `; l2 m AS 语法的大小写是敏感的。 5 u) j( N% U6 j2 U( {0 r方法的概念。" t4 h% W9 h" b5 x 属性的概念。 $ ]3 _5 m8 H- h- ^. C* }(待续)
遨海湾-心灵的港湾 www.aosea.com
 楼主| 发表于 2004-12-16 18:05:00 | 显示全部楼层

AS 对象篇

AS 对象篇- Q3 Z4 K! j# Q; S5 b6 i: T -----------------------------------5 C6 [9 X( N+ y/ v& C) V+ a 这里是前面两篇的连接,没看过?去看看吧。 6 s& Z" l8 W5 `; z1 i, X: n土人系列AS入门教程--基础篇: z3 N! K A4 ]# o 土人系列AS入门教程--语法篇 / y" {- }0 ?. n6 P) a8 w8 n虽然AS不是真正的面向对象的编程,但是它也有对象的概念。这个概念贯穿整个AS的始终,所以,对对象的理解,比对语法或者其他的理解更为重要。现在开始吧: ' c: q9 K' Q/ X% J; ]首先,我们来了解一下路径,路径分两种:绝对路径和相对路径。做过html的朋友应该知道这个概念。但这里我还是要详细解释一下,我认为对路径的理解要深入,我初学的时候就是磕在路径上。6 v4 o7 X( s; \# g 在讲路径之前,有必要先讲一下 .语法 : 举例说明,这里要表示房间里的桌子上的一本书,用 .语法这么表示:$ q4 q% J" s4 s9 ^' l$ g& _' k 房间.桌子.书4 p& B2 h8 y, H- c* ~, m5 _ 如果要再细到书上的页上面的字,很显然 ' u9 q. X( d" B: m7 t3 R& u1 E房间.桌子.书.页面.字* M1 j1 u# u/ ]; `8 z' I9 g 看明白了吧?我也不懂得怎么说, .语法就是这样表示对象的,点的前面是其后面的父级。如房间是桌子的父级,桌子的子级就是书。8 b Y' ?- m' Z1 s 还是不明白?这样吧,你把 . 里结成“里面的”就可以了,这样就是 t U w3 G" j9 z9 D房间(里面的)桌子(里面的)书(里面的)页面(里面的)字% N3 k/ b; G6 `* a& X% M6 s 这样容易多了吧? z( c! p: R. v+ }0 r现在我开始说路径了,其中也要夹杂的对象的说明,看:* K6 G2 ]4 E M 从例子入手。新建一个Flash文件,然后创建一个MovieClip,MC命名为“MC”,放在主场景里面,然后再创建一个按钮,放在“MC”里面,然后从库里面拖一个出来放在主场景,分别给这两个元素实例命名(Instance Name , 注意是实例名不是MC的名字):MC->myMC button->myBtn 0 J P* |" Z5 z3 Q& O" H+ Z. w现在我们假设主场景是房子,MC是桌子,按钮是书,那么分别怎么表达房子,桌子,书呢?如下 2 h- J: ` @' __root ' y( k) t R% ~9 A$ K- A( @4 _ 房子, X7 `: z$ H/ J. Z _root.myMc. Q& V" f8 G, v7 T# I. [; D 房子.桌子 / H# `6 g9 ?5 x5 V9 m& [5 s m7 o_root.myMc.myBtn ; x; U# i( ?% B1 h- Q1 q0 m 房子.桌子.书 7 g5 J0 b2 M4 L" G# @( g3 B( r这里的 _root 是Flash的关键字,表示主场景的 Timeline 。2 D4 A ?" F( C 很容易理解对不。这里的 房子,桌子,书 都是我们要理解的“对象”。- }' }* e# m4 Y7 i. Y/ @ 当你找到这个对象后,才能对对象进行操作,才能给对象施加方法。比如,我现在要打扫房子,打扫是方法,但对象是房子,表达式是这样 : * _( a& Y( |8 m: X% n房子.打扫() q% \9 z$ Y# [" D2 z如果你不能正确的表达房子这个对象,你的打扫也就不能正确的实施了。 0 L; X e6 ]# N*说明:这里为什么要在打扫后面加()呢?因为打扫是方法不是对象,为了让Flash知道这是个方法,我们必须加上(),要不然它会以为房子里面有“打扫”这个东西。 " {% h w$ h: X现在,我们可以很容易的对房间里面的各个东西进行操作,如1 W) U1 @& \* T1 }$ q. s+ f 房子.打扫(); 7 s% p$ }+ j' n- o3 p' S房子.木桌子.整理(); % u, T) A# V; k; B$ x% Z% l房子.玻璃桌子.打碎();) r; d' S2 F0 f X/ D( s+ p7 \ 房子.书桌.书.看();, Y! `3 T: I3 F7 m* k6 H; F" s 等等,相信你把它们"翻译"成AS代码没什么问题吧 比如要主场景停止播放,就是 0 n1 I7 C& h$ P/ `7 u" A_root.stop(); : {/ R9 L" b) }5 k要MC停止播放,就是 ! O J& x9 ?4 R; R K, ^6 O( d# t_root.myMc.stop(); ; T, \( C8 _7 a' D) I现在说说相对路径。还是上面的例子。假如给你下了一个命令:修理房子里面的红色的椅子。那么怎么表达呢?就是:3 a8 Y. x5 c u; s2 s 房子.红色椅子.修理()/ j# c" Y' S' y3 n* r7 R 无论给你下命令的人在哪里告诉你的,你都会知道要修理的椅子是哪一张。但是他如果这么说:修理你现在坐的这张椅子。红色的?还是蓝色的?这就要取决于你坐在哪个椅子上了。那么相对的表达式就是 ' Z! A: L! S: X我坐的椅子.修理(); 8 a, \& w8 j4 k3 d这里为什么不这么写呢:房子.我坐的椅子.修理()" p! F, I& {* c7 R! H 这么写是错的,因为我坐的椅子是不固定的,我说不定把椅子搬到房子外面去坐,那这个表达式就错了,因为椅子根本就不在房子里面。 & I; |1 m$ D1 D2 D7 c2 B9 t换过来用Flash实例说明。现在我想让主场景下的 myMC 在一开始就不要播放,而是先停止。那么你有什么办法呢?" H0 E7 W; Z+ [0 H 我你猜想到的办法可能就是在主场景放入这个MC的那个帧写上:% E# Y3 C" F" V _root.myMc.stop();8 R R; O( h1 V) G9 C 这个是对的。但是一旦 myMc 的名字一变,你就得跟着改这句话了。 : c. L2 q# [; F$ }8 x* m有没有办法不管这个“MC”的实例名不管怎么改,都会被我们同样一句的AS找到?当然可以,前提是你的AS必须“坐在这个MC上”。 , i( V+ L S. U' G$ z2 ]' d+ {# h* u进入Mc的编辑状态 , 在 Mc 的 Timeline 的第一帧写上 3 U' p) o& v% Tthis.stop();' W( g) X9 J6 U8 Z$ ^ 这里的 1 l" P# Y9 r; q( C. Kthis , V$ Y, w0 L9 H0 J& v, f也是Flash的关键字 , 这个 this 指AS所在的这条 Timeline . |7 i& v- I7 J3 G% G5 D 现在不管你这个MC放在哪里,命名是什么,我都不管,反正肯定会停下来。为什么,因为AS正“坐在MC上”。 - q, Z! v* p# y4 i! e2 s/ J如果你在这里写上 _root.stop(); 那就错了。为什么?仔细想想。$ o5 ]; m! a* U6 e! Q4 M 这个 this 就是相对路径的关键字之一。你必须要仔细理解它。 R( E7 H5 c B) S6 H6 c另外的一个关键字就是 8 U! ]. b- H, A6 z, `1 F9 @ _parent % K' j" v* o. b. R3 V* t 。如果你理解了 this , 那么 _parent 并不难理解。举例:( ^- W& K4 c5 @* X5 k 还是哪个假设 房子(_root) , 桌子( mc_zhuozi ) , 书 (mc_shu) 他们的关系是(括号内为mc实例名)/ z" m- J% f) `% T7 \6 K 房子.桌子.书 ( g" P9 S- z p4 X1 y* Y' p7 ~_root.mc_zhuozi.mc_shu 4 k% h6 s0 `# H2 @- H) T在 mc_zhuozi 的 timeline 里面写; ]# n$ [, S8 Q. w- n _parent.打扫(); 8 U' u l7 ^$ `: ~3 ^- a意思就是打扫房间;$ `) O1 t/ |4 p" b% f6 z9 { 在 mc_shu 的 timeline 里面写# ^/ X" F1 G' s$ o# H0 ]/ H) b' h _parent.打扫(); 4 O* y {" \6 ^! T: ?- D. n3 G3 O Y意思就是打扫桌子。 0 ~2 ` Q2 h5 ~/ y_parent 也就是父级。桌子的 _parent 就是房子的 timeline , 书的 _parent 也就是 桌子的 timeline。点的后面的对象 的 _parent 就是点前面的对象。 " D Q2 u% ?; |; U2 K) N8 ]1 G今次就到这吧,回顾下: f7 ]8 _9 o" s5 t5 Y R# D% i 点语法* T9 {4 d4 v% s* K 学会表达对象' ?- q. A0 g( d2 { 学会用绝对路径和相对路径表达对象 , S# L& \- g2 ~! T8 w如果你都理解了,那么我们就可以进入实战了.俺喝水去也..(待续)
遨海湾-心灵的港湾 www.aosea.com
您需要登录后才可以回帖 登录 | 入住遨海湾

本版积分规则

网站解决方案专享优惠-3折上云

QQ|手机版|小黑屋|遨海湾超级社区

GMT+8, 2025-4-25 02:21

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表