ActionScript3从零基础学习类Word下载.docx
- 文档编号:612556
- 上传时间:2023-04-29
- 格式:DOCX
- 页数:30
- 大小:38.15KB
ActionScript3从零基础学习类Word下载.docx
《ActionScript3从零基础学习类Word下载.docx》由会员分享,可在线阅读,更多相关《ActionScript3从零基础学习类Word下载.docx(30页珍藏版)》请在冰点文库上搜索。
trace("
这是写的第一个类"
);
在d:
\exam下建立一个FLA文件,在第一帧写如下代码:
importnet.smilecn.MyClass;
varmyClass:
MyClass=newMyClass();
那么在输出面板里就会输出“这是写的第一个类”。
•importnet.smilecn.MyClass:
导入写的类(类在使用前要导入net.smilecn是包名,MyClass是类名)。
•varmyClass:
MyClass=newMyClass():
实例化MyClass这个类(实例化的时候会执行构造函数,那么就会执行trace这句代码)。
成员常量、变量和方法
首先看一段代码:
publicconstPI:
Number=3.1415926;
publicvarr:
Number;
privatevars:
}
在前面的基础上增加了几行代码,其中:
const是定义常量,var是定义变量,所谓的常量就是不能改变的量,变量就是能够改变的量;
public、private是属性关键字。
在ActionScript3.0中属性关键字有这样几个:
•public:
指定类、变量、常量或方法可用于任何调用者。
•private:
指定变量、常量或方法仅可供声明或定义它的类使用。
•protected:
指定变量、常量、方法或命名空间只可用于定义它的类及该类的任何子类。
•internal:
指定类、变量、常量或函数可用于同一包中的任何调用者。
下面主要说明public、private这两个属性关键字。
从字面上理解public是公共的意思,说简单点就是任何地方都可以调用;
private是私有的意思,就是说只有这个类中才可以调用。
举例说明,在前面用的FLA文件中的第一帧加上这个的代码:
myClass.r=3;
//正确
myClass.s=18;
//错误
可以看到因为r声明为public,所以在外部调用是正确的,s声明为private,所以不直接在外部访问s这个变量,这就是public和private的区别。
如果要在外部改变s的值,则可以修改MyClass类,如下:
publicfunctionsetSValue(value:
Number):
void{
s=value;
这样通过一个公共方法(就是函数)设置了s的值,可以在FLA文件中调用:
myClass.setSValue(18);
当然跟其它语言一样,也可以用get和set方法来读取或写入private变量的值:
publicfunctionMyClass(){
publicfunctionsetsValue(value:
void{
publicfunctiongetsValue():
Number{
returns;
在调用的时候就可以用这样的语句了:
myClass.sValue=18;
//(当使用过set后可以这样操作)
vara=myClass.sValue;
//(当使用过get后可以这样操作)
继承
继承是指一种代码重用的形式,允许程序员基于现有类开发新类。
现有类通常称为“基类”或“超类”,新类通常称为“子类”。
importnet.smilecn.MyClass;
//类在使用之前要先导入
publicclassMySubClassextendsMyClass{
publicfunctionMySubClass(){
Pi:
"
PI);
//正确
trace("
r:
r);
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.1415926
NaN
注意:
标有错误的那句代码要去掉,不然会报错。
下节继续讲解继承.
(编辑:
非熊)
-类的继承二
当前位置:
主页>
AS入门>
作者:
arrowyoung发表于:
2009-08-29Tag:
菜鸟教程继承
在上节中,我们介绍到了继承,继承在我们的实际应用中是用的比较多的一种方式。
上节的继承是继承我们自己定义的类,如果要用到影片和类关联起来,我们可能会更多的去继承AS3中已有的类——Sprite和MovieClip;
MovieClip这个类我们在2.0中就经常用到,就是影片剪辑,Sprite是什么了,其实就是一个没有帧的MovieClip,在没有动画的情况下我们会更多的使用Sprite,来看一段代码:
packagenet.smilecn{importflash.display.Sprite;
publicclassMySpriteextendsSprite{publicfunctionMySprite(){graphics.beginFill(0xFFCC00);
graphics.drawCircle(40,40,40);
}}}
现在我们建立一个MySprite的类(注意保存的AS文件名一定要跟类名一样),因为它是继承的Sprite类,所以我们可以使用graphics来画图,这里我们画了一个圆。
要使用这个类,我们同样要在帧上加一些代码:
importnet.smilecn.MySprite;
varmySprite:
MySprite=newMySprite();
addChild(mySprite);
mySprite.x=100;
mySprite.y=100;
这里首先我们还是建一个实例,名字叫做mySprite,接下来我们用到了这句:
addChild(mySprite);
addChild相当于2.0里面把库中的元件载入到场景中,用了addChild后我们画的那个圆就显示在场景中了,与之对应的是removeChild,是从场景中删除
接下来
mySprite.x=100;
是设置坐标位置,因为是继承的Sprite,因为Sprite有x、y属性,所以MySprite也有了(注意x,y相当于2.0里面的_x和_y)
上面的代码MySprite是用代码画的一个图形,有很多图形我们不可能都用代码去画,这样就失去FLASH的主要功能了,我们还可以把库中的元件链接到MySprite这个类中。
我们新建一个MC,在库中在这个MC上点右键,点链接,会出现一个对话框,将―为ActionScript导出‖打上勾,在上面类的后面填上要链接的类,这里我们填上:
net.smilecn.MySprite;
基类那里我们填上:
flash.display.Sprite
然后再发布看看,会发现不仅有刚才画的圆,我们在刚才的那个MC里画任何东西都会在里面,这样就做到了元件和类的链接。
在FLASHCS3中还加入了一个文档类(documentclass)的概念,使用文档类后,我们刚才写帧上面的代码就不用了,直接写在文档类里面,文档类就相当于第一帧的位置,这样我们就不用在FLA文件里写代码了,所有代码都写在AS文件里,达到了界面和代码的分离。
现在在建立一个类,MainForm.as:
importnet.smilecn.MySprite;
publicclassMainFormextendsSprite{publicfunctionMainForm(){varmySprite:
我们发现刚才第一帧的代码搬到这个类里面来了,那个第一帧的代码就可以全部删除掉
最后在FLA的属性栏中找到文档类,在后面输入类的位置:
net.smilecn.MainForm(注意是包名加类名)
好,现在发布看一下,是不是跟刚才的效果一样。
投稿:
@有疑问:
去艾睿论坛交朋友:
去友吧
-加载库中MC
2009-08-30Tag:
菜鸟教程加载库中MC
上一节中,我们将库中的MC链接到一个类上,达到了类与元件的绑件,那么要完成像2.0一样的效果,将库中的元件载入到场景中是不是也要在MC上链接类了(3.0中没有以前的标识符),如果每个在库中的MC都要链接一个类就麻烦了,其实只需要在类后面起个名字就可以了。
比如我们起个名字叫MyMc,基类就用默认的flash.display.MovieClip(注意在点确定时有个找不到类的警告,不用管它,点确定就可以了),在文档类中这样写:
importflash.display.MovieClip;
publicclassMainFormextendsSprite{publicfunctionMainForm(){varmyMc:
MovieClip=newMyMc();
addChild(myMc);
同样,要播放库中的声音也可以这样做,方法一样,链接在类后面起个名字,比如MySound,基类就用默认的flash.media.Sound
importflash.media.Sound;
varmySound:
Sound=newMySound();
mySound.play();
play方法是播放声音
通过上述方法,我们可以通过代码将库中的元件加载到场景中或播放库中的声音。
反射的方式加载库里的MC
2009-09-01Tag:
反射加载MC
在上一节中我们用到了在库中加载一个元件,我们还有另一个方法来加载一个元件,就是用"
反射"
的方法,反射就是用库中元件的名字(字符串)去得到我们想要的元件,用代码去把它变成一个类.
我们在库中建立两个MC,并用上一节的方法将它们导出,名字分别为:
Mc1和Mc2,我们要将这两个元件加载到场景上,按照上一节的方法,我们应该这样做:
publicclassMainFormextendsSprite{publicfunctionMainForm(){varmc1:
MovieClip=newMc1();
addChild(mc1);
varmc2:
MovieClip=newMc2();
addChild(mc2);
那么如果用反射的方法应该怎样做呢,看下面的代码:
importflash.utils.getDefinitionByName;
publicclassMainFormextendsSprite{publicfunctionMainForm(){varClassReference:
Class=getDefinitionByName("
Mc1"
)asClass;
varinstance:
MovieClip=newClassReference();
addChild(instance);
这段代码只加载了Mc1这个元件,而且我们发现代码比上一种方法更复杂一些,那为什么要使用反射这种方法呢,我们在看一段代码:
publicclassMainFormextendsSprite{publicfunctionMainForm(){for(vari=1;
i<
=2;
i++){varClassReference:
Mc"
+i)asClass;
}}}}
我们发现现在这种写法是不是更简单的一种写法,当库中有名字为Mc1,Mc2,Mc3……这种更多的MC时,我们只需要改变循环变量的范围就可以了.
-事件
事件菜鸟教程
在as3.0中我们用的最多的可能就是"
事件"
,我们会侦听各种事件.
当我们点击一个按钮时,在2.0中我们可能会用到这样的语句:
_btn.onPress=function(){};
当然后我们也可以用addEventListener来侦听一个点击事件.在3.0中我们一律用addEventListener这种加侦听的方式来完成.
_btn.addEventListener(MouseEvent.CLICK,btnClickHandler);
functionbtnClickHandler(event:
MouseEvent):
void{//点击后代码}
这是一个单击事件,基本上我们用到的系统里的所有类都会有事件,在帮助文档中我们可以找到,我们可以很方便的使用这些事件.
我们现在把上一节中我们用到的代码稍加一下变动:
importflash.events.MouseEvent;
instance.name="
mc"
+i;
instance.addEventListener(MouseEvent.CLICK,insClickHandler);
}}privatefunctioninsClickHandler(event:
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最好的教程其实就是帮助,所以要勤看帮助,这样才能进步更快.
下节继续讲解事件侦听.
事件侦听
2009-09-03Tag:
事件侦听菜鸟教程
在上一节中我们介绍了侦听,要知道我们可能经常会用到侦听,所以我们会写很多个addEventListener,经常有些侦听我们用过一次后可以就不会再用了,那么为了节省资源,我们要将这些侦听删除掉,要侦除侦听这们用这样的方法:
instance.addEventListener(MouseEvent.CLICK,insClickHandler);
//添加侦听instance.removeEventListener(MouseEvent.CLICK,insClickHandler);
//删除侦听
这里我们用removeEventListener就可以将侦听删除掉,我们在编程过程中,已经不用的侦听我们应该及时删除掉以节省资源.现在我们来看一个小例子,这个例子的功能是有两个按钮,点击其中一个自己变成不可点击,另一个变成可点击状态.
importflash.display.SimpleButton;
publicclassMainFormextendsSprite{publicfunctionMainForm(){_btn1.addEventListener(MouseEvent.CLICK,btnClickHandler);
privatefunctionbtnClickHandler(event:
_btn1.addEventListener(MouseEvent.CLICK,btnClickHandler);
_btn2.addEventListener(MouseEvent.CLICK,btnClickHandler);
event.currentTarget.removeEventListener(MouseEvent.CLICK,btnClickHandler);
在我们上一
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- ActionScript3 基础 学习