ActionScript3.0从零基础学习类
- 格式:pdf
- 大小:745.46 KB
- 文档页数:39
ActionScript3.0 编程基础_数据类型及其运算、程序流程关键字: flex7.3 数据类型和数据运算7.3.1 关于数据类型一个变量或者常量被声明时,必须指定其数据类型:原生数据类型:语言本身提供:字符串、整数、布尔型等复杂数据类型:由基本数据类型组成的复合型类型:类、接口等。
基本数据类型:∙Boolean:布尔型,true 和 false∙int:整数,存放32位二进制整数,范围:-2147483648~2147483647,当超出自动转为Number∙Null:空值,是字符串和所有类的默认值。
∙Number:整数型和浮点型,使用64位双精度格式存放数据,没有小数点时自动转换成整数。
最小值和最大值分别存放在Number 对象的MIN_VALUE 和 MAX_VALUE属性中。
∙String:字符串,以Unicode 编码格式存放。
∙uint:正整数类型,0~4294967295∙void:值为undefined,只能用作函数的返回类型。
1、Boolean:布尔型,它可以使用true或false(用于进行逻辑运算)两个值中一个值。
2、int:表示为 32 位带符号整数的数据类型。
int 类表示的值的范围是:-2,147,483,648 (-2^31) 到 2,147,483,647 (2^31-1)。
3、uint:表示 32 位无符号整数的数据类型的方法。
4、String:表示一串字符的数据类型。
5、Number:表示 IEEE-754 双精度浮点数的数据类型。
6、.Date:表示日期和时间信息。
复杂数据类型:Object 对象、 Array 数组、 Date 日期、Error 错误对象、Function 函数、 RegExp 正则表达式、XML XML数据对象、XMLList。
其中Object 是所有对象的基类。
以下是各个类型的默认值∙Object、Array :null∙Number:NaN∙int、uint:0∙Boolean:false∙*:不定类型,默认值:undefined。
第一章了解ActionScript3.01、ActionScript3.0的一些新特性:●引入显示列表的概念。
显示列表用于创建、管理显示对象的层次结构,任何Flash应用程序实际上就是显示列表。
在显示列表中,采用新的深度机制来管理显示对象的显示层次,使显示对象的深度管理更加人性化。
●使用新的事件模型。
ActionScript3.0中的事件模型与第2用户界面组件有点类似,是采用观察者模式设计的。
新增了事件流、默认行为等功能,很多在ActionScript2.0中难以实现的功能,使用ActionScript3.0将会非常简单。
●引入了E4X,使得操作XML更加方便、快捷。
在以往版本的ActionScript中,使用XML对象前,需要将其转换为数组或对象,而ActionScript3.0可直接操作XML 对象。
●支持正则表达式。
正则表达式在查找和替换模式方面有很大的优势,以往需要几十行代码实现的功能,使用正则表达式只需几行。
2、一般来说,舞台(Stage)是用来显示Flash元素的平台,而主时间轴(Main Timeline)则用来控制Flash元素的显示,它们在编程中扮演相当重要的角色。
舞台是放置显示对象的最终容器,所有的显示对象都直接或间接地包含在舞台中。
舞台的名字是stage,它是Stage 类的对象。
通过点语法可以读取舞台容器中的非孤立变量值,但由于Flash为这些变量规定了只读属性,所以暂时无法通过类似“stage.stageWidth=800”这样的语句为舞台中的变量重新赋值。
Stage类不是动态类,不能向舞台stage动态地添加属性。
主时间轴的名字是root,它是由MainTimeline类创建的对象。
主时间轴其实是一个特殊的影片剪辑实例,它的图层、帧的使用方法与影片剪辑实例完全相同。
写在帧中的代码都属于主时间轴。
可以这样认为,写在帧中的变量都在MainTimeline类中,而root是由MainTimeline 类创建的对象,这些变量都成了root的属性,因此可用“root.属性名”的形式来访问这些变量。
AS3从零基础学习类一个简单的类先写一个简单的类,了解一下类的结构:这里是一个类的简单结构,package是包的意思。
假设现在项目存放在d:\exam这个文件夹,那么这个类直接保存在d:\exam中,取名叫MyClass.as (注意:类的文件名应该跟类名需一样)。
如果代码写成这样:那么MyClass.as就应该放在d:\exam\net\smilecn这个路径下面。
其中:•public class MyClass:表示要创建的这个类的名字是MyClass(类名可以任意取,习惯以大写开头)。
•public function MyClass(){}:funciton代表一个方法名(可以说是函数),跟类名相同的方法,称为构造函数,就是这个类被实例化时执行的函数。
现在把代码改成:那么在输出面板里就会输出“这是写的第一个类”。
其中:•import net.smilecn.MyClass:导入写的类(类在使用前要导入net.smilecn是包名,MyClass是类名)。
•var myClass:MyClass = new MyClass():实例化MyClass这个类(实例化的时候会执行构造函数,那么就会执行trace这句代码)。
成员常量、变量和方法首先看一段代码:在前面的基础上增加了几行代码,其中:const是定义常量,var是定义变量,所谓的常量就是不能改变的量,变量就是能够改变的量;public、private是属性关键字。
在ActionScript 3.0中属性关键字有这样几个:•public:指定类、变量、常量或方法可用于任何调用者。
•private:指定变量、常量或方法仅可供声明或定义它的类使用。
•protected:指定变量、常量、方法或命名空间只可用于定义它的类及该类的任何子类。
•internal:指定类、变量、常量或函数可用于同一包中的任何调用者。
下面主要说明public、private这两个属性关键字。
第1章 ActionScript概述ActionScript最初是由Macromedia(现已被Adobe收购)为其Flash产品开发的一种简单脚本语言,现在最新版本为3.0(简称AS3),已经成为一种完全面向对象(OOP)的编程语言。
ActionScript是一种基于ECMAScript的脚本语言,可用于编写Adobe Flash动画和应用程序。
由于ActionScript和JavaScript都是基于ECMAScript语法的,理论上它们可以流畅地互相翻译。
但是,JavaScript的文档对象模型(DOM)是以浏览器窗口、文档和表单为主的,ActionScript的文档对象模型则以SWF格式的动画为主,包括动画、音频、文字和事件。
1.1 ActionScript 3.0简介ActionScript ActionScript 3.03.0在使用时与以前2个版本有很多相似之处,但是由于底层的不同,在理解内部机制时最好从全新的角度出发,尤其要注意不同版本的代码不能混用。
一些处理方法也发生了比较大的变化,比如事件模型,显示对象的方法等,接触过ActionScript ActionScript 1.0 1.0或ActionScript ActionScript 2.0 2.0的读者要格外注意。
1.2 ActionScript 3.0开发环境3.0的第一步就是要安装设置开发环境。
本使用ActionScriptActionScript 3.03.0的几种常用开发环境,并简要说节将介绍ActionScriptActionScript 3.03.0开发环境比较熟悉的明各自的优缺点。
对ActionScriptActionScript 3.0读者可以略过本节。
1.2.1 Flash CS3/CS43.0的软件之一,同ActionScript 3.0Flash CS3/CS4是官方支持ActionScript时拥有强大的动画编辑和界面设计功能,被很多设计师和3.0程序员来说动画和动画师所青睐,但对于ActionScriptActionScript 3.0设计界面并不是必须的。
ActionScript3.0无基础入门教程ActionScript3.0入门教程:加载外部素材虽然说ActionScript2.0与ActionScript3.0熟练使用任意一门都可以,但是ActionScript3.0带来了许多新的.开发感受。
新时代的Flash已经开始向ActionScript3.0转型,许多新的Flash框架与Flash资料都是基于ActionScript3.0。
所以还是两门双修好勒。
ActionScript2.0的Helloworld已经在《【ActionScript】ActionScript2.0的Helloworld》(点击打开链接)中介绍过了。
下面开始介绍ActionScript3.0的Helloworld。
1、首先,打开Flash之后,新建ActionScript3.0文件,而不是ActionScript2.0。
其实两者在基本布局上面是没有区别的,关键是其脚本发生根本性的变化。
会ActionScript2.0的开发者,很容易就能转到ActionScript3.0上面来。
2、之后,通过窗口-组件,或者Ctrl+F7,或者通过右侧面板工具栏的“组件”按钮,打开“组件面板”。
这里面,Flash提供了许多向C#,VB等窗口控件。
在User Interface文件夹中拖入Button与Label,一个按钮,一个标签文本。
3、之后,调整这两个控件的属性。
对于按钮,赋予其实例名称为Button1。
其Label属性为“单击”。
对于标签文本,赋予其实例名册为"Label1",autoSize为Center居中,text的内容去掉。
4、之后,右击第1帧,打开动作面板,就可以写代码。
在动作面板写入如下代码:[javascript] view plain copy print?//定义一个字符串str,其值为Hello worldvar str:String="Hello world";//定义一个函数,为clickEventvar clickEvent:Function=function(){//此函数触发之后,把Label1的文本改成strLabel1.text= str;//然后向控制台输出strtrace(str);}//之后为Button1添加点击事件的监听器,为clickEvent这个函数Button1.addEventListener("click",clickEvent);按Ctrl+Enter编译之后,得到如下的效果:按钮被点击之后,标签文本的值变为Hello world,同时控制台中输出一个Helloworld。
AS3从零基础学习类提供下载arrowyoung2010-10-10一直想写个关于AS3.0的教程,但公司太忙都没时间写,最近看到群里有些朋友对3.0还不是很了解,所以从现在开始抽时间写点教程,从基本的东西开始.很多人还习惯用2.0去写一些东西,我已经有半年多没用2.0,很多2.0的习惯不能带到3.0中来,比如说在MC或BUTTON上去写代码,当然3.0里面还是可以在帧上写代码(这里用到的版本是FLASH CS3,FLEX对于初学者来说还不适合),但要想把AS学好,不管是2.0还是3.0都应该用类的方式来写代码.现在来写一个简单的类,了解一下类的结构:这里是一个类的简单结构,package是包的意思,学过JAVA的朋友应该知道这个概念,其实说简单点就是这个类文件所放的位置,假设现在我们这个项目是放在d:\exam这个文件夹里面,那么我们刚才写的类直接保存在exam这个文件夹里面,取名叫MyClass.as就可以了(注意:类的文件名应该跟类名一样),因为现在package后面没有任何东西,如果代码写成这样:那么MyClass.as就应该放在d:\exam\net\smilecn这个路径下面.public class MyClass : 这里是表示我们要建的这个类的名字是MyClass,这个名字可以随便起,习惯上以大写开头public function MyClass(){} : funciton 代表一个方法名,可以说是函数,跟类名相同的方法,我们称为构造函数,就是这个类被实例化时执行的函数,现在我们在把代码改一下:我们在d:\exam下建立一个FLA文件,在第一帧写如下代码:那么在输出面板里就会看到―这个我写的第一个类‖ 这段信息了,import net.smilecn.MyClass:导入我们的类(类在使用前要导入net.smilecn是包名,MyClass是类名)var myClass:MyClass = new MyClass() : 实例化MyClass这个类(实例化的时候会执行构造函数,那么就会执行trace这句代码)今天就到这里,下节继续讲解类的使用.(编辑:非熊)包概念,构造函数当前位置:主页>AS入门>作者:arrowyoung发表于:2009-08-29Tag:包概念构造函数菜鸟教程接着上一节的内容,上一节中我们建了一个简单的类,讲解了包的概念,构造函数的概念,接下来再看看成员常、变量和成员函数的概念,再来看一段代码:这里我们在以前的基础上增加了几句代码,const是定义常量,var是定义变量,所谓的常量就是永远不能改变的量,变量就是能够改变的量;public、private是属性关键字,在AS3中属性关键字有这样几个:public:指定类、变量、常量或方法可用于任何调用者private:指定变量、常量或方法仅可供声明或定义它的类使用protected:指定变量、常量、方法或命名空间只可用于定义它的类及该类的任何子类internal:指定类、变量、常量或函数可用于同一包中的任何调用者这里我们先重点看一下public、private这两个属性关键字,从字面上理解public是公共的意思,说简单点就是任何地方都可以调用,private是私有的意思,就是说只有这个类中才可以调用,我们用一个例子做一个简单的说明,还是在上一节中我们用的FLA文件中的第一帧加上这个的代码:可以看到因为r声明为public,所以我们在外部调用是正确的,s声明为private,所以不直接在外部访问s这个变量,这就是public和private的区别,那我们要在外部改变s的值应该怎么做呢,我们可以这样做,在来修改MyClass类:这样我们通过一个公共方法(方法就是函数的意思)设置了s的值,在FLA文件中这样调用:就可以了,当然跟其它语言一样,我们也可以用get和set方法来读取或写入private 变量的值:我们在调用的时候就可以用这样的语句了:(编辑:非熊)投稿:@ 有疑问:去艾睿论坛交朋友:去友吧类的继承当前位置:主页>AS入门>作者:arrowyoung发表于:2009-08-29Tag:菜鸟教程继承这一节,我们讲到一个我们用的比较多的一个概念—-继承.继承是指一种代码重用的形式,允许程序员基于现有类开发新类。
现有类通常称为‖基类‖或‖超类‖,新类通常称为‖子类‖。
先看一段代码:我们发现这个类跟我们之前写的类的区别是多了‖extends‖这个一个关键字,这个关键字的作用就是说明,我们现在的这个类MySubClass是继承MyClass这个类的,继承之后我们就可以使用MyClass这个类里的变量和方法了,这样就达到代码重用的目的,比如说我们现在要写关于若干个球的类,有足球\篮球\排球等等,那么我们可以先找出这些的共性,先写一个球的类,然后再继承这个球的类写出若干个球的类,那么相同的东西就写在球的类中了,这个达到了代码重用;可以看到,PI,r,s是在MyClass这个类中定义的变量,那么由于MySubClass继承了MyClass,所以MySubClass也能使用这些变量了,但代码前两个我写的正确,后一个写的错误码是什么意思了,回忆下上一节学到的‖属性关键字‖,public和protected,在子类中是可以使用的,private是不行的,所以这里PI和r是可以使用的,s不能用.并且子类在构造的时候也会执行基类的构造方法,我们改一下FLA文件的代码:在输出面板会输出:这个我写的第一个类Pi: 3.1415926r: 3注意:标有错误的那句代码要去掉,不然会报错.下节继续讲解继承.(编辑:非熊)-类的继承二当前位置:主页>AS入门>作者:arrowyoung发表于:2009-08-29Tag:菜鸟教程继承在上节中,我们介绍到了继承,继承在我们的实际应用中是用的比较多的一种方式。
上节的继承是继承我们自己定义的类,如果要用到影片和类关联起来,我们可能会更多的去继承AS3中已有的类——Sprite和MovieClip;MovieClip这个类我们在2.0中就经常用到,就是影片剪辑,Sprite是什么了,其实就是一个没有帧的MovieClip,在没有动画的情况下我们会更多的使用Sprite,来看一段代码:现在我们建立一个MySprite的类(注意保存的AS文件名一定要跟类名一样),因为它是继承的Sprite类,所以我们可以使用graphics来画图,这里我们画了一个圆。
要使用这个类,我们同样要在帧上加一些代码:这里首先我们还是建一个实例,名字叫做mySprite,接下来我们用到了这句:addChild相当于2.0里面把库中的元件载入到场景中,用了addChild后我们画的那个圆就显示在场景中了,与之对应的是removeChild,是从场景中删除接下来是设置坐标位置,因为是继承的Sprite,因为Sprite有x、y属性,所以MySprite也有了(注意x,y相当于2.0里面的_x和_y)上面的代码MySprite是用代码画的一个图形,有很多图形我们不可能都用代码去画,这样就失去FLASH的主要功能了,我们还可以把库中的元件链接到MySprite这个类中。
我们新建一个MC,在库中在这个MC上点右键,点链接,会出现一个对话框,将―为ActionScript导出‖打上勾,在上面类的后面填上要链接的类,这里我们填上:net.smilecn.MySprite ;基类那里我们填上:flash.display.Sprite然后再发布看看,会发现不仅有刚才画的圆,我们在刚才的那个MC里画任何东西都会在里面,这样就做到了元件和类的链接。
在FLASH CS3中还加入了一个文档类(document class)的概念,使用文档类后,我们刚才写帧上面的代码就不用了,直接写在文档类里面,文档类就相当于第一帧的位置,这样我们就不用在FLA文件里写代码了,所有代码都写在AS文件里,达到了界面和代码的分离。
现在在建立一个类,MainForm.as:我们发现刚才第一帧的代码搬到这个类里面来了,那个第一帧的代码就可以全部删除掉最后在FLA的属性栏中找到文档类,在后面输入类的位置:net.smilecn.MainForm(注意是包名加类名)好,现在发布看一下,是不是跟刚才的效果一样。
(编辑:非熊)投稿:@ 有疑问:去艾睿论坛交朋友:去友吧-加载库中MC当前位置:主页>AS入门> 作者:arrowyoung发表于:2009-08-30Tag:菜鸟教程加载库中MC上一节中,我们将库中的MC链接到一个类上,达到了类与元件的绑件,那么要完成像2.0一样的效果,将库中的元件载入到场景中是不是也要在MC上链接类了(3.0中没有以前的标识符),如果每个在库中的MC都要链接一个类就麻烦了,其实只需要在类后面起个名字就可以了。
比如我们起个名字叫MyMc,基类就用默认的flash.display.MovieClip(注意在点确定时有个找不到类的警告,不用管它,点确定就可以了),在文档类中这样写:同样,要播放库中的声音也可以这样做,方法一样,链接在类后面起个名字,比如MySound,基类就用默认的flash.media.Soundplay方法是播放声音通过上述方法,我们可以通过代码将库中的元件加载到场景中或播放库中的声音。
反射的方式加载库里的MC当前位置:主页>AS入门>作者:arrowyoung发表于:2009-09-01Tag:反射加载MC在上一节中我们用到了在库中加载一个元件,我们还有另一个方法来加载一个元件,就是用"反射"的方法,反射就是用库中元件的名字(字符串)去得到我们想要的元件,用代码去把它变成一个类.我们在库中建立两个MC,并用上一节的方法将它们导出,名字分别为:Mc1和Mc2,我们要将这两个元件加载到场景上,按照上一节的方法,我们应该这样做:那么如果用反射的方法应该怎样做呢,看下面的代码:这段代码只加载了Mc1这个元件,而且我们发现代码比上一种方法更复杂一些,那为什么要使用反射这种方法呢,我们在看一段代码:我们发现现在这种写法是不是更简单的一种写法,当库中有名字为Mc1,Mc2,Mc3……这种更多的MC时,我们只需要改变循环变量的范围就可以了.-事件当前位置:主页>AS入门>作者:arrowyoung发表于:2009-09-01Tag:事件菜鸟教程在as3.0中我们用的最多的可能就是"事件" ,我们会侦听各种事件.当我们点击一个按钮时,在2.0中我们可能会用到这样的语句:_btn.onPress = function(){};当然后我们也可以用addEventListener来侦听一个点击事件.在3.0中我们一律用addEventListener这种加侦听的方式来完成.这是一个单击事件,基本上我们用到的系统里的所有类都会有事件,在帮助文档中我们可以找到,我们可以很方便的使用这些事件.我们现在把上一节中我们用到的代码稍加一下变动:event.currentTarget是指当前侦听的对像,加个name属性就是这个对像的名字,这里MouseEvent就是鼠标事件;Sprite、MovieClip、SimpleButton、Button这一些都可以加鼠标事件侦,当然不止这一些(注:SimpleButton是元件按钮,Button是组件按钮)MouseEvent.CLICK这个实际上是一个常量,代表着"click"这个字符串,从字面上我们就可以看出这个是单击的意思,通常这些事件其实都可以字面上看到意思,像MouseEvent.MOUSE_DOWN就是鼠标按下事件,值得一提的是3.0里面加上了双击事件,是MouseEvent.DOUBLE_CLICK,不过使用双击还要使doubleClickEnabled 为true才行.我们不可能从别人那里知道一个类有多少种事件,所以帮助是最好的老师,我们学习AS3最好的教程其实就是帮助,所以要勤看帮助,这样才能进步更快.下节继续讲解事件侦听.(编辑:非熊)事件侦听当前位置:主页>AS入门>作者:arrowyoung发表于:2009-09-03Tag:事件侦听菜鸟教程在上一节中我们介绍了侦听,要知道我们可能经常会用到侦听,所以我们会写很多个addEventListener,经常有些侦听我们用过一次后可以就不会再用了,那么为了节省资源,我们要将这些侦听删除掉,要侦除侦听这们用这样的方法:这里我们用removeEventListener就可以将侦听删除掉,我们在编程过程中,已经不用的侦听我们应该及时删除掉以节省资源.现在我们来看一个小例子,这个例子的功能是有两个按钮,点击其中一个自己变成不可点击,另一个变成可点击状态.在我们上一节讲到的FLA文件在场景里加两个按钮一个名叫_btn1,一个叫_btn2;发布我们会发现点一个按钮后这个按钮的侦听就会被删除,另一个被加上.当然像按钮的帧听没必要删除,但关于时间之类的侦听,不用了就要删除了使一个按钮禁用可能用不到删除侦听的方法,大家可以会想到2.0里面用到的enabled,但在3.0中enabled对SimpleButton没有作用,对Button有作用,如果要完成相同的功能,我们要用mouseEnabled下一节我们再看类和类之前的消息传递.(编辑:非熊)-消息机制当前位置:主页>AS入门> 作者:arrowyoung发表于:2009-09-03Tag:消息机制菜鸟教程前两节中,我们讲到了侦听,类与类之前也是可以侦听的,类与类之前的侦听就达到了类和类之前发消息的功能,这其实就是AS3.0中的消息机制。