FlashAS基础精典教程(7)

2008-04-02 11:06:09来源:互联网 阅读 ()

新老客户大回馈,云服务器低至5折



  方法method其实是一些附属于对象的函数,其作用主要是访问对象中的数据,或完成某种功能

  所以调用方法和调用普通函数类似:objectName.methodName() 只是前面加上了对象的名字

  例如上面的BALL对象,我们需要他的面积,使用 getArea 这个方法:

  ball.getArea();

  预习一下,在下一个例子中,虽然MOOCK不打算建立自己的方法,但是将使用内建于MovieClip对象的两个方法:

  *MovieClip.attachMovie()

  此方法是将Library(CTRL L按出来的那个)里面的symbol复制一个instance到场景中

  (chocobo:给不懂概念的人紧急补习,放在库(Library)里面的叫符号(symbol),拉到场景中就叫实例(instance),一个符号可创建多个实例,符号改变则实例随之改变)

  和之类似的是MovieClip.duplicateMovieClip(),但是该方法需要事先在场景里已有一个实例

  *MovieClip.removeMovieClip()

  此方法和上面相反,是删除场景里面的instance的

  大家看到了,在下一例中,我们将使用MovieClip这个内建对象,因为他就能够满足我们的需要,不必新类型的对象了

  我们先来熟悉一下MC这种对象

  他有很多属性_height(高度)、 _alpha (透明度),MC的属性大家能够在AS字典里面查到,在AS面板里这写属性也是变色显示的

  同时MC的方法,例如 MC.play(); 等也能够查到

  当我们在MC里面的时间线使用这些属性、方法的时候,能够省略不写前面部分,直接写play();

  MC能够互相嵌套,MC当中又有MC,就出现类似: mc1.mc2.play(); 的情况

  为了调用包含自己的上一级MC的方法、属性,AS里面用_parent,例如:

  在mc1包含mc2 ,在mc2中想使mc1播放:_parent.play();

  更有另一个保留字:_root指代该电影的主时间线

  例如想在某个mc里面让整个电影播放:_root.play();

  想在某个MC中让另一mc1播放:_root.mc1.play();

  更有,MC中定义的变量,将作为MC的一个属性可被访问

  在mc1里面写了一句 var a=1;

  我们将可使用 mc1.var来调用他

  关于类(class)

  这个概念大家还是不大懂吧?类就是定义一个对象将拥有什么的方法跟属性的东东,类似MC里instance和symbol的关系,instance的结构就是由symbol决定的,每个instance又能够不相同

  AS里面没有专门定义类的例如class这样的关键字,我们使用函数来定义类,这种函数称构造函数constructor function,函数的作用就是产生我们定义好的类的实例(就是对象)

  举例最实在:

  // make a Ball constructor 最简单的构造函数

  function Ball () {

  // do nothing 里面是空的

  }

  现在我们能够定义新类型Ball的对象了

  myBall = new Ball();

  语法就是前面是新对象实例名,等号后是new加构造函数名

  myBall就拥有了Ball定义的一切结构了(虽然Ball里面是空的,嘻嘻)

  但是不是任何对象创建都用new,例如mc创建就用的是attachMovie()或duplicateMovieClip()

  好了,我们的构造函数总不能空的,如何定义类,让新对象有自己的属性呢?

  使用this这个关键字,看例子,新的构造函数:

  function Ball () {

  this.radius = 10;

  this.color = 0xFF0000;

  this.xPosition = 35;

  this.yPosition = -4;

  }

  以后我们定义出来的新对象,都拥有半径,颜色、XY坐标属性啦

  慢着,怎么每个新对象都一模相同啊?

  再改,用函数的参数来定义动态的属性:

  // Make the Ball constructor accept

  // property values as arguments.

  function Ball (radius, color, xPosition, yPosition) {

  this.radius = radius;

  this.color = color;

  this.xPosition = xPosition;

  this.yPosition = yPosition;

  }

  我们能够定义不同属性的对象了

  myBall = new Ball(6, 0x00FF00, 145, 200);

  本教程关于更有创建方法连同如何在类之间继承方法和属性没讲,

  无论如何,OOP都不可能在这么短时间之内说清楚,

  但这不妨碍我们做下一个例子了。

  第十二章 第四个版本的选择题

  第三个版本的时候我们已设想好,新版本中题目将是动态生成的,不用我们在FLASH的场景里面一题一题输入了,我们要做的只是输入题目和题目答案的数据就够了。

  很明显,每一条题目都将是个对象(不然我们学这么多对象的知识干嘛?),而这些任何的题目,会用一个数组来存放

  再重提一下,可配合源程式学习 http://www.moock.orghttp://webdesign.chinaitlab.com/lect...oockQuizzes.zip ;

  好,开始设计题目的模版

  模版就是个MC,包含两个TEXT FIELD,里面不用填东西,分别起变量名为:(FOR小鸟:TEXT FIELD就是按工具条里T按钮拉出来的文本框,同时还要在文本面板(ctrl t)里将其改为Dynamic Text,变量名则在面板的Variable处改)

  * qNum (以后将显示题目的编号)

  * qText (以后将显示题目的正文)

  我们还要在库里面做标识,点一库面板(ctrl l)右上的Options>> Linkage ,选第二个Expert this symbol,identifier填上questionTemplate,至此,题目模版完成

  再制作选项的模版

  选项模版应包括一个选择用的按钮

  更有该选项的内容,一个起名为answerText的TEXT FIELD

  在本例的后面,将为每一个动态生成的选项一个唯一的名字,譬如: "answer0", "answer1",..."answern".

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇: 使用钢笔工具绘制曲线路径

下一篇: 拖拽动作连同碰撞动作周详讲解