ActionScript3.0从零基础学习类1

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

的教程,但公司太忙都没时间写,最近看到群里有些朋友对3.0还不是很了解,所以从现在开始抽时间写点教程,从基本的东西开始.今天就到这里,下节继续讲解类的使用.(编辑:非熊)投稿:51as.com@gmail.com有疑问:去艾睿论坛交朋友:去友吧类的继承当前位置:主页AS入门作者:arrowyoung发表于:2009-08-29Tag:菜鸟教程继承继承这一节,我们讲到一个我们用的比较多的一个概念—-继承.继承是指一种代码重用的形式,允许程序员基于现有类开发新类。现有类通常称为‖基类‖或‖超类‖,新类通常称为‖子类‖。先看一段代码:packagenet.smilecn{importnet.smilecn.MyClass;//类在使用之前要先导入publicclassMySubClassextendsMyClass{publicfunctionMySubClass(){trace(Pi:,PI);//正确trace(r:,r);//正确trace(s:,s);//错误}}}我们发现这个类跟我们之前写的类的区别是多了‖extends‖这个一个关键字,这个关键字的作用就是说明,我们现在的这个类MySubClass是继承MyClass这个类的,继承之后我们就可以使用MyClass这个类里的变量和方法了,这样就达到代码重用的目的,比如说我们现在要写关于若干个球的类,有足球\篮球\排球等等,那么我们可以先找出这些的共性,先写一个球的类,然后再继承这个球的类写出若干个球的类,那么相同的东西就写在球的类中了,这个达到了代码重用;可以看到,PI,r,s是在MyClass这个类中定义的变量,那么由于MySubClass继承了MyClass,所以MySubClass也能使用这些变量了,但代码前两个我写的正确,后一个写的错误码是什么意思了,回忆下上一节学到的‖属性关键字‖,public和protected,在子类中是可以使用的,private是不行的,所以这里PI和r是可以使用的,s不能用.并且子类在构造的时候也会执行基类的构造方法,我们改一下FLA文件的代码:importnet.smilecn.MySubClass;varmySubClass:MySubClass=newMySubClass();mySubClass.r=3;在输出面板会输出:这个我写的第一个类Pi:3.1415926r:3注意:标有错误的那句代码要去掉,不然会报错.下节继续讲解继承.(编辑:非熊)类的继承二在上节中,我们介绍到了继承,继承在我们的实际应用中是用的比较多的一种方式。(编辑:非熊)投稿:51as.com@gmail.com有疑问:去艾睿论坛交朋友:去友吧加载库中MC上一节中,我们将库中的MC链接到一个类上,达到了类与元件的绑件,那么要完成像2.0一样的效果,将库中的元件载入到场景中是不是也要在MC上链接类了(3.0中没有以前的标识符),如果每个在库中的MC都要链接一个类就麻烦了,其实只需要在类后面起个名字就可以了。比如我们起个名字叫MyMc,基类就用默认的flash.display.MovieClip(注意在点确定时有个找不到类的警告,不用管它,点确定就可以了),在文档类中这样写:packagenet.smilecn{importflash.display.Sprite;importflash.display.MovieClip;publicclassMainFormextendsSprite{publicfunctionMainForm(){varmyMc:MovieClip=newMyMc();addChild(myMc);}}}同样,要播放库中的声音也可以这样做,方法一样,链接在类后面起个名字,比如MySound,基类就用默认的flash.media.Soundpackagenet.smilecn{importflash.display.Sprite;importflash.display.MovieClip;importflash.media.Sound;publicclassMainFormextendsSprite{publicfunctionMainForm(){varmyMc:MovieClip=newMyMc();addChild(myMc);varmySound:Sound=newMySound();mySound.play();}}}play方法是播放声音通过上述方法,我们可以通过代码将库中的元件加载到场景中或播放库中的声音。反射的方式加载库里的MC在上一节中我们用到了在库中加载一个元件,我们还有另一个方法来加载一个元件,就是用反射的方法,反射就是用库中元件的名字(字符串)去得到我们想要的元件,用代码去把它变成一个类.我们在库中建立两个MC,并用上一节的方法将它们导出,名字分别为:Mc1和Mc2,我们要将这两个元件加载到场景上,按照上一节的方法,我们应该这样做:packagenet.smilecn{importflash.display.Sprite;importflash.display.MovieClip;publicclassMainFormextendsSprite{publicfunctionMainForm(){varmc1:MovieClip=newMc1();addChild(mc1);varmc2:MovieClip=newMc2();addChild(mc2);}}}那么如果用反射的方法应该怎样做呢,看下面的代码:packagenet.smilecn{importflash.display.Sprite;importflash.display.MovieClip;importflash.utils.getDefinitionByName;publicclassMainFormextendsSprite{publicfunctionMainForm(){varClassReference:Class=getDefinitionByName(Mc1)asClass;varinstance:MovieClip=newClassReference();addChild(instance);}}}这段代码只加载了Mc1这个元件,而且我们发现代码比上一种方法更复杂一些,那为什么要使用反射这种方法呢,我们在看一段代码:packagenet.smilecn{importflash.display.Sprite;importflash.display.MovieClip;importflash.utils.getDefinitionByName;publicclassMainFormextendsSprite{publicfunctionMainForm(){for(vari=1;i=2;i++){Class;varClassReference:Class=getDefinitionByName(Mc+i)asvarinstance:MovieClip=newClassReference();addChild(instance);}}}}我们发现现在这种写法是不是更简单的一种写法,当库中有名字为Mc1,Mc2,Mc3……这种更多的MC时,我们只需要改变循环变量的范围就可以了.事件在as3.0中我们用的最多的可能就是事件,我们会侦听各种事件.当我们点击一个按钮时,在2.0中我们可能会用到这样的语句:_btn.onPress=function(){};当然后我们也可以用addEventListener来侦听一个点击事件.在3.0中我们一律用addEventListener这种加侦听的方式来完成._btn.addEventListener(MouseEvent.CLICK,btnClickHandler);functionbtnClickHandler(event:MouseEvent):void{//点击后代码}这是一个单击事件,基本上我们用到的系统里的所有类都会有事件,在帮助文档中我们可以找到,我们可以很方便的使用这些事件.我们现在把上一节中我们用到的代码稍加一下变动:packagenet.smilecn{importflash.display.Sprite;importflash.display.MovieClip;importflash.utils.getDefinitionByName;importflash.events.MouseEvent;publicclassMainFormextendsSprite{publicfunctionMainForm(){for(vari=1;i=2;i++){Class;varClassReference:Class=getDefinitionByName(Mc+i)asvarinstance:MovieClip=newClassReference();instance.name=mc+i;instance.addEventListener(MouseEvent.CLICK,insClickHandler);addChild(instance);}}privatefunctioninsClickHandler(event:MouseEvent):void{trace(你点击了:,event.currentTarget.name);}}}event.currentTarget是指当前侦听的对像,加个name属性就是这个对像的名字,这里MouseEvent就是鼠标事件;Sprite、MovieClip、SimpleButton、Button这一些都可以加鼠标事件侦,当然不止这一些(注:SimpleButton是元件按钮,Button是组件按钮)MouseEvent.CLICK这个实际上是一个常量,代表着click这个字符串,从字面上我们就可以看出这个是单击的意思,通常这些事件其实都可以字面上看到意思,像MouseEvent.MOUSE_DOWN就是鼠标按下事件,值得一提的是3.0里面加上了双击事件,是MouseEvent.DOUBLE_CLICK,不过使用双击还要使doubleClickEnabled为true才行.我们不可能从别人那里知道一个类有多少种事件,所以帮助是最好的老师,我们学习AS3最好的教程其实就是帮助,所以要勤看帮助,这样才能进步更快.下节继续讲解事件侦听.(编辑:非熊)事件侦听在上一节中我们介绍了侦听,要知道我们可能经常会用到侦听,所以我们会写很多个addEventListener,经常有些侦听我们用过一次后可以就不会再用了,那么为了节省资源,我们要将这些侦听删除掉,要侦除侦听这们用这样的方法:instance.addEventListener(MouseEvent.CLICK,insClickHandler);//添加侦听instance.removeEventListener(MouseEvent.CLICK,insClickHandler);//删除侦听这里我们用removeEventListener就可以将侦听删除掉,我们在编程过程中,已经不用的侦听我们应该及时删除掉以节省资源.现在我们来看一个小例子,这个例子的功能是有两个按钮,点击其中一个自己变成不可点击,另一个变成可点击状态.packagenet.smilecn{importflash.display.Sprite;importflash.display.SimpleButton;importflash.events.MouseEvent;publicclassMainFormextendsSprite{publicfunctionMainForm(){_btn1.addEventListener(MouseEvent.CLICK,btnClickHandle

1 / 33
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功