新手来看flashas入门教程

上传人:无*** 文档编号:64190444 上传时间:2022-03-21 格式:DOC 页数:21 大小:460KB
收藏 版权申诉 举报 下载
新手来看flashas入门教程_第1页
第1页 / 共21页
新手来看flashas入门教程_第2页
第2页 / 共21页
新手来看flashas入门教程_第3页
第3页 / 共21页
资源描述:

《新手来看flashas入门教程》由会员分享,可在线阅读,更多相关《新手来看flashas入门教程(21页珍藏版)》请在装配图网上搜索。

1、.word 可编辑 .Flahs as入门教程郴州师范雷勇第一章 AS 的基本常识FLASH中 actionscript (简称 AS)是非常重要的组成部分。首先了解如何在FLASH输入程序通常我们按 F9 可以调出动作面板。或者在 FLASH菜单 Window里面 Actions可打开 ACTION面板, ACTION面板分右面的脚本窗,和左面的工具窗脚本窗就是放脚本的地方,而工具窗用于快速地输入各种ACTION,运算符,函数,属性,对象建议大家使用专家模式,在 FLASH菜单的 Edit的 Preferences的 Actions panel里面选 Expert Mode ,以后每次打开

2、ACTION面板都会自动设置为专家模式(专家模式可直接输入代码,初学者学下去就会知道,很多代码无法在普通模式里输入)AS的一些概念所有代码都需存于某个地方,可以是frame (帧) , button (按钮) , or movie clip(电影夹子)。只要你选择了某按钮或 MC,你之后输入的代码就存放在它的上面了,注意此时ACTION面板上方提示为 Object Actions 。同理你也可以将代码存放于帧,不过此时提示为 Frame Actions 。当你在专家模式的时候仍无法输入代码,你首先要检查你是否选择了frame, button,或 MC来存放代码。首先我们要了解AS要写在什么地方

3、,什么时候AS会被触发执行。1、帧:写在关键帧上面的AS,当时间轴上的指针走到这个关键帧的时候,就写在这个帧上面的AS就被触发执行了。常见的例子有在影片结尾的帧写上stop()等。操作方法就是点选关键帧,然后打开AS面板 , 写下” stop() ”。2、按钮:不同于帧上面的AS,按钮上面的 AS是要有触发条件的。做一个按钮,放到主场景,点选按钮,然后打开AS面板。现在如果也在按钮上写stop();那么,输出的时候就会提示错误。正确的应该这样写on(release) stop();这里要比帧的动画多这些代码 : on(release) ,整个代码翻译过来就是 :当(松开 ) 停止 () 里的代

4、码表示鼠标的触发事件事件之一,这里用的是release松开,按钮的常用事件 :release松开releaseOutside在按钮外面松开press按下rollOver鼠标进入按钮的感应区rollOut鼠标离开按钮的感应区现在很明确了 : 写在按钮上面的AS一定就是这种格式的:on(事件 ) 要执行的代码 3、MC(电影剪辑 ) MovieClip 的简称如果你看懂了上面的内容,那么写在MC上面的 AS和写在按钮上的大同小异。操作方法就是点选MC,然后打开 AS面板。看个例子onClipEvent(load)当剪辑 ( 载入) stop(); 停止() 里的代码同样表示一个事件。MC的事件有下

5、面这些 :load 载入 , 当 MC出现的时候执行。也就是除非卸载这个MC,否则 load事件内的代码只执行一次unload卸载,当 MC卸载的时候执行enterFrame 存在的每个帧。在MC存在的每个帧都要执行一次代码。只要这个MC存在于场景,代码就反复执行。通常可用于循环。举例: 如果你在场景中放置一个小球MC,那么在球上写代码mouseDown按下鼠标,在场景内任何地方都算。和按钮不一样的地方onClipEvent (enterFrame)mouseMove 移动鼠标,只要移动鼠标就执行代码 this._x += 5; mouseUp 松开鼠标球就能不断向右移动。同样你要明确 : 写

6、在 MC上的代码一定总是这种格式: onClipEvent( 事件 ) 代码 看到这里,如果你明白的写在帧、按钮、 MC上的代码有什么不一样,任务就算完成了。第二章 AS 对象篇学会用绝对路径和相对路径表达对象虽然 AS不是真正的面向对象的编程,但是它也有对象的概念。这个概念贯穿整个AS的始终,所以,对对象的理解,比对语法或者其他的理解更为重要。现在开始吧:.专业 .专注.word 可编辑 .首先,我们来了解一下路径,路径分两种:绝对路径和相对路径。做过html 的朋友应该知道这个概念。但这里还是要详细解释一下,对路径的理解要深入。在讲路径之前,有必要先讲一下. 语法 :举例说明,这里要表示房

7、间里的桌子上的一本书,用. 语法这么表示: 房间 . 桌子 . 书如果要再细到书上的页上面的字,很显然是:房间. 桌子. 书. 页面. 字看明白了吧?我也不懂得怎么说,. 语法就是这样表示对象的,点的前面是其后面的父级。如房间是桌子的父级,桌子的子级就是书。还是不明白?这样吧,你把.里写成“里面的”就可以了,这样就是:房间 ( 里面的 ) 桌子 ( 里面的 ) 书( 里面的 ) 页面 ( 里面的 ) 字 。现在开始说路径了,其中也要夹杂的对象的说明,看:从例子入手。创建一个 MovieClip,MC 命名为“ MC”, 放在主场景里面, 然后再做一个按钮, 放在“ MC”里面,分别给 MC实例

8、和按钮实例命名(InstanceName,注意是实例名不是MC的名字 ) :MC-myMC,button-myBtn现在我们假设主场景( AS中表示为 _root )是房子, MC是桌子,按钮是书,那么分别怎么表达房子,桌子,书呢?如下图:_root房子场景 _root_root.myMc房子.桌子_root.myMc.myBtn房子 . 桌子 . 书myMcMyBtn这里的 _root是 Flash 的关键字,表示主场景的 Timeline(时间线)。这里的房子,桌子,书都是我们要理解的“对象”。找到这个对象后,才能对对象进行操作,施加方法。如:我现在要打扫房子,打扫是方法,但对象是房子,表

9、达式是这样:房子 . 打扫 ()如果你不能正确的表达房子这个对象,你的打扫也就不能正确的实施了。*说明 : 这里为什么要在打扫后面加() 呢?因为打扫是方法不是对象,为了让Flash知道这是个方法,我们必须加上 (),要不然它会以为房子里面有“打扫”这个东西。现在,我们可以很容易的对房间里面的各个东西进行操作,如房子 . 打扫 ();房子 . 木桌子 . 整理();房子 . 玻璃桌子 . 打碎();房子. 书桌. 书.看();等等,相信你把它们 翻译 成 AS代码没什么问题吧比如要主场景停止播放,就是_root.stop();要 MC停止播放,就是_root.myMc.stop();以上的写法

10、是绝对路径。现在说说相对路径。还是上面的例子。假如给你下了一个命令:修理房子里面的红色的椅子。那么怎么表达呢?就是: 房子. 红色椅子 . 修理()但是如果命令式写在 红色椅子 上,那么命令可以写成:这张椅子 . 修理 () ; 这就是相对路径。换过来用 Flash 实例说明。现在我想让主场景下的一个带动画的电影剪辑myMC 在一开始就不要播放,而是先停止。那么你有什么办法呢?办法之一可能就是使用绝对路径,在主场景放入这个MC的那个帧写上: _root.myMc.stop();这个是对的。但是一旦myMc 的名字一变,你就得跟着改这句话了。有没有办法不管这个“ MC”的实例名不管怎么改,都会被

11、我们同样一句的AS找到?当然可以,就是把 AS写在这个 MC上。选中 Mc, 在 AS 面板上写onClipEvent (enterFrame)这里的 this也是 Flash 的关键字, 这个 this 就是指这个 MC本身 . this.stop(); 现在不管你这个 MC放在哪里,命名是什么,反正肯定会停下来。为什么,因为AS在 MC上。如果你在这里写上_root.stop();那就错了。为什么?仔细想想。另外的一个关键字就是_parent。如果你理解了 this, 那么 _parent并不难理解。举例:还是哪个假设 房子 (_root) ,桌子 , 书他们的关系是:房子. 桌子. 书选

12、中桌子,在桌子上写代码:写onClipEvent(enterFrame)_parent. 打扫 () ;意思就是打扫房间;选中书,在书上写代码:写onClipEvent(enterFrame)_parent. 打扫 (); 意思就是打扫桌子。_parent 也就是父级。桌子的_parent 就是房子的 timeline( 时间线 ) ,书的 _parent 也就是 桌子。点的后面对象的_parent 就是点前面的对象。第三章 AS 语法篇首先要强调的是: AS 语法的大小写是敏感的。如: gotoAndPlay()正确 gotoAndplay()错误 。关键字的拼写必须和语法一致,要做到很容易

13、,因为在Flash 的 AS面板里面,关键字会有不一样的颜色显示。这里说一下,我们要从开始就养成编程的好习惯,如在每个语句后面都加上分号,有可能的话,尽量给复杂的语句加上注释。注释的例子.专业 .专注.word 可编辑 ./ 这个是注释,但是只能有一行/*这个也是注释,可以写很多行*/接下来,介绍几个类型的语法。1、几个常用的控制场景的方法,如play(); /让时间轴的指针播放stop(); /停止时间轴的指针在程序触发时候的那个帧gotoAndPlay(); /让指针跳转到某个帧,然后继续播放gotoAndStop(); /让指针跳转到某个帧,停止在那个帧nextFrame(); /往下走

14、一帧prevFrame(); /往前走一帧这些都是方法。方法?解:打个比方,我们管吃饭叫作一种方法,用来解决肚子饿这个问题。我们管stop() 叫做一种方法,用来解决时间轴指针停下来的问题。我们管上面的几个东西叫方法,用来解决时间轴指针运动的问题。2、控制属性的语法 有很多,我列几个_x, _y , _alpha ,_width ,_name, .等等属性,这些都是属性属性?解:打个比方。我们管你的身高叫做属性,用来标识你的高度。我们管你的体重叫属性,用来标识你的质量。我们管_x叫属性,用来标识目标的 X 轴坐标。我们管 _alpha 叫属性,用来标识目标的透明度 .3、其他方法和自己定义的方

15、法 。除了系统自带的一些方法外,也可以自定义一些方法,用Function 定义。回顾一下,今次要大家记住的东西: AS 语法的大小写是敏感的 、方法的概念 、属性的概念 。第四章:怎样写AS程序要牢记的是,学习编程是一个过程(process )而不是一个事件(event )。如果你第一次学习到的时候不能照着完成也不必担心。关于计算机语言:编程语言是用来发指令给电脑,由电脑接受信息并执行命令编程语言也有词汇表和文法,如人类的语言类似通过编程语言我们可以告诉电脑去做什么,也可以从他那获得信息关于语法和逻辑:学习编程的思想比学习一种语言的语法重要假设 FLASH是懂我们语言的单词的,我们对FLASH

16、说:“ Flash,让一个球在屏幕里面弹来弹去吧”FLASH会什么都做不了,FLASH要我们用他的世界懂的东西,例如:movie clips, buttons, frames,来描述它要做的事那我们再说一次:“ Flash,让一个名字叫ball_one的 movie clip在屏幕里面弹来弹去吧”我们已经用 MC这个 FLASH懂的东西来描述了,但FLASH还是什么都不做,因为它需要更多的信息:*这个球有多大*它放在哪里?*一开始它首先往哪个方向运动?*它初始的速度是多少*它在哪里弹来弹去呢?*弹来弹去要持续多久呢?看来我们需要有逻辑结构地告诉FLASH它应该怎么去做1、一个球指的是一个叫ba

17、ll_one的圆形 MC,直径 50 像素2、弹来弹去的地方就是场景,边550 像素,高 400 像素。3、将 ball_one放在场景某处4、以一个随机的角度,75 像素每秒的速度开始移动ball_one5、如果 ball_one接触到场景的某边,就弹回6、一直不停地运动下去,直到我们让它停如果 FLASH真的懂我们语言的单词,他应该知道如何开始做了总结一下关键点:无论是使用什么语言,编程思想的艺术都在于用如何将逻辑步骤列出在你开始将要做的事用计算机语言描述之前,用我们人类的语言描述一次会很有帮助即使你将他们翻译成任何的计算机语言,他们的逻辑步骤应该是一样的电脑不懂用假设完成去你的想法,他们

18、没有思考能力.专业 .专注.word 可编辑 .例 1:然后我们象学所有语言一样吧,来个HELLO WORLD吧在 ACTION面板输入var message = HELLO WORLD;trace (message);然后我们按 CTRL和 ENTER键,看到结果了吗?第一行代码: var message = HELLO WORLD;告诉 FLASH记住一个名字叫message的容器(通常在计算机里称为变量(variable),在 FLASH里面,变量可以装文字,和可以装数字)里面装了这样的数据 (datum) ,内容为: HELLO WORLD“=”等号是一个常用的运算符号(operato

19、rs),在 FLASH里面它不是代表相等,而是代表赋值var 命令的含义是宣布给整个电影,此变量的内容是什么。第二行代码: trace (message);就是要 FLASH显示 message 里面的内容,为什么 FLASH能输出内容呢,因为当你按CTRL+ENTER又或者在网上打开这个电影的时候,你输入的每一段ActionScrpit代码,都会通过FLASH的解释器 (interpreter)来解读然后执行如果解释器能解释你的代码,他会运行它,并返回你要返回的结果,如果解释器看不懂你的代码,他也会返回错误代码告诉你错误的原因通常,我们发给解释器的命令不只命令这么简单,还包括命令的内容例如t

20、race(message);这个 trace输出命令的内容就是message,计算机里就称为参数 (argument 或 parameter) ,如果一个命令支持多个参数,参数之间一般用“, ”来分割,如: setProperty(目标,属性,值 );1. 表达式 (expression):(2 + 3) * (4 / 2.5) - 1可称为一个表达式,a+b也是表达式,需要解释器运算才得到结果的值。2. 条件 (conditionals):if(天气 = = 下雨 ) trace(还是带把雨伞吧 ) 如一个例子就是美女上街,会先看看外面会否下雨,下雨就带上雨伞。这就叫条件判断啦3. 循环 (

21、loop):如果要输出 5 个数字,你是写5 遍 trace 命令吗?更多的就不行了吧,你可以用 while和 for 命令来完成重复的动作if (条件)for(i=0;iCopy Frames再选择 question 2的第十帧, EditPaste Frames将第一题复制过来了当然问题要改成 When was MP3 audio supportadded to Flash?(什么时候 FLASH开始支持 MP3格式导入?),答案也要改成Version3, Version4,Version 5数据初试化虽然是个很简单的FLASH,但是象其他复杂的FLASH一样,先告诉FLASH要用到的数据

22、,例如题目的答案等,这是个好习惯,越复杂的FLASH,受惠越多正常来说定义数据应该LOADING结束之后的。.专业 .专注.word 可编辑 .为了把题目定在第一题,ACTION还需要一句stop();选择第一帧,在ACTION面板里面输入代码/初始化变量var q1answer; / users answer for question 1第一题用户的答案var q2answer; / users answer for question 2第二题用户的答案var totalCorrect = 0; / counts number of correct answers答对的题数var displ

23、ayTotal; / text field for displaying users score显示用户分数的变量/ stop the movie at the first questionstop();你会发现 / 开头的那一行代码都变了色,/ 代表的是注释,是用来辅助阅读代码用的,对代码执行没有影响(是的,你在里面写笑话,写小说都可以,不会影响你的FLASH的- )我们定义了四个将要用到的变量,用途已经在注释里面写了,写注释也是一个好习惯关于命名变量名变量起名 displayTotal,意思是 display total,因变量名不能使用空格和破折号,所以用第二个单词的开始字母大写,以此分

24、隔单词一些程序员也喜欢用下划线:display_total记住一定要给你的变量起一个一眼就能识别意义的名字添加 label我们知道第二题是在第10 帧的,我们只需要一句AS:gotoAndStop(10);就可以执行第二个问题了不过 MOOCK告诉你这不是好习惯,因为动画的内容是不断改变的,所以我们应当习惯使用label ,即使帧数如何变化,只要label指向正确,不需要修改 ACTION都可以继续运行( chocobo 再提醒你吧,不要使用相同的label ,即使在不同是Scene 当中)好了,我们在label层的第 1、 10、20 分别 F6 创建关键帧,给他们写上init、q2、 qu

25、izEnd要给按钮写上代码了在三个按钮里面分别写入代码,大同小异的:按钮一:on (release) q1answer = 1;gotoAndStop (q2);按钮二:on (release) q1answer = 2;gotoAndStop (q2);按钮三on (release) q1answer = 3;gotoAndStop (q2);这三段代码用人类的语言描述,就是:当用户点击某个按钮选择答案后,把他选择的答案记录到q1answer 变量中去,然后进入下一题。on 这个单词代表随后的就是一个要触发的事件release是指在按钮上松开鼠标这样一个事件当动画执行到这里的时候,三个按钮都

26、会分别监听用户有没有做在按钮上放开鼠标这个动作,一旦发生,按钮就会自动执行大括号 里面的代码了若用户选第一个, 中是:q1answer = 1; /用 q1answer 变量记住用户选择的是第一个答案gotoAndStop (q2); /进入下一题上面我用了注释的方法来解释两句代码,你必须习惯,因为不是所有源程序都有教程,但是好的源程序都会有注释第二题的按钮与前面相似,只是变量换为q2answer,选择完进入结束的画面,例如第一个,改为:on (release) q2answer = 1;gotoAndStop (quizEnd);.专业 .专注.word 可编辑 .结束的画面结束应该做什么,

27、当然是告诉用户分数啦,写在第20 帧,就是 label为 quizEnd 的那帧的代码:/ 判断答案是否正确,正确就加分if (q1answer = 2)totalCorrect = totalCorrect + 1;if (q2answer = 3)totalCorrect+; /totalCorrect+其实是 totalCorrect = totalCorrect + 1;一个更简洁的写法,几乎少打了一半的字母啊。/把得分传递给动态文本的变量displayTotaldisplayTotal = totalCorrect;用人的语言描述:如果第一题选3,答对数加一,如果第二题选2,答对数加

28、一,把答对题目数赋予另一变量现在答对的题数是放到变量 displayTotal 中了,怎么显示?在 quiz end 第 20 帧处建关键帧,键入 Thank you for taking the quiz! Your score final score is: /2(谢谢回答问题,你最后成绩是答对了/2道题)在/2 之前那个空白的地方放上一个文本框,菜单TextOptions 显示文本面板,把 StaticText 下拉改为 Dynamic Text ,顺便把 Border/Bg 的钩去掉,最后在 Variable 那一栏填上要显示的变量名 displayTotal你是不是和 chocobo

29、 一样不耐烦了?快下载 http:/www.moock.org/webdesign/lect.oockQuizzes.zip; 吧,里面的 quiz.fla 就是本章的内容,其他的 fla的内容也将会在后面讲到第六章 再来补充一点 AS知识数据分类是很有必要的,象 8005154556 这样的一个数字是没有多大意义的,但是如果将他归类到电话号码:800-515-4556 ,那就有意义了。(这是WHO的电话啊?是不是 MOOCK的?呵呵)AS里面数据的类型相对其他语言已经算少的,有:*字符串 String由一系列的 characters 组成,可以包含字母,数字和符号,一般用双引号 扩住(记住不

30、要写了全角的“”)*数字 Number*布尔值 Boolean用于条件判断的时候,只有两个值true 和 false* Null and Undefined这也是数据的类型之一,Null 代表变量还没有内容, Undefined 是连变量都未定义* 数组 Array 用来按顺序地存放一组数据* MovieClip这也是数据的一种吗?你就当它是FLASH特有的一种数据吧,装的就是一个个MC INSTANCE(解释一下吧, MC从 library拖到场景中就是一个独立的instance ,一个 MC可以创立多个instance ),还有 MC里面的其他数据* Object 可以是 FLASH已经内

31、部定义的,或者是用户写程序时自定义的一类数据再分类一下number, string, boolean, undefined, and null,这些属于简单的数据类型,特征是只有一个值array, object, movieclip.就可以包含不止一个值chocobo:其实 array也应该算是 object ,上面这些概念的东西总是有些沉闷,没关系,留下印象,以后用到了,自然会回过来真正了解一遍的第七章可以重复的函数 (function)不是用几个例子来示范吗?怎么还不讲例子啊?是的,下一个例子要用到函数,所以再补充点函数知识。(上当了吧?chocobo 也上当了,开始翻译的时候没想到这篇东

32、西这么长的,这才讲完第一个例子呢55 )一个函数是下面这个样子的:function funcName () statements在 ACTION面板里面, function这个单词是变色的,FLASH认识这个单词,它代表后面的就是描述函数的内容funcName是函数的名字,当你以后要用这函数的时候,就要敲这个名字了(是的,建函数就是为了以后反复调用它)() 小括号里面是参数,什么是参数一会再讲 大括号里面的就是函数所要完成功能的一句句代码。当我们建立函数之后,函数并不运行,只在你用函数的名字调用它出来,才正式开始运行例如我们有这样一个函数function sayHi () .专业 .专注.wo

33、rd 可编辑 .trace(Hi!);当我们在 FLASH某帧需要 sayHi 的时候,输入AS:sayHi();是不是和最常见的stop();还有 play();一样啊?因为它们都是函数嘛sayHi 函数真是智,来个有意义的函数吧。先在场景里放好一个名字叫ball的 instance (千万记得要给instance输入名字,否则函数运行没结果别找我)在第一帧输入这样一个函数:function moveBall () ball._x+= 10; /怕有人不懂,解释一下,_x 代表 ball的横坐标, ball._x+=10 的意思是 ball._x= ball._x+ 10 ,这样省略的写法还

34、有-=*= /=等等ball._y += 10;再做一个按钮,按钮的AS:on (release) moveBall();好的,运行,从AS你可以看到,每点一下按钮,执行一次函数,而函数让小球下斜下移动。(FLASH的坐标轴,原点在左上角)为什么要建立函数呢,就是想更有效率,现在有这个函数已经不用每移动一下写一次AS了,但还是不够,我们需要更有扩展性(flexibility)的函数这个函数只能移动叫ball的 MC,只能向固定的方向移动固定的距离,我们需要可以移动任何MC,向任何方向移动任何距离的函数,这样可以省却很多输入 AS的工夫(这就叫一劳永逸,呵呵)我们的新函数有三个地方是每次调用都不

35、一样的1、移动的那个MC的名字2、水平移动的距离3、垂直移动的距离(呵呵,用极坐标,也可以把2、 3 说成移动的距离,和移动的角度,不过大家都不习惯极坐标)为了告诉函数这些变化的地方,我们需要参数(parameters),参数在定义函数的时候就要输入,我们的函数改写好了:function moveClip (theClip, xDist, yDist) theClip._x += xDist;theClip._y += yDist;当我们要实现原来函数功能的时候,现在调用新函数就变成moveClip (ball, 10, 10);定义函数的时候 function moveClip (theCl

36、ip, xDist, yDist) 这里的 theClip 等参数 (parameters)只是定义,本质上说是不存在的,因为没有内容嘛当我们用 moveClip (ball, 10, 10);调用的时候, ball就输入到 theClip 中去了,这里的 ball 称为 arguments (偶读得书少,不会翻译)arguments 可以是一个变量,也可以是一个表达式(例如a+b ,先得出结果再传输给函数)只要用逗号隔开各个参数就行函数如何结束呢正常来说,函数运行完 里所有语句结束,我们也可以用一句AS:return; 让它中途结束,例如:function say(msg) return;t

37、race(msg);这个函数被调用的时候将什么都不做就结束return还有更重要的用途:function sqr / Squares a number平方return x * x;a=sqr(2); /a将会被赋予2 的平方 4return更重要的用途就是返回数据在 AS里面,有个内建的函数Math.sqrt (就是说你敲入的时候会变色),其功能和我们刚才做的sqr 函数是一样的,现在你该知道内建函数也没什么神秘的,我们一样可以做出相同功能的来。.专业 .专注.word 可编辑 .第八章第二个版本选择题的制作读到这你发现什么,我是发现了,MOOCK不是在教 AS,他简直是在上编程课。在第一个版

38、本的制作里你发现了什么缺点?是的,输入了很多次AS,很麻烦。我们要做的是用函数来集中我们的代码,只有集中了才好修改,越复杂的程序越是如此(想象一下在很多个MC之间查代码,真是头痛,当然是集中一块好)这个多选题,我们就归结成两个函数吧answer 和 gradeUser代码(可以直接看源程序,在上面地址那个ZIP 里面的 quiz-version2.fla):大部分的代码都被集中到第一帧了,千万不要被一大堆代码吓着了,代码这么长,只是为了让阅读者看得更清楚而已。(其实越短的代码才越可怕呢,呵呵)/ Stop the movie at the first questionstop ();/ Ini

39、tialize main timeline variables定义变量var displayTotal; / Textfield for displaying users scorevar numQuestions = 2; / Number of quiz questionsvar q1answer; / Users answer for question1var q2answer; / Users answer for question2var totalCorrect = 0; / Number of questions answered correctly以上和例一一样var corr

40、ectAnswer1 = 3; / The correct choice for question 1第一题的正确答案var correctAnswer2 = 2; / The correct choice for question 2第二题的正确答案/ Function to register users answers这个函数的功能是提交答题者的答案function answer (choice) answer.currentAnswer+;/ 现在 answer.currentAnswer是 1,正在提交的是第一题,下一次answer.currentAnswer就变成 2,代表提交的是第

41、二题set (q + answer.currentAnswer + answer, choice);/不复杂不复杂, q + answer.currentAnswer + answer第一题的时候就是q1answer,第二题是 q2answer ,把参数 choice 传过来的值放到两个变量里面而已if (answer.currentAnswer = numQuestions) / 判断是不是两题都答完了,是就转到问题结束帧gotoAndStop (quizEnd); else gotoAndStop (q + (answer.currentAnswer + 1);/ Function to

42、tally users score这个函数是改题的function gradeUser() / Count how many questions user answered correctly将两个答案和正确答案比较,对就totalCorrect加一/ 此处用了一个 for 循环,大家如有疑问的,可以查 AS字典,在帝国就有中文版for (i = 1; i = numQuestions; i+) / 下面用的 eval 有必要说一下,它的作用是将字符串和变量组成一个新的变量名,是个很方便的功能if (eval(q + i + answer) = eval(correctAnswer + i)

43、totalCorrect+;/ Show users score in an on-screen text field 将答案显示出来,与第一个例子同 displayTotal = totalCorrect;好了,第一帧的函数写好了,之后每个答案的选择按钮就简单了例如第一题的选项一,就写:on (release) answer(1);.专业 .专注.word 可编辑 .第二题的写法同上(如果你的选择题有很多道,做法都是一样的,只要复制第一题,然后把题目改了就行)最后在 quizEnd 帧里面调用改题的函数gradeUser();分析第二个例子是代码,你会发现比第一个例子精简了很多。而集中在同一

44、帧的代码,将:* 更容易修改* 更容易升级* 更少的出错机会* 更容易查错* 更精简(更少的字节数)第九章 数组 (arrays)在下一个新版本的多选题里,我们将使用什么AS的特性,来让它更好呢?那就是数组。数组就是一系列的数据(MOOCK又开始上课了, chocobo 的英文和计算机都不算好,为免误人子弟,概念性的东西尽量精简)例如这样两个变量储存的数据:fruit1 = oranges;fruit2 = apples;它们是互相独立的,使用起来很不方便,我们需要的是数组,以下是数组的定义方法,用“&#;”框住,用“ , ”分隔开每个元素:fruitList = oranges, apple

45、s;现在两个数据是放到同一个数组里面了,我们开始详细解说数组数组里面每一个数据称为元素(element)。而每一个元素都有个独立数字代表所处的位置,数字叫索引(index),注意 !第一个数据的索引是0,第二个才是1要按索引来提出数据,我们要用一个运算符&#; ,例如使用 fruitList第一个元素赋值给a:a=fruitList�又例如将 a 的值赋给 fruitList第一个元素:fruitList�=a;当然 &#; 里面也可以放表达式、变量:var index = 3;/ Set numApples to 2var a = fruitListindex;下面是个使用表达式

46、的例子:/ Create a myFrames array. Note the legal formatting.建立一个记录LABEL的数组var myFrames = storyEnding1,storyEnding2,storyEnding3,storyEnding4;/ Set randomFrame to a randomly picked element of myFrames/ by calculating a random number between 0 and 3/ 随机从数组中提取一个 LABELvar randomFrame = myFramesMath.floor(M

47、ath.random() * 4);/ Now go to the random frame/ 然后跳到该 LABEL播放gotoAndStop(randomFrame);而数组包含数据的个数称为长度(length),例如 fruitList.length就等于 2对数组最常用的处理就是从数组中选出有用的数据了,来看一个运用循环的例子:/ Create an array建立数组,里面放了一些歌的类型var soundtracks = electronic,hip hop,pop,.专业 .专注.word 可编辑 .alternative,classical;/ Check each eleme

48、nt to see if it contains hip hop/一个循环,检查每一个元素是否等于hip hop这个类型/ 另外,请留意此处 MOOCK对 FOR的写法, J=0 之前有一个 VAR,这好象可有可无,其实是一个好习惯!for (var j = 0; j soundtracks.length; j+) trace(now examining element: + j);if (soundtracksj = hip hop) trace(the location of hip hop is index: + j);break; /跳出循环,找到了就不用再找了关于数组的方法 (met

49、hod)方法就是从属于某一对象(object)的函数,通常都是对该对象进行处理的函数好象太抽象了?我们还没讲到什么是对象,其实数组是对象的一种,我们就暂且将数组的方法理解为一个专门处理数组内数据的结构和内容的工具吧例如一个叫 push() 的方法就是一个工具,用于为数组添加一个元素,并且加在该数组的最后使用起来并不复杂,看例子就知:/ Create an array with 2 elements var menuItems = home, quit;/ Add an element加一个元素/ menuItems becomes home, quit, products/ 现在数组的结构变成

50、 home, quit, products menuItems.push(products);/ Add two more elements这次是加两个/ menuItems becomes home, quit, products, services, contact menuItems.push(services, contact);跟 push() 相反从最后弹出一个元素的方法是pop()而跟 push() 类似,但是是将一个元素加到数组的开头的方法是unshift() ,与之相反的是 shift()方法 sort 和 reverse,用于重新排列数组的元素方法 splice用于从数组中间删除某元素方法 slice和 concat可以在某些数组的基础上生成另一个新的数组方法 toString 和 join可以将整个数组变成单一个字符串以上方法都可以从 AS字典里面查到第十章 第三个版本的选择题首先,此版本沿用了上一版本的函数answer 和 gradeUser在这一版本中,用户的答案与正确答案将使用数组来存放看看我们的新代码:stop();/ * Init main timeline variablesvar displayTotal

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!