Flash ActionScript3.0类里面静态属性的访问方法
- 格式:doc
- 大小:770.00 KB
- 文档页数:5
ActionScript3.0语法简介-三清网在Flash ActionScript3.0中与ActionScript2.0的语法相比有一些改变,下面我们来了解一下Flash ActionScript3.0语法。
一、区分大小写在ActionScript3.0中是区分大小写的,大小写不同的标示符会被视为不同,例如:var a:Number;var A:Number;a和A可以看做两个变量,又如var myplay:MoveClicp;var myPlay:MoveClicp;第二、使用点语法使用点语法可以用来访问对象的属性,例如我们定义了一个影片剪辑mc,我们要查看mc的x轴坐标,可以这样写:mc.x,如果要访问这个对象的方法,可以这样写:mc.play();另外我们在导入包或者导入类的时候也会使用到点语法,例如我们要加载某一个包中的类,可以这样写:flash.events.EventMouse。
第三、斜杠语法在ActionScript3.0中斜杠语法主要用来注释,比如我们不希望某行运行,可以在这行的开头添加://,在通常情况下我们都会利用双斜杠作注释用法如下:// 定义一个num属于Number类型var num:Number;多使用注释会让我们的程序可读性更高。
第四、分号分号通常用来结束语句,在ActionScript2.0的时候很多人不习惯写分号,这是一个不好的习惯,ActionScript3.0严格模式下不写分号编译器会报错,另外经常写分号会让我们的程序的可读性更高。
分号使用方法如下:stop();var a:int=324;gotoAndPlay(2);第五、小括号小括号一般有三种用处第一种通过小括号的组合可以改变运算的优先顺序,例如:(a+b)*c/4;第二种可以结合逗号运算符来计算一个以上表达式,并返回最后的结果,例如:trace((a=a++,b=b++,a+b));第三种通过小括号想函数或方法传递一个或多个参数,例如:gotoAndPlay(2);第六、注释这里的注释跟上面提到的双斜杠注释有所不同,这里的注释可以把多行注释掉。
包flash.display类public final class BlendMode继承BlendMode Object语言版本: A ctionScript 3.0运行时版本: A IR 1.0, Flash Player 9提供混合模式可视效果的常量值的类。
这些常量在以下项目中使用:∙flash.display.DisplayObject 类的 blendMode 属性。
∙flash.display.BitmapData 类的 draw() 方法的 blendMode 参数另请参见flash.display.DisplayObject.blendModeflash.display.BitmapData.draw()公共属性属性定义方constructor : ObjectObject对类对象或给定对象实例的构造函数的引用。
prototype : ObjectObject[静态] 对类或函数对象的原型对象的引用。
公共方法方法定义方hasOwnProperty(name:String):BooleanObject 指示对象是否已经定义了指定的属性。
isPrototypeOf(theClass:Object):BooleanObject 指示 Object 类的实例是否在指定为参数的对象的原型链中。
propertyIsEnumerable(name:String):BooleanObject 指示指定的属性是否存在、是否可枚举。
setPropertyIsEnumerable(name:String, isEnum:Boolean= true):voidObject 设置循环操作动态属性的可用性。
toString():StringObject 返回指定对象的字符串表示形式。
valueOf():ObjectObject 返回指定对象的原始值。
公共常量常量定义方ADD : String = "add"BlendMode [静态] 将显示对象的原色值添加到它的背景颜色中,上限值为 0xFF。
2023ActionScript3.0实用教程2023ActionScript3.0实用教程:使用显示对象在as中,通信是完全由事件驱动的。
as3.0的事件模型允许完全封装类对象。
封装的意思是类对象仅处理他们自己的内部,与其他类对象的功能没有联系。
他们做自己的工作并且保持低调。
对象需要与外部世界通信时,他们就分发事件。
注册在对象上的监听器等待分发的事件,并作出相应的动作。
在许多情况下都会触发事件,这取决于类本身。
通过标准的as API处理他们。
7.1 as3.0 事件模型as3.0事件模型使对象之间的通信简单、一致。
7.1.1 事件过程细节处理事件的3个过程如下事件监听器声明声明注册函数来监听事件事件分发当事件在类中发生时,它就会被这个对象分发出去。
事件对象被事件传递。
事件对象包含事件的相关信息。
事件监听器或处理器事件监听器或处理器是拥有一系列代码的函数,响应函数可以“听到”的事件。
事件监听器和事件处理器是相同的意思——是一个监听事件也是处理事件的函数。
7.1.2 事件分发所有的类都用从EventDispatcher类继承的dispatchEvent()方法分发事件,或者实现IEventDispatcher接口。
当类中的某件事情发生并且想要分发到应用程序的其他部分让他们知道这件事情发生了时,就调用dispatchEvent()方法。
事件相关的信息和其他需要的参数通过时间对象发送给监听器。
事件的分发者是事件过程的开始。
Event类是所有事件对象的基类。
当一个事件被EventDispatcher的方法触发(例如addEventListener),事件对象都被作为参数传递到监听器函数中。
事件对象包含被分发事件的相关数据。
Event类有标准的属性,方法和被大多数类使用的常量。
Event类的属性bubbles 布尔值,指示事件是否为冒泡事件cancelable 指示是否可以阻止与事件相关联的行为currentTarget 当前正在使用某个事件监听器处理事件对象的对象phase 事件流中的当前阶段target 事件目标type 分发事件类型7.1.3 注册事件监听器事件监听器向对象注册来监听对象分发的事件。
ActionScript编程静态属性与作用域链虽然子类不继承基类的静态属性,但是静态属性却在基类或任何子类的作用域中。
换句话说,静态属性在定义它们的类或任何子类的“作用域”中,因此,在定义静态属性的类体及该类的任何子类中都可以直接访问静态属性。
例如,修改上一节中的示例,以说明Class1类中定义的test静态属性在Class2类的作用域中。
也就是说,Class2类可以访问test静态属性,而不必用定义test的类名作为变量的前缀,如下所示。
package{import flash.display.MovieClip;public class Example extends MovieClip{public function Example(){var myCla:Class2 = new Class2();}}}class Class1{public static var test:String = "static";}class Class2 extends Class1{public function Class2(){trace(test); //输出:static}}如果使用与同类或基类中的静态属性相同的名称定义实例属性,则实例属性在作用域链中的优先级比较高,因此可以这样认为,实例属性替代了静态属性,从而会使用实例属性的值,而不使用静态属性的值。
例如,如果在Class2类定义名为test的实例属性,trace()语句将使用实例属性的值,而不使用静态属性的值,如下所示。
package{import flash.display.MovieClip;public class Example extends MovieClip{public function Example(){var myCla:Class2 = new Class2();}}}class Class1{public static var test:String = "static";}class Class2 extends Class1{public var test:String = "instance";public function Class2(){trace(test); //输出:instance}}。
数组的定义与数组里边元素的访问
接下来我们看一下数组的构造函数。
数组的构造函数首先是变量var,然后是我们给数组取的名称叫myArray(当然你也可以自己取喜欢的名称),接着冒号,后边跟Array,然后使用new关键字来构造。
那么现在myArray就是一个数组,它现在也是一个空的数组。
如果我要建立一个有5个元素的数组,那怎么办呢?我在Array里边提供一个参数5,这个时候呢,它生成的是一个有5个索引的数组,虽然现在里边还是空的,我没有向它赋值。
把这些元素放入到相应的索引里面去。
直接赋值给myArray也是可以的。
如果我们要建立一个新的数组,我们直接建立这样一个
空的数组。
那么,如果我们已经给数组赋了值,我可以追踪一下数组里具体的值。
比如说我追踪一下数组的第0个索引的值,通过trace(数组名称[索引]);就可以输出了。
大家注意第0个索引的值是12,也就是数组的第1个元素。
只给了这个数组5个元素,所以就会输出undefined未定义。
出。
第1章 AcionScript 3.0概述ActionScript 3.0是针对Flash Player运行时环境的编程语言,它用于处理各种人机交互、数据交互等功能。
本章将粗略的介绍ActionScript语言的发展历史、新增特色、编程环境等内容,以及第一个ActionScript3.0程序。
1.1 关于ActionScript 3.0ActionScript3.0是随着Adobe Flash CS3和Flex 2.0的推出而同步推出的脚本编程语言。
本节将对ActionScript3.0进行简要的介绍,并通过一些具体的实例图片,展示了常见的ActionScript的应用领域。
1.1.1 ActionScript 3.0介绍ActionScript3.0与ActionScript以前的版本有个本质上的不同。
它是一门功能强大、符合业界标准的一门面向对象的编程语言。
它在Flash编程语言中有着里程碑的作用,是用来开发富应用程序(RIA)的重要语言。
ActionScript 3.0在用于脚本撰写的国际标准化编程语言ECMAScript的基础之上,对该语言做了进一步的改进,可为开发人员提供用于丰富Internet应用程序(RIA)的可靠的编程模型。
开发人员可以获得卓越的性能并简化开发过程,便于利用非常复杂的应用程序、大的数据集和面向对象的、可重复使用的基本代码。
ActionScript 3.0在Flash Player 9中新的ActionScript虚拟机(AVM2)内执行,可为下一代RIA带来性能突破。
1.1.2 ActionScript 3.0能做什么最初在Flash中引入ActionScript,目的是为了实现对Flash影片的播放控制。
而ActionScript发展到今天,其已经广泛的应用到了多个领域,能够实现丰富的应用功能。
ActionScript 3.0最基本的应用与创作工具Adobe Flash CS3结合,创建各种不同的应用特效,实现丰富多彩的动画效果,使Flash创建的动画更加人性话,更具有弹性效果。
包flash.geom类public class Point继承Point Object语言版本: A ctionScript 3.0产品版本: L ite 2.0运行时版本: A IR 1.0, Flash Player 9Point 对象表示二维坐标系统中的某个位置,其中x表示水平轴,y表示垂直轴。
下面的代码在 (0,0) 处创建一个点:var myPoint:Point = new Point();以下类的方法和属性使用 Point 对象:∙BitmapData∙DisplayObject∙DisplayObjectContainer∙DisplacementMapFilter∙Matrix∙Rectangle您可以使用 new Point() 构造函数创建 Point 对象。
查看示例另请参见flash.display.BitmapDataflash.display.DisplayObjectflash.display.DisplayObjectContainerflash.filters.DisplacementMapFilterflash.geom.Matrixflash.geom.Rectangle公共属性隐藏继承的公共属性显示继承的公共属性属性定义方constructor : ObjectObject对类对象或给定对象实例的构造函数的引用。
length : NumberPoint[只读 (read-only)] 从 (0,0) 到此点的线段长度。
prototype : ObjectObject[静态] 对类或函数对象的原型对象的引用。
x : NumberPoint该点的水平坐标。
y : NumberPoint该点的垂直坐标。
公共方法隐藏继承的公共方法显示继承的公共方法方法定义方Point(x:Number = 0, y:Number = 0)Point 创建一个新点。
add(v:Point):PointPoint 将另一个点的坐标添加到此点的坐标以创建一个新点。
利用Math 类的数学公式画图类的数学公式画图在AS3当中,当中,通过数学公式可以绘制一些非常规则的函数图形,我们需要用到一些类。
通过数学公式可以绘制一些非常规则的函数图形,我们需要用到一些类。
这里我们讲Math 类。
Math 类是一个静态类,使用Math 类的属性和方法可以访问和处理数学当中常见的函数。
比如常见的三角函数,正弦,余弦,正切等等;同时也包含一些求对数,求幂,取整,取最大最小值,产生随机值等等这些实用的函数。
另外,Math 类当中也包含了常数,比如圆周率当中常用的PI ,自然数对数等。
这些属性、功能和方法同数学中的完全一样的,如果感兴趣可以去了解一些数学知识。
全一样的,如果感兴趣可以去了解一些数学知识。
我们来看一个具体的例子。
一开始我们声明画布canvas ,然后用g 来引用canvas.graphics 属性,同时设置线的粗细是1像素,canvas 的位置是(275,200)实际上是让显示的画布居中,因为整个舞台的大小是550*400。
然后把canvas 添加到显示场景中。
变量a 是数字类型,数值为200;变量px ,py 为采样点;变量angle 是角度,数字类型的;变量amp 是放大系数,也是数字类型,初始值为5。
然后是绘制的循环部分。
i 从0开始到360*8,实际上我是希望绘制8圈,i 是不断递增1的。
然后将角度转换成角度值。
然后将角度转换成角度值。
px 和py 当前点的计算公式,当前点的计算公式,后面是具体的螺旋线形的计后面是具体的螺旋线形的计算公式,前面专门乘了一个放大系数amp 。
然后不断地更新当前点的具体的角度来求出新的点,然后向新的点绘制直线。
点,然后向新的点绘制直线。
最后来看一下最终的结果。
最后来看一下最终的结果。
只要更改一下不同的数学公式就可以绘制出不同的曲线。
比如说常用的星形曲线,数学公式是这样的。
上面的代码跟前边讲的是一样的,rc 和rm 是两个参数值,比例改变的话图形也会产生相应的变化。
类里面静态属性的访问方法
在类的继承的时候,如果我们不分情况,全盘照搬过去,有时候是没法满足设计要求的。
因此在定义类的属性和方法的时候,往往也会使用一个static静态关键字来定义静态的属性和方法。
所谓的静态呢就是这些方法没法被子类所继承的,是父类所独有的。
下面我们还是使用A和B的例子。
我们来尝试重新构造一下B的类,首先我们声明了一个静态的变量n,这个n属性值是100,我们保存一下。
我们再来看一下A,A里面public var m:Number =200;这一句我们暂时不需要,用//注销掉。
我们只是继承了类B,就是A继承了B。
按照我们以前所说的情况,A会继承B里面的所有属性和方法,按道理来说如果不是静态的,那么A同样有一个n的属性,同时还会运行B的构造函数。
如果我们要查看类B里面的n属性,可以不用单独的实例化成b再n了,因为它是静态的,所以可以直接在类名称后加n,也就是trace(B.n);,大家可以看到输出面板上“我是
类B”,“100”。
这是访问静态属性的一个方法。
如果我们还是访问A,大家可以看到在编译器里面会出现编译错误,访问可能未定义的属性n。
n呢本身在A里面是没有被定义的,同样我们实例化成a也找不到n,它是不会被
继承过去的。
这就是访问静态属性的方法,静态的类它有自己的访问方式,希望大家可以记住。