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

土人AS入门系列汇总

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

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

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

×
我写的这些教程,目的是希望初学Flash的爱好者们能 7 Z0 N/ Q0 J% A+ d T多动手,少提问 ) o2 H' I: `: v* e% g0 B。我下面这些教程面象有 Flash(MX) 基础操作知识的读者。 ! ~4 l6 Z; Q7 ^/ V1 [4 z1 YAS基础/ ?' v2 ?- u$ Y6 |3 v ----------------------------------- . L4 B$ [7 G9 }% h2 q6 q. \做过Flash动画的Flash爱好者们都知道,要做好一个Flash动画,AS是必不可少的,即使只是很简单的几句代码也能起到整个Flash画龙点睛的作用。这里我只简单的介绍一下AS的基本常识。 2 E$ \% M) {2 L首先我们要了解AS要写在什么地方,什么时候AS会被触发执行。 - V; ]2 {/ d- |6 Z N1、帧: * ^. x4 t, s/ l写在关键帧上面的AS,当时间轴上的指针走到这个关键帧的时候,就写在这个帧上面的AS就被触发执行了。常见的例子有在影片结尾的帧写上 stop() 等。操作方法就是点选关键帧,然后打开AS面板。 , z/ A e2 t+ `& X# f5 v0 o2、按钮: \" y+ L3 `& l 不同于帧上面的AS,按钮上面的AS是要有触发条件的。要把AS写在按钮上,操作方法是点选目标按钮,然后打开AS面板。举个例子能说的更明白。 / q" k' Z' q* p5 l ?/ R假设有一个动画,要让它在播放完同时停止,那么,你要做的就是在这个动画的最后一帧写AS6 N+ U" K8 e7 _( Z9 K5 q6 t stop();1 G. I' X4 w1 b$ t- [5 b 再假设有个按钮,效果是按下按钮后停止播放,那么步骤如下。 % p5 C" k+ u8 A& n" C做一个按钮,放到主场景,点选按钮,然后打开AS面板。现在如果也在按钮上写 9 a L. J" H" L1 jstop();, b# v( \( y* N% i) j+ v 那么,输出的时候就会提示错误。正确的应该这样写 % ~! ?4 I ]7 X8 G0 k9 b( aon(5 r+ P8 ?) G6 ?4 H$ P& A8 t9 j release ( M& u" m3 Z/ w9 R) ^# r F" V){6 W0 ~; @" L0 g! ]1 d! N7 D stop();2 J- N) h1 h, A }) B; g# {1 l% M7 _; C+ U6 E 这里要比帧的动画多这些代码: on(release){} , 整个代码翻译过来就是: 3 n$ ?- F U0 e6 r 当(松开){ 1 s6 H% Y0 n0 c" D. K5 P3 ?停止 ( j1 z( f0 l8 {# h* w}1 ~* d% \ c6 B: \5 s 红色的代码表示鼠标的触发事件事件之一,这里用的是 release 松开,按钮的常用事件: / W( M# X5 ~+ s5 w8 Mrelease 松开 ( _) ?% W( n& e( yreleaseOutside 在按钮外面松开 $ [6 Y- @. J$ h! A: M3 Epress 按下! }) [, c3 R( l% u+ f' J% _ rollOver 鼠标进入按钮的感应区 , X; g! P7 Y. k- ]4 R" l, arollOut 鼠标离开按钮的感应区 - N+ @" Z/ H# B现在很明确了:写在按钮上面的AS一定就是这种格式的: " l n& ~2 p+ D e. C( i. Hon(事件){要执行的代码}+ D& a- _. v0 P0 a K/ [5 c& \ 3、MC(电影剪辑) 0 L* x6 }: o8 }/ s8 E' h如果你看懂了上面的内容,那么写在MC上面的AS和写在按钮上的大同小异。操作方法就是点选MC,然后打开AS面板。看个例子 # e- n+ n6 @, i" y8 ^/ C3 b2 honClipEvent( ; m: o9 o# h6 Rload8 I0 x8 [0 U0 k2 t1 D% L ){ & t3 ]* w5 A- v; [2 B' Q( r3 o1 zstop(); 3 r" K6 ?4 u/ M9 `}2 H- p" i5 y. h% x6 P, x$ u* D" i% w 同样,MC需要一个事件来触发AS的执行。翻译这段代码就是 4 l7 L7 m" W( {; u. r当剪辑(载入){$ y+ D; m, U# T. f8 m2 g( C3 \ 停止 G" L& t4 E$ S" ^" e9 p}+ R j" `7 y! B/ [ r; P8 G 红色代码同样表示一个事件。MC的事件有下面这些: 4 w" M8 Y% S) ?1 Wload 载入,当MC出现的时候执行。也就是除非卸载这个MC,否则load事件内的代码只执行一次。 ( A. P/ Y _1 E2 eunload 卸载,当MC卸载的时候执行。 " L2 g! y. T, s4 z' n. O( GenterFrame 存在的每个帧。在MC存在的每个帧都要执行一次代码。如果你的场景有100个帧,有个MC从41帧开始出现到100帧才消失,那么这个MC上面的代码执行了60次。# N8 j; h/ i B4 y R8 W. N mouseDown 按下鼠标,在场景内任何地方都算。和按钮不一样的地方。 j9 K* v) W: I8 F% b mouseMove 移动鼠标,只要移动鼠标就执行代码 8 c5 }% O9 w# M* O, |mouseUp 松开鼠标 , I7 j$ B. p/ o- u同样你要明确:写在MC上的代码一定总是这种格式:. p0 }" I6 _, p7 d: y1 ?$ r onClipEvent(事件){代码} " A4 G t V, w, S看到这里,如果你明白的写在 帧、按钮、MC上的代码有什么不一样,任务就算完成了。(待续)
遨海湾-心灵的港湾 www.aosea.com
 楼主| 发表于 2004-12-16 18:01:00 | 显示全部楼层

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

我写的这些教程,目的是希望初学Flash的爱好者们能! A* m; P6 U' z: |3 y4 e 多动手,少提问+ S) e8 X3 i* Z6 X; b- \/ | 。我下面这些教程面象有 Flash(MX) 基础操作知识的读者。在看我的教程的同时,希望也能打开Flash,边看边做,这样你的印象会更加深刻一点,顺便也看看我哪里写错了 1 [- g; X9 }- q5 WAS 语法篇 X! y8 k5 c3 |3 K ------------------------------------ t) N" R$ w* ]: B5 H% t w( c, c+ J 看过我的第一个教程--基础篇之后,现在你对AS的存在位子有了一定的概念了吧?如果还没有,那么去复习一下吧 * p4 T7 Y& P$ U, m土人系列AS入门教程--基础篇! J$ p9 A0 _/ _$ {6 H, T 接下来我要讲的是AS的语法。 7 ^) o* D0 I0 `, } A, @3 D首先要让大家明白的是:AS 语法的大小写是敏感的。 0 C. f% X8 E; c3 [8 U9 l5 u+ m如: gotoAndPlay() 正确 gotoAndplay() 错误 。 " R2 n1 U* M7 K9 ~$ @' M关键字的拼写必须和语法一致,要做到很容易,因为在Flash的AS面板里面,关键字会有不一样的颜色显示。 S; T4 y- }. I9 e' R# D; x/ r. Z$ {/ k很多Flash小鸟们也许要开始埋怨,记不住咋办?我这里有个办法,就是背。不要流下委屈的泪水,俺们都是这么走过来的。多用两次你就记住了。 4 L: V" i9 v# j这里说一下,我们要从开始就养成编程的好习惯,如在每个语句后面都加上分号,有可能的话,尽量给复杂的语句加上注释。注释的例子/ Q$ s1 r: }+ L' \& H9 w$ h //这个是注释,但是只能有一行0 t m \, Q5 e+ \! r /* 这个也是注释,可以写很多行 */7 b) _; v8 d& } 接下来,介绍几个类型的语法。 + ~! I8 j. ~9 C& u3 ?1、几个常用的控制场景的方法,如8 z7 R3 n$ H; g( _* E play(); //让时间轴的指针播放 4 P' x6 m- {+ {2 p$ u" ]0 Z0 `' Ustop(); //停止时间轴的指针在程序触发时候的那个帧 2 G; g5 A6 U7 s/ L+ ]( S" r, t2 MgotoAndPlay(); //让指针跳转到某个帧,然后继续播放 ; D! B4 t3 j0 V) o" A. g% v7 pgotoAndStop(); //让指针跳转到某个帧,停止在那个帧 / r2 r* K% X/ x" f- F; n! `! ]nextFrame(); //往下走一帧 1 R! i# W5 F2 E7 PprevFrame(); //往前走一帧 0 U! j2 |& x- R! q8 [上面的都是方法。 9 u( q# R8 t' L) x+ P2 }7 U方法?解:打个比方,我们管吃饭叫作一种方法,用来解决肚子饿这个问题。我们管stop()叫做一种方法,用来解决时间轴指针停下来的问题。我们管上面的几个东西叫方法,用来解决时间轴指针运动的问题。" h, E7 s8 c* z) y9 \+ ? 2、控制属性的语法。有很多,我列几个 : i- e6 ^& i) y9 _- a_x 8 ?" r4 Y0 d& y y B_y: t) h, s' F7 r/ H! D+ _, {5 I. e0 d6 T _alpha % [: m: M# Q4 r" Q8 _/ z_width9 `+ G: p5 ^# D _name/ U! E( O m6 D: z+ a' s .....等等属性9 v8 Z- z" `6 ]% d1 o 上面的都是属性 $ k i( }; A' A属性?解:打个比方。我们管你的身高叫做属性,用来标识你的高度。我们管你的体重叫属性,用来标识你的质量。我们管 _x 叫属性,用来标识目标的X轴坐标。我们管_alpha叫属性,用来标识目标的透明度.......我真罗嗦啊,唉。 / H5 |1 W0 _, @3 Q3、控制语句流程的语法,如- \- p! _$ o! w( `9 M. a9 u if (条件){ ! I O9 O; G2 x- ~# b0 y//条件满足执行这里的代码3 b& k6 h& V; H' O }else{ " n1 L- x9 r& ~$ W- X- |0 f8 u' R//条件不满足执行这里的代码 0 X `8 v, P4 } U} / @! F, s1 C: M, P. Wfor(i=0;i 5 D' y/ Q0 F7 x' p Y等等。这些都是基本的语法,也是AS的基础。 a/ M, A$ E- w. n3 o) A4、其他方法和自己定义的方法。 ; \. M0 S: S R5 H9 Z z1 l这里我不能把所有的语法都一一列出来介绍,因为实在是太多了,具体可以参考Flash自带的帮助手册。我们只能在以后的应用中慢慢熟悉。这里,你有个基本概念就行了。到后面我会给每句话都加上注释。- \! v) i% Z# i g1 { 回顾一下,今次要大家记住的东西:$ K. [1 d. t- |" ^. Q AS 语法的大小写是敏感的。 - O; t9 n, S" L! w/ D7 m方法的概念。 / D* _" \6 Z5 x属性的概念。# D) K! O! R7 F (待续)
遨海湾-心灵的港湾 www.aosea.com
 楼主| 发表于 2004-12-16 18:05:00 | 显示全部楼层

AS 对象篇

AS 对象篇 5 k, |; {3 M5 S* }& [----------------------------------- : C! l/ K# }) f9 ^5 N) E* A( t: x这里是前面两篇的连接,没看过?去看看吧。 8 e* Z6 y. M2 P% p$ _! T土人系列AS入门教程--基础篇 , [* b- V( D6 @* `8 _土人系列AS入门教程--语法篇 # \* J; ]( _1 j* f虽然AS不是真正的面向对象的编程,但是它也有对象的概念。这个概念贯穿整个AS的始终,所以,对对象的理解,比对语法或者其他的理解更为重要。现在开始吧:* V, t6 s% p% `- { l7 p 首先,我们来了解一下路径,路径分两种:绝对路径和相对路径。做过html的朋友应该知道这个概念。但这里我还是要详细解释一下,我认为对路径的理解要深入,我初学的时候就是磕在路径上。 0 [7 Q4 j7 H; [2 i+ X0 U; B" \在讲路径之前,有必要先讲一下 .语法 : 举例说明,这里要表示房间里的桌子上的一本书,用 .语法这么表示:2 V* i3 h3 Q* \' @' h( p+ s 房间.桌子.书 3 y5 q1 i$ Z; T- J+ x3 s* L如果要再细到书上的页上面的字,很显然 # `( u; e9 o5 n2 o3 `& c, u房间.桌子.书.页面.字 . L2 Q9 V" T. P5 l6 f! B% r3 V8 l k) t看明白了吧?我也不懂得怎么说, .语法就是这样表示对象的,点的前面是其后面的父级。如房间是桌子的父级,桌子的子级就是书。# [8 w. d, m; V9 U 还是不明白?这样吧,你把 . 里结成“里面的”就可以了,这样就是 7 ^5 h( R0 c6 @3 h4 {房间(里面的)桌子(里面的)书(里面的)页面(里面的)字 * ]% Y; r$ C n# A9 L( @$ C. n1 R这样容易多了吧?! z, P" F+ {+ T5 V$ Y6 T1 |& d! o/ c 现在我开始说路径了,其中也要夹杂的对象的说明,看: ?- u) h3 t2 R" G0 J从例子入手。新建一个Flash文件,然后创建一个MovieClip,MC命名为“MC”,放在主场景里面,然后再创建一个按钮,放在“MC”里面,然后从库里面拖一个出来放在主场景,分别给这两个元素实例命名(Instance Name , 注意是实例名不是MC的名字):MC->myMC button->myBtn4 D" x: B/ s% t) E" O. U+ x 现在我们假设主场景是房子,MC是桌子,按钮是书,那么分别怎么表达房子,桌子,书呢?如下- E9 o7 ?$ L$ C) S& ^0 Z _root: x9 ~" C3 M- j: H1 C0 m4 r 房子! ]1 V/ L2 Z Q5 S. ? _root.myMc 9 q! ^, e$ p: ]- P+ B- d4 ]8 J 房子.桌子/ c' L: F4 J# @6 y4 } _root.myMc.myBtn " x/ Y3 u: C4 b7 X7 p 房子.桌子.书0 y$ Q; O0 ~' X6 F$ e. t3 T- d 这里的 _root 是Flash的关键字,表示主场景的 Timeline 。' u8 k; \7 w6 a) H: Q6 @ 很容易理解对不。这里的 房子,桌子,书 都是我们要理解的“对象”。 9 h4 f9 L$ p) @& {8 T( Q当你找到这个对象后,才能对对象进行操作,才能给对象施加方法。比如,我现在要打扫房子,打扫是方法,但对象是房子,表达式是这样 : # U* m7 z4 {! u9 `7 k/ Z房子.打扫()0 _6 w+ `( X+ @7 O9 i# A 如果你不能正确的表达房子这个对象,你的打扫也就不能正确的实施了。( G2 B2 b: z, k" x; ~+ w7 s *说明:这里为什么要在打扫后面加()呢?因为打扫是方法不是对象,为了让Flash知道这是个方法,我们必须加上(),要不然它会以为房子里面有“打扫”这个东西。3 m f* G }1 L 现在,我们可以很容易的对房间里面的各个东西进行操作,如 & q' v q1 a# T% ]+ R房子.打扫();6 W9 z) _; v6 K) c6 v. ?, D 房子.木桌子.整理();9 J& m6 ?3 @& l 房子.玻璃桌子.打碎(); / Q) s1 R4 h2 N4 \' ?4 J: H房子.书桌.书.看();) u5 ?0 h3 r- G: j 等等,相信你把它们"翻译"成AS代码没什么问题吧 比如要主场景停止播放,就是 : I) i# R3 w+ y, [" X_root.stop();" G3 t8 r/ q) T8 Z; U9 l+ {' I3 J& p: b 要MC停止播放,就是 " H* J, x) c2 h! Z% {' N_root.myMc.stop();- }) e: n' Y2 r1 @; v 现在说说相对路径。还是上面的例子。假如给你下了一个命令:修理房子里面的红色的椅子。那么怎么表达呢?就是:2 D* y# `4 Z* O# c 房子.红色椅子.修理()+ j; y3 I& @- b: E4 I$ K& Y 无论给你下命令的人在哪里告诉你的,你都会知道要修理的椅子是哪一张。但是他如果这么说:修理你现在坐的这张椅子。红色的?还是蓝色的?这就要取决于你坐在哪个椅子上了。那么相对的表达式就是 ) z! D$ [3 b" I1 r# D6 K v$ P我坐的椅子.修理(); / _( P: I# k- o# K" w+ C6 P这里为什么不这么写呢:房子.我坐的椅子.修理() 9 O2 |; M2 ^" @这么写是错的,因为我坐的椅子是不固定的,我说不定把椅子搬到房子外面去坐,那这个表达式就错了,因为椅子根本就不在房子里面。' }! e# \. G) I5 c 换过来用Flash实例说明。现在我想让主场景下的 myMC 在一开始就不要播放,而是先停止。那么你有什么办法呢?: E8 B/ D+ Y+ } 我你猜想到的办法可能就是在主场景放入这个MC的那个帧写上:' U3 T C$ Q2 K: T$ X; S( c _root.myMc.stop();$ C& p* V0 m( h! b 这个是对的。但是一旦 myMc 的名字一变,你就得跟着改这句话了。 : R, X. }- M/ l$ y! M9 C有没有办法不管这个“MC”的实例名不管怎么改,都会被我们同样一句的AS找到?当然可以,前提是你的AS必须“坐在这个MC上”。 6 }. _6 [" `" I3 b* E% S进入Mc的编辑状态 , 在 Mc 的 Timeline 的第一帧写上 " T. U( ?8 u- q& z5 s' bthis.stop(); E2 U8 ^7 \ s6 N* A) o7 ] 这里的 - B% Y" s+ I# W A& Wthis+ p9 L5 U6 [$ ? 也是Flash的关键字 , 这个 this 指AS所在的这条 Timeline . 9 r; A9 h# b4 s( {: q现在不管你这个MC放在哪里,命名是什么,我都不管,反正肯定会停下来。为什么,因为AS正“坐在MC上”。 8 {0 [) T5 l8 X/ }5 G2 N! j如果你在这里写上 _root.stop(); 那就错了。为什么?仔细想想。$ x y9 p' b* G: u 这个 this 就是相对路径的关键字之一。你必须要仔细理解它。 - K% ]% v' m& S! K2 V8 r另外的一个关键字就是 4 L3 ^. k5 B8 y_parent 6 M( [) e8 H/ s1 Q9 ^ 。如果你理解了 this , 那么 _parent 并不难理解。举例:( z7 m- G* x, U& q 还是哪个假设 房子(_root) , 桌子( mc_zhuozi ) , 书 (mc_shu) 他们的关系是(括号内为mc实例名) 1 Y3 C5 q2 N8 ~9 V# a3 b; ~房子.桌子.书 ! }7 W, }% ]- x7 Z" p; y3 Y_root.mc_zhuozi.mc_shu 4 u/ M) O2 E- m: Y$ M& e1 l& `在 mc_zhuozi 的 timeline 里面写 , l9 h+ _" T' c. V0 z& T! __parent.打扫();8 g: l4 J( N! ]6 g 意思就是打扫房间;( p/ Y+ J1 e/ v( I8 f 在 mc_shu 的 timeline 里面写 : O+ T" p# D: | ?5 J_parent.打扫(); 6 k$ Z. [& d( c* r9 N意思就是打扫桌子。 % ?% P/ h1 l4 J( e/ c* X_parent 也就是父级。桌子的 _parent 就是房子的 timeline , 书的 _parent 也就是 桌子的 timeline。点的后面的对象 的 _parent 就是点前面的对象。 * t% U% G$ H: m5 i% F+ Y4 ^今次就到这吧,回顾下:9 J% Z( N0 w% q7 p5 z6 f6 U 点语法 : I" u, J$ t7 ]: i) C8 U1 {学会表达对象 1 w1 v8 D S8 j9 J学会用绝对路径和相对路径表达对象( [* ?% r& Y9 d& T. l# ] 如果你都理解了,那么我们就可以进入实战了.俺喝水去也..(待续)
遨海湾-心灵的港湾 www.aosea.com
您需要登录后才可以回帖 登录 | 入住遨海湾

本版积分规则

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

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

GMT+8, 2025-2-19 06:27

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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