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

土人AS入门系列汇总

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

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

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

×
我写的这些教程,目的是希望初学Flash的爱好者们能 7 ?$ h3 B: r7 s1 _2 i9 P ]% y多动手,少提问7 g( r; m& p5 C/ y: K: d 。我下面这些教程面象有 Flash(MX) 基础操作知识的读者。 ( @. `( U( j! U) Z+ m2 L0 f" z* {AS基础 / P8 {& e7 w' p: D1 {----------------------------------- " C9 E4 a% N8 v, U2 D做过Flash动画的Flash爱好者们都知道,要做好一个Flash动画,AS是必不可少的,即使只是很简单的几句代码也能起到整个Flash画龙点睛的作用。这里我只简单的介绍一下AS的基本常识。 . \' `( u9 k& n* q) n首先我们要了解AS要写在什么地方,什么时候AS会被触发执行。 $ P4 o, F1 S1 T8 ~1、帧: 4 x+ F6 g1 o# |) {; [( S写在关键帧上面的AS,当时间轴上的指针走到这个关键帧的时候,就写在这个帧上面的AS就被触发执行了。常见的例子有在影片结尾的帧写上 stop() 等。操作方法就是点选关键帧,然后打开AS面板。/ c) j( E* T- r2 c9 T- \* s 2、按钮: 1 P9 E) H* @. h9 I& t+ Y不同于帧上面的AS,按钮上面的AS是要有触发条件的。要把AS写在按钮上,操作方法是点选目标按钮,然后打开AS面板。举个例子能说的更明白。 7 _$ q( S* w$ i) B/ i, e+ d假设有一个动画,要让它在播放完同时停止,那么,你要做的就是在这个动画的最后一帧写AS # j' T3 N) u$ B8 {, Bstop();2 p7 B- ]$ H2 F( R' f$ u3 Y1 \4 w$ l 再假设有个按钮,效果是按下按钮后停止播放,那么步骤如下。 9 z# i8 k" [" H d# f$ a0 t做一个按钮,放到主场景,点选按钮,然后打开AS面板。现在如果也在按钮上写) R- c! y3 j! Z1 d$ @ stop(); 4 H2 J- H; O" p" k那么,输出的时候就会提示错误。正确的应该这样写 7 z8 k6 Z! X3 j" K$ t" a; h( don(( f) ?' J7 L1 B6 S; T release8 H7 F8 T& _, ?3 Z5 ] y ){ 8 n, f1 a0 D/ C5 ~( V5 p/ V8 ?stop();# j C5 z- d+ I. }+ w } 3 b/ u, X: t( U& Y这里要比帧的动画多这些代码: on(release){} , 整个代码翻译过来就是: 4 a T/ N @) H, V" v当(松开){4 [4 I+ k( y6 Y3 D 停止2 h# ?' G+ _2 o, r2 K( q/ P" {- u) n }* b2 R; o7 I$ T, X ? 红色的代码表示鼠标的触发事件事件之一,这里用的是 release 松开,按钮的常用事件: ' w0 |5 t# S6 frelease 松开# Q5 a5 P8 l5 v: S7 l releaseOutside 在按钮外面松开1 }% V9 b8 k- {+ g press 按下, M: W/ P# r/ s" f; N3 z rollOver 鼠标进入按钮的感应区5 G6 Z. X, C! { rollOut 鼠标离开按钮的感应区 / d* H9 _2 ?" C3 u现在很明确了:写在按钮上面的AS一定就是这种格式的:7 _7 d3 k% B8 C( y2 a on(事件){要执行的代码}) k; q! w- i/ A 3、MC(电影剪辑) ; x9 O1 Q. u! k8 I/ _& ~4 w如果你看懂了上面的内容,那么写在MC上面的AS和写在按钮上的大同小异。操作方法就是点选MC,然后打开AS面板。看个例子- B" I$ Q+ _) S% D onClipEvent( $ N5 F% q) z) X: \% Uload( t0 D; ]: R- ^: a! P, q9 Z ){ 0 ]( A6 A, b4 [/ ustop();* C7 }* ^+ |9 ?/ R8 c7 f( L }1 s4 W+ M) a- `: u K( F( g 同样,MC需要一个事件来触发AS的执行。翻译这段代码就是 ' C L5 X4 U$ ~* c! m当剪辑(载入){ $ [6 `2 B( C9 B2 G9 E$ x( z$ T停止) ~ M6 Q$ H8 K* E( A } $ ]* A- E9 c s/ X3 W红色代码同样表示一个事件。MC的事件有下面这些:; v! }0 a# ~/ q! y load 载入,当MC出现的时候执行。也就是除非卸载这个MC,否则load事件内的代码只执行一次。: |: E# `& O7 _ unload 卸载,当MC卸载的时候执行。 , f4 N! ]& P/ Z( c1 CenterFrame 存在的每个帧。在MC存在的每个帧都要执行一次代码。如果你的场景有100个帧,有个MC从41帧开始出现到100帧才消失,那么这个MC上面的代码执行了60次。) T7 A+ v: i0 Q7 S+ M mouseDown 按下鼠标,在场景内任何地方都算。和按钮不一样的地方。: Z3 f( B t2 O1 B3 Z1 B mouseMove 移动鼠标,只要移动鼠标就执行代码 - ~0 n0 K4 J7 s5 S K9 j; d5 z* zmouseUp 松开鼠标 $ u3 Z- `6 O m; h同样你要明确:写在MC上的代码一定总是这种格式:7 }# a' J5 s0 p3 y/ A& ]: G onClipEvent(事件){代码} 3 s* v' z6 h9 L! O5 D: d看到这里,如果你明白的写在 帧、按钮、MC上的代码有什么不一样,任务就算完成了。(待续)
遨海湾-心灵的港湾 www.aosea.com
 楼主| 发表于 2004-12-16 18:01:00 | 显示全部楼层

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

我写的这些教程,目的是希望初学Flash的爱好者们能 8 W" j* E- O" u" E/ P多动手,少提问 % K5 X( Y4 h3 U2 o。我下面这些教程面象有 Flash(MX) 基础操作知识的读者。在看我的教程的同时,希望也能打开Flash,边看边做,这样你的印象会更加深刻一点,顺便也看看我哪里写错了5 y- E* d6 ?2 s& p AS 语法篇 . M( j/ W n" k* d----------------------------------- 1 [; k+ a7 \$ Y* \看过我的第一个教程--基础篇之后,现在你对AS的存在位子有了一定的概念了吧?如果还没有,那么去复习一下吧, o1 m, K) U+ s) O1 b5 W3 l 土人系列AS入门教程--基础篇 * n' K1 }0 U. t5 u& f! N8 L接下来我要讲的是AS的语法。* t( G- H: p; A4 l 首先要让大家明白的是:AS 语法的大小写是敏感的。 ) R* D U$ t0 w- c) L7 R如: gotoAndPlay() 正确 gotoAndplay() 错误 。 ; k' k. M( ^/ f0 I关键字的拼写必须和语法一致,要做到很容易,因为在Flash的AS面板里面,关键字会有不一样的颜色显示。 % C2 z7 J2 [# E- d4 R很多Flash小鸟们也许要开始埋怨,记不住咋办?我这里有个办法,就是背。不要流下委屈的泪水,俺们都是这么走过来的。多用两次你就记住了。 2 D. Q. |( ?$ @4 L这里说一下,我们要从开始就养成编程的好习惯,如在每个语句后面都加上分号,有可能的话,尽量给复杂的语句加上注释。注释的例子3 V! [0 F) f! y //这个是注释,但是只能有一行 . S# U& C, t0 k% i0 C9 z/* 这个也是注释,可以写很多行 */ $ o: B: X/ k. ^- R) p4 h接下来,介绍几个类型的语法。& F- h# A6 V7 |7 G6 M. @ 1、几个常用的控制场景的方法,如 2 s2 j, C0 j8 e; Y1 h; p/ splay(); //让时间轴的指针播放, C E/ z+ w4 v: z stop(); //停止时间轴的指针在程序触发时候的那个帧9 v! u, j8 }1 {2 I ] gotoAndPlay(); //让指针跳转到某个帧,然后继续播放8 K m! {; s3 L! I9 l gotoAndStop(); //让指针跳转到某个帧,停止在那个帧 0 y( p o$ z# S- `2 W* A5 unextFrame(); //往下走一帧 ( v* ]1 [/ l2 d* p/ z0 AprevFrame(); //往前走一帧9 R8 I, x @$ s; [2 m 上面的都是方法。# D1 H; i, v9 q" M 方法?解:打个比方,我们管吃饭叫作一种方法,用来解决肚子饿这个问题。我们管stop()叫做一种方法,用来解决时间轴指针停下来的问题。我们管上面的几个东西叫方法,用来解决时间轴指针运动的问题。 ) w) \; i& N% g7 K; B/ R" b2、控制属性的语法。有很多,我列几个$ ]: N. A; ]8 f8 i; l. Y _x5 i/ l5 A* y9 x, W _y 6 m$ S$ `/ r7 L! l4 h_alpha 8 ]8 W- V3 z2 @1 R* y_width 3 s) v! O% h+ h6 n0 S. g_name) o2 B h" c6 ?3 h% m .....等等属性 $ b- h2 Z' y/ e' {, f% D- S; V上面的都是属性 ( \% R% X% y j+ q0 g' L. ^属性?解:打个比方。我们管你的身高叫做属性,用来标识你的高度。我们管你的体重叫属性,用来标识你的质量。我们管 _x 叫属性,用来标识目标的X轴坐标。我们管_alpha叫属性,用来标识目标的透明度.......我真罗嗦啊,唉。 6 z" }5 x3 H9 @! P9 H3、控制语句流程的语法,如 2 ]! w2 B0 K: u2 }5 G' m1 oif (条件){7 v" C/ I7 c$ |; U* t& @! l //条件满足执行这里的代码2 J, t% m' P1 z }else{1 j1 k: V0 p- Q% A3 u+ q R //条件不满足执行这里的代码& e( A5 K9 L. i }" `. h9 ?6 M+ z3 L( n for(i=0;i * l# m1 T. R9 y6 x" Z- A等等。这些都是基本的语法,也是AS的基础。$ M, \9 M: q. ^/ \( M0 O9 \- a 4、其他方法和自己定义的方法。 f- t6 E! n7 T( b9 C) S这里我不能把所有的语法都一一列出来介绍,因为实在是太多了,具体可以参考Flash自带的帮助手册。我们只能在以后的应用中慢慢熟悉。这里,你有个基本概念就行了。到后面我会给每句话都加上注释。# X9 M; G3 a9 k( b8 @ 回顾一下,今次要大家记住的东西: & i* ~: l; U" e3 e9 T0 v7 r1 HAS 语法的大小写是敏感的。$ r8 X% ^* i2 z/ Y H( c. q0 d 方法的概念。9 D3 J! g+ g% l; J. _2 k 属性的概念。 ( j# L4 H' b9 m4 X6 A(待续)
遨海湾-心灵的港湾 www.aosea.com
 楼主| 发表于 2004-12-16 18:05:00 | 显示全部楼层

AS 对象篇

AS 对象篇 . U, A' ]$ M6 Q: B& C( \-----------------------------------& |. E y4 J4 l6 t7 f 这里是前面两篇的连接,没看过?去看看吧。) k7 p2 {1 x1 F2 W& { 土人系列AS入门教程--基础篇 l* Y& r, [& ^' \) _4 V% C0 @# }土人系列AS入门教程--语法篇. \. w/ _( G; t* M6 |' U 虽然AS不是真正的面向对象的编程,但是它也有对象的概念。这个概念贯穿整个AS的始终,所以,对对象的理解,比对语法或者其他的理解更为重要。现在开始吧: 5 i3 f/ p; ^. F q% |首先,我们来了解一下路径,路径分两种:绝对路径和相对路径。做过html的朋友应该知道这个概念。但这里我还是要详细解释一下,我认为对路径的理解要深入,我初学的时候就是磕在路径上。% g; M1 l% M9 b. r( O. w) x! h" o" V$ R 在讲路径之前,有必要先讲一下 .语法 : 举例说明,这里要表示房间里的桌子上的一本书,用 .语法这么表示: 0 g" Y" |# S% b( K房间.桌子.书 . H G* }4 O# r6 _如果要再细到书上的页上面的字,很显然: _" j3 O; n" O o, s4 J 房间.桌子.书.页面.字2 z/ O0 H! T* L( S0 ^4 [ 看明白了吧?我也不懂得怎么说, .语法就是这样表示对象的,点的前面是其后面的父级。如房间是桌子的父级,桌子的子级就是书。 8 ~8 p4 u" L2 L6 S. e) \8 m还是不明白?这样吧,你把 . 里结成“里面的”就可以了,这样就是 ( L4 i Y' b% }8 {1 h2 L: L9 L房间(里面的)桌子(里面的)书(里面的)页面(里面的)字 1 a) j4 l' C- c6 n" ]' S& R5 Q这样容易多了吧?" r6 q+ X9 ]; u; m 现在我开始说路径了,其中也要夹杂的对象的说明,看:) m. \! Q v- H6 l4 Y 从例子入手。新建一个Flash文件,然后创建一个MovieClip,MC命名为“MC”,放在主场景里面,然后再创建一个按钮,放在“MC”里面,然后从库里面拖一个出来放在主场景,分别给这两个元素实例命名(Instance Name , 注意是实例名不是MC的名字):MC->myMC button->myBtn% s( R$ `# Q* Q8 f- [4 y 现在我们假设主场景是房子,MC是桌子,按钮是书,那么分别怎么表达房子,桌子,书呢?如下 - c. h; k. g1 x_root ' N7 x/ N w; B1 B. }0 Z 房子1 M. q/ Q* r& f( } _root.myMc 9 ?5 f( N. R$ @1 I 房子.桌子 # r, l O( k U* I# V$ u_root.myMc.myBtn. s* f- }+ x0 B0 c( G& o 房子.桌子.书 9 @* n @* S' }% Q- K; w这里的 _root 是Flash的关键字,表示主场景的 Timeline 。5 d% T: R) Y; f, r* S$ }8 P 很容易理解对不。这里的 房子,桌子,书 都是我们要理解的“对象”。 - R- n' C, ?+ o! D' ] t当你找到这个对象后,才能对对象进行操作,才能给对象施加方法。比如,我现在要打扫房子,打扫是方法,但对象是房子,表达式是这样 : & t/ |5 n/ L9 Z, ]房子.打扫()6 v8 `8 H7 ? l9 E( z0 R 如果你不能正确的表达房子这个对象,你的打扫也就不能正确的实施了。 3 o& W1 ^% g% n+ x) }. d- H" h5 u# y*说明:这里为什么要在打扫后面加()呢?因为打扫是方法不是对象,为了让Flash知道这是个方法,我们必须加上(),要不然它会以为房子里面有“打扫”这个东西。- _. v. Q2 R, ~) h6 k 现在,我们可以很容易的对房间里面的各个东西进行操作,如, e# v( C6 u, k+ f2 L2 ~ 房子.打扫();5 i- k( k' |6 V( h* m 房子.木桌子.整理(); ' k. s5 k: c- n6 ^房子.玻璃桌子.打碎(); - w7 E# p# J6 h房子.书桌.书.看();0 \# a6 d# t& v0 U, ^3 ]& f" x8 b 等等,相信你把它们"翻译"成AS代码没什么问题吧 比如要主场景停止播放,就是8 v4 F/ e4 X: X9 Z9 X; G$ h" o _root.stop(); ) d1 b$ D O$ n2 e要MC停止播放,就是+ g) X" [1 U5 G8 u6 z, F _root.myMc.stop();3 u* Q1 Z; i. k; } 现在说说相对路径。还是上面的例子。假如给你下了一个命令:修理房子里面的红色的椅子。那么怎么表达呢?就是: # m, q$ K6 N! y/ i! L房子.红色椅子.修理() 2 n4 ?+ U& B; o5 |/ `无论给你下命令的人在哪里告诉你的,你都会知道要修理的椅子是哪一张。但是他如果这么说:修理你现在坐的这张椅子。红色的?还是蓝色的?这就要取决于你坐在哪个椅子上了。那么相对的表达式就是 : {3 u+ j2 R+ q" x& [7 l我坐的椅子.修理();! b+ ~% Z' y- ~( A: _% } 这里为什么不这么写呢:房子.我坐的椅子.修理() % B4 ]% V# E' g4 N! l. X: u4 R这么写是错的,因为我坐的椅子是不固定的,我说不定把椅子搬到房子外面去坐,那这个表达式就错了,因为椅子根本就不在房子里面。 ( c$ Y6 i* \# ]% L0 e换过来用Flash实例说明。现在我想让主场景下的 myMC 在一开始就不要播放,而是先停止。那么你有什么办法呢? $ h2 v1 Y; |) q我你猜想到的办法可能就是在主场景放入这个MC的那个帧写上: # t* y) Z+ R# Y9 }- s9 z; {( Y_root.myMc.stop();. r' n$ p; a& ?! G 这个是对的。但是一旦 myMc 的名字一变,你就得跟着改这句话了。6 C/ \. ]4 B( L 有没有办法不管这个“MC”的实例名不管怎么改,都会被我们同样一句的AS找到?当然可以,前提是你的AS必须“坐在这个MC上”。 1 a( C0 y6 G- B/ N进入Mc的编辑状态 , 在 Mc 的 Timeline 的第一帧写上 8 O0 q4 e* i. }1 `4 Y1 { y/ U0 j# ^this.stop();" K' k: p- \ ^, |% L! `8 L# | 这里的1 D' m: g8 H7 X+ p( P this% t/ t. \* l t+ c; }) p' }" w& H 也是Flash的关键字 , 这个 this 指AS所在的这条 Timeline . $ r, m/ a; b. k5 _1 `现在不管你这个MC放在哪里,命名是什么,我都不管,反正肯定会停下来。为什么,因为AS正“坐在MC上”。) ?5 F; v% Y8 F6 }( d* Y, H9 Q# C 如果你在这里写上 _root.stop(); 那就错了。为什么?仔细想想。3 U \2 J" [/ |- }) M3 b. o 这个 this 就是相对路径的关键字之一。你必须要仔细理解它。+ b8 M# ?( Y& F- T0 O8 { 另外的一个关键字就是 6 k2 z- t3 G! F$ H _parent 5 \- T; \ {( s 。如果你理解了 this , 那么 _parent 并不难理解。举例: 0 }, v& _; u$ W( G4 M还是哪个假设 房子(_root) , 桌子( mc_zhuozi ) , 书 (mc_shu) 他们的关系是(括号内为mc实例名) # p. m, W7 n% j2 U: d房子.桌子.书 # z7 D h( M" q: f_root.mc_zhuozi.mc_shu @7 u o% ~* S 在 mc_zhuozi 的 timeline 里面写5 w) Z7 {* p8 y9 ?; l+ D _parent.打扫();$ B: z# B7 e% I# } ?" I( o3 ^ 意思就是打扫房间; 0 B/ A z i" R+ P在 mc_shu 的 timeline 里面写+ e& @0 e H2 |5 l5 l# X _parent.打扫();% R1 D% X' a( _- d( ]( f 意思就是打扫桌子。1 j* t/ Q7 T# F# |3 g _parent 也就是父级。桌子的 _parent 就是房子的 timeline , 书的 _parent 也就是 桌子的 timeline。点的后面的对象 的 _parent 就是点前面的对象。 & Z& P. L. h0 V! e今次就到这吧,回顾下:0 s0 Z5 n9 z8 G( b: m6 @: L 点语法 - ^# I- o- ]% d Z学会表达对象 * v- n5 A5 W6 t& P x! [学会用绝对路径和相对路径表达对象7 I0 m4 S [% z 如果你都理解了,那么我们就可以进入实战了.俺喝水去也..(待续)
遨海湾-心灵的港湾 www.aosea.com
您需要登录后才可以回帖 登录 | 入住遨海湾

本版积分规则

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

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

GMT+8, 2024-11-22 08:06

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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