ActionScript是在Flash4发布的时候提出来的,当时的名称就叫做ActionScript,他的主要能是用来控制帧的跳转 和鼠标,键盘的交互。直到发布Flash5之后,ActionScript才正式地作为ActionScript1.0使用,但是它的发展速度相当快,到 了Flash MX2004(Flash 7),就引进了ActionScript2.0,它遵循ECMA标准,在面向对象编程方面,它开始变得逐步强大。像应用于浏览器的JavaScript, 也是基于ECMA标准的。
注:Flash 9/10 播放器内部建有2套虚拟机,AVM1用来执行ActionScript1.0和2.0代码,AVM2用来执行ActionScript3.0代码,但是AVM2的速度要比AVM1快得多。
一、标识符
标识符是什么呢?简单的理解就是我们每定义一个变量,那么这个变量就称之为标识符,在ActionScript 3.0中,不能使用关键字和保留字作为标识符。包括变量名、类名、方法名等。
二、关键字
在ActionScript 3.0中,保留字包括“关键字”,我们不能在代码中将他们用作标识符。下图列出ActionScript 3.0中的关键字。详细大家可以查看官方提供的文档,这里我就不一一列出,文章尾我给出了ActionScript 3.0语言和组件参考在线文档的连接,下面是ActinScript 3.0关键字在线文档地址:
http://help.adobe.com/zh_CN/AS3LCR/Flash_10.0/statements.html
三、数据类型
数据是程序的必要组成部分,也是程序处理的对象。数据类型描述一个数据片段,以及可以对其执行的各种操作。数据存储在变量中,在创建变量、对象实例和函数定义时,通过使用数据类型类指定要使用的数据的类型。数据类型是对程序所处理的数据的抽象。
在ActionScript 3.0中包含两种数据类型:基本数据类型(Primitive data type)和复杂数据类型(Complex data type).下面列出比较常用的数据类型:
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:表示日期和时间信息。
7、……..
四、运算符
详细请查看官方在线文档:http://help.adobe.com/zh_CN/AS3LCR/Flash_10.0/operators.html
五、常量和变量
在ActionScript 3.0中使用常量和变量和其他的编程开发语言一样,没什么太大的区别,作用点都是相同的。简单理解就是常量就是值不会改变的量,变量则相反。
在AS3.0中常量也可以分为两种:顶级常量和用户自定义常量。所谓顶级常量就是语言库内部所提供的常量,他们是:
1、Infinity:表示正无穷大
2、-Infinity:表示负无穷大
3、NaN:表示非数字的值
4、undefined:一个适用于尚未初始化的无类型变量或未初始化的动态对象属性的特殊值。
其次便是用户自定义的常量了,通常使用关键字const来定义。
不管是在什么编程语言中,变量是用得最多的,在ActionScript 3.0中也同样如此。那么在AS3.0中的变量怎么定义呢?变量定义格式为:
var 变量名:数据类型 或
var 变量名:数据类型=初始值 . 如下变量示例:
例,定义一个字符串变量myString并赋初值为”AS3.0入门”:
var myString:String = “AS3.0入门”;
使用影片剪辑
复制代码
|
第二种方法:
用纯代码来操作。首先,在库中选中影片剪辑,点击“右键”->“链接”后出现链接属性对话框,选中“链接”->“为ActionScript 导出”,然后设置一个类名即可,例如Gougou(注意,类名首字母一般为大写)。现在我们就用纯代码的形式把库中的这个影片剪辑添加到舞台上。对此,我 们先声明一个变量作为该对象的实例,然后用addChild把它添加到显示列表。代码如下:
复制代码
|
因为我们没有设置这个影片剪辑的任何属性,所以它默认在舞台上的(0,0)位置显示。我们可以用这个实例的x,y属性来设置它的坐标,用rotation属性来设置这个对象的旋转度数:
复制代码
|
用上面的代码把影片剪辑添加到舞台上看起来比较繁琐,但是用代码可以很容易地生成多个此影片剪辑的副本,并把他们添加到舞台上。下面我们让Gougout影片剪辑生成10个副本,从左到右间隔50个像素水平排列,并把这个对象缩放为50%。代码如下:
复制代码
|
测试上面两段代码,你可以看到,第一个对象Gougou在上面,坐标是(275,100),下面的Gougous生成了10个副本,横坐标从50到500依次展开,纵坐标是300,缩放率为50%.
复制代码
|
currentFrame:int [只读 (read-only)]
语言版本: ActionScript 3.0
运行时版本: AIR 1.0, Flash Player 9
指定播放头在 MovieClip 实例的时间轴中所处的帧的编号。 如果影片剪辑有多个场景,该值是当前场景中的帧编号。
实现
public function get currentFrame():int
示例
下面的代码使用 gotoAndStop() 方法和 currentFrame 属性指示 mc1 影片剪辑的播放头从其当前位置前进 5 帧并停止:
mc1.gotoAndStop(mc1.currentFrame + 5);currentFrameLabel 属性
currentFrameLabel:String [只读 (read-only)]
语言版本: ActionScript 3.0
运行时版本: Flash Player 10, AIR 1.5
MovieClip 实例的时间轴中当前帧上的标签。如果当前帧没有标签,则 currentLabel 为 null。
实现
public function get currentFrameLabel():String
currentLabel 属性
currentLabel:String [只读 (read-only)]
语言版本: ActionScript 3.0
运行时版本: AIR 1.0, Flash Player 9
在 MovieClip 实例的时间轴中播放头所在的当前标签。 如果当前帧没有标签,currentLabel 将被设置为包含标签的先前帧的名称。 如果当前帧和先前帧都不包含标签,currentLabel 返回 null。
实现
public function get currentLabel():String
示例
以下代码说明如何访问名为 mc1 的 MovieClip 对象的 currentLabel 属性:
trace(mc1.currentLabel);currentLabels 属性
currentLabels:Array [只读 (read-only)]
语言版本: ActionScript 3.0
运行时版本: AIR 1.0, Flash Player 9
返回由当前场景的 FrameLabel 对象组成的数组。 如果 MovieClip 实例不使用场景,数组会包括整个 MovieClip 实例的所有帧标签。
实现
public function get currentLabels():Array
另请参见
flash.display.FrameLabel
示例
以下代码说明如何使用名为 mc1 的 MovieClip 对象的 currentLabels 属性:
import flash.display.FrameLabel;
var labels:Array = mc1.currentLabels;
for (var i:uint = 0; i < labels.length; i++) {
var label:FrameLabel = labels;
trace(”frame ” + label.frame + “: ” + label.name);
}currentScene 属性
currentScene:Scene [只读 (read-only)]
语言版本: ActionScript 3.0
运行时版本: AIR 1.0, Flash Player 9
在 MovieClip 实例的时间轴中播放头所在的当前场景。
实现
public function get currentScene():Scene
另请参见
Scene
示例
以下代码说明如何使用名为 mc1 的 MovieClip 对象的 currentScene 属性:
import flash.display.Scene;
var scene:Scene = mc1.currentScene;
trace(scene.name + “: ” + scene.numFrames + ” frames”);enabled 属性
enabled:Boolean [读写]
语言版本: ActionScript 3.0
运行时版本: AIR 1.0, Flash Player 9
一个布尔值,指示影片剪辑是否处于活动状态。 enabled 的默认值是 true。 如果将 enabled 设置为 false,则会禁用影片剪辑的 Over、Down 和 Up 帧。 影片剪辑会继续接收事件(例如 mouseDown、mouseUp、keyDown 和 keyUp)。
enabled 属性仅控制影片剪辑的按钮式属性。 可以随时更改 enabled 属性;修改后的影片剪辑将被立即启用或禁用。 如果将 enabled 属性设置为 false,则该对象将不包含在 Tab 键的自动排序中。
实现
public function get enabled():Boolean
public function set enabled(value:Boolean):void
示例
以下代码说明如何使用 enabled 属性来禁用名为 mc1 的 MovieClip 对象的按钮式属性:
mc1.enabled = false;framesLoaded 属性
framesLoaded:int [只读 (read-only)]
语言版本: ActionScript 3.0
运行时版本: AIR 1.0, Flash Player 9
从流式 SWF 文件加载的帧数。 可以使用 framesLoaded 属性来确定特定帧及其前面所有帧的内容是否已经加载,并且是否可在浏览器中供本地使用。可以使用它监视大 SWF 文件的下载。 例如,可能需要向用户显示一条消息以表明在完成 SWF 文件中指定帧的加载前,SWF 文件将会一直进行加载。
如果影片剪辑包含多个场景,framesLoaded 属性会返回为影片剪辑中所有 场景加载的帧数。
实现
public function get framesLoaded():int
另请参见
Loader class
示例
以下代码说明如何使用 framesLoaded 属性和 totalFrames 属性来确定名为 mc1 的流式 MovieClip 对象是否已完全加载:
if (mc1.framesLoaded == mc1.totalFrames) {
trace(”OK.”);
}scenes 属性
scenes:Array [只读 (read-only)]
语言版本: ActionScript 3.0
运行时版本: AIR 1.0, Flash Player 9
一个由 Scene 对象组成的数组,每个对象都列出了 MovieClip 实例中场景的名称、帧数和帧标签。
实现
public function get scenes():Array
另请参见
Scene
示例
以下代码说明如何使用名为 mc1 的 MovieClip 对象的 scenes 属性:
import flash.display.Scene;
for (var i:uint = 0; i < mc1.scenes.length; i++) {
var scene:Scene = mc1.scenes;
trace(”scene ” + scene.name + “: ” + scene.numFrames + ” frames”);
}totalFrames 属性
totalFrames:int [只读 (read-only)]
语言版本: ActionScript 3.0
运行时版本: AIR 1.0, Flash Player 9
MovieClip 实例中帧的总数。
如果影片剪辑包含多个帧,totalFrames 属性会返回影片剪辑中的所有 场景中的帧的总数。
实现
public function get totalFrames():int
示例
以下代码说明如何使用名为 mc1 的 MovieClip 对象的 totalFrames 属性:
trace(mc1.totalFrames);trackAsMenu 属性
trackAsMenu:Boolean [读写]
语言版本: ActionScript 3.0
运行时版本: AIR 1.0, Flash Player 9
指示属于 SimpleButton 或 MovieClip 对象的其它显示对象是否可以接收鼠标释放事件。 trackAsMenu 属性允许您创建菜单。 可以对任何 SimpleButton 或 MovieClip 对象设置 trackAsMenu 属性。 trackAsMenu 属性的默认值是 false。
可以随时更改 trackAsMenu 属性;修改后的影片剪辑会立即使用新的行为。
实现
public function get trackAsMenu():Boolean
public function set trackAsMenu(value:Boolean):void
示例
以下代码说明如何使用 trackAsMenu 属性来启用名为 mc1 的 MovieClip 对象的鼠标释放事件:
mc1.trackAsMenu = true;构造函数详细信息
MovieClip () 构造函数
public function MovieClip()
语言版本: ActionScript 3.0
运行时版本: AIR 1.0, Flash Player 9
创建新的 MovieClip 实例。 创建 MovieClip 之后,调用舞台上的显示对象容器的 addChild() 或 addChildAt() 方法。
方法详细信息
gotoAndPlay () 方法
public function gotoAndPlay(frame:Object, scene:String = null):void
语言版本: ActionScript 3.0
运行时版本: AIR 1.0, Flash Player 9
从指定帧开始播放 SWF 文件。 这会在帧中的所有剩余动作执行完毕后发生。 要指定场景以及帧,请指定 scene 参数的值。
参数 frame:Object — 表示播放头转到的帧编号的数字,或者表示播放头转到的帧标签的字符串。 如果您指定了一个数字,则该数字是相对于您指定的场景的。 如果不指定场景,Flash Player 使用当前场景来确定要播放的全局帧编号。 如果指定场景,播放头会跳到指定场景的帧编号。
scene:String (default = null) — 要播放的场景的名称。 此参数是可选的。
示例
下面的代码使用 gotoAndPlay() 方法指示 mc1 影片剪辑的播放头从其当前位置前进 5 帧:
mc1.gotoAndPlay(mc1.currentFrame + 5);
——————————————————————————–
下面的代码使用 gotoAndPlay() 方法指示 mc1 影片剪辑的播放头移到名为 “Scene 12″ 的场景中标记为 “intro” 的帧:
mc1.gotoAndPlay(”intro”, “Scene 12″);gotoAndStop () 方法
public function gotoAndStop(frame:Object, scene:String = null):void
语言版本: ActionScript 3.0
运行时版本: AIR 1.0, Flash Player 9
将播放头移到影片剪辑的指定帧并停在那里。 这会在帧中的所有剩余动作执行完毕后发生。 如果除了指定帧以外,您还希望指定场景,那么请指定 scene 参数。
参数 frame:Object — 表示播放头转到的帧编号的数字,或者表示播放头转到的帧标签的字符串。 如果您指定了一个数字,则该数字是相对于您指定的场景的。 如果不指定场景,Flash Player 使用当前场景来确定转到其处并停止的全局帧编号。 如果指定了场景,播放头会转到指定场景中的帧编号并停止。
scene:String (default = null) — 场景的名称。 此参数是可选的。
引发 ArgumentError — 如果未在该影片剪辑中找到指定的 scene 或 frame。
示例
下面的代码使用 gotoAndStop() 方法和 currentFrame 属性指示 mc1 影片剪辑的播放头从其当前位置前进 5 帧并停止:
mc1.gotoAndStop(mc1.currentFrame + 5);
——————————————————————————–
下面的代码使用 gotoAndStop() 指示 mc1 影片剪辑的播放头移到名为 “Scene 12″ 的场景中标记为 “finale” 的帧并停止播放头:
mc1.gotoAndStop(”finale”, “Scene 12″);nextFrame () 方法
public function nextFrame():void
语言版本: ActionScript 3.0
运行时版本: AIR 1.0, Flash Player 9
将播放头转到下一帧并停止。 这会在帧中的所有剩余动作执行完毕后发生。
另请参见
prevFrame()
示例
在下例中,由两个 SimpleButton 对象控制时间轴。 prev 按钮将播放头移动到前一帧,nextBtn 按钮将播放头移动到下一帧:
import flash.events.MouseEvent;
mc1.stop();
prevBtn.addEventListener(MouseEvent.CLICK, goBack);
nextBtn.addEventListener(MouseEvent.CLICK, goForward);
function goBack(event:MouseEvent):void {
mc1.prevFrame();
}
function goForward(event:MouseEvent):void {
mc1.nextFrame();
}nextScene () 方法
public function nextScene():void
语言版本: ActionScript 3.0
运行时版本: AIR 1.0, Flash Player 9
将播放头移动到 MovieClip 实例的下一场景。 这会在帧中的所有剩余动作执行完毕后发生。
示例
在下例中,由两个 SimpleButton 对象控制时间轴。 prevBtn 按钮将播放头移动到前一场景,nextBtn 按钮将播放头移动到下一场景:
import flash.events.MouseEvent;
mc1.stop();
prevBtn.addEventListener(MouseEvent.CLICK, goBack);
nextBtn.addEventListener(MouseEvent.CLICK, goForward);
function goBack(event:MouseEvent):void {
mc1.prevScene();
}
function goForward(event:MouseEvent):void {
mc1.nextScene();
}play () 方法
public function play():void
语言版本: ActionScript 3.0
运行时版本: AIR 1.0, Flash Player 9
在影片剪辑的时间轴中移动播放头。
另请参见
gotoAndPlay()
示例
下面的代码使用 stop() 方法来停止名为 mc1 的影片剪辑,并在用户单击名为 continueText 的文本字段时恢复播放:
import flash.text.TextField;
import flash.events.MouseEvent;
var continueText:TextField = new TextField();
continueText.text = “Play movie…”;
addChild(continueText);
mc1.stop();
continueText.addEventListener(MouseEvent.CLICK, resumeMovie);
function resumeMovie(event:MouseEvent):void {
mc1.play();
}prevFrame () 方法
public function prevFrame():void
语言版本: ActionScript 3.0
运行时版本: AIR 1.0, Flash Player 9
将播放头转到前一帧并停止。 这会在帧中的所有剩余动作执行完毕后发生。
示例
在下例中,由两个 SimpleButton 对象控制时间轴。 prev 按钮将播放头移动到前一帧,nextBtn 按钮将播放头移动到下一帧:
import flash.events.MouseEvent;
mc1.stop();
prevBtn.addEventListener(MouseEvent.CLICK, goBack);
nextBtn.addEventListener(MouseEvent.CLICK, goForward);
function goBack(event:MouseEvent):void {
mc1.prevFrame();
}
function goForward(event:MouseEvent):void {
mc1.nextFrame();
}prevScene () 方法
public function prevScene():void
语言版本: ActionScript 3.0
运行时版本: AIR 1.0, Flash Player 9
将播放头移动到 MovieClip 实例的前一场景。 这会在帧中的所有剩余动作执行完毕后发生。
示例
在下例中,由两个 SimpleButton 对象控制时间轴。 prevBtn 按钮将播放头移动到前一场景,nextBtn 按钮将播放头移动到下一场景:
import flash.events.MouseEvent;
mc1.stop();
prevBtn.addEventListener(MouseEvent.CLICK, goBack);
nextBtn.addEventListener(MouseEvent.CLICK, goForward);
function goBack(event:MouseEvent):void {
mc1.prevScene();
}
function goForward(event:MouseEvent):void {
mc1.nextScene();
}stop () 方法
public function stop():void
语言版本: ActionScript 3.0
运行时版本: AIR 1.0, Flash Player 9
停止影片剪辑中的播放头。
示例 如何使用示例
下例用 MovieClipExample 类来说明如何监视 MovieClip 的各种属性。 执行下列步骤可完成该任务:
构造函数定义一个文本字段,该文本字段用于显示 MovieClipExample 对象(扩展了 MovieClip)的属性值。
将 getPropertiesString() 方法的返回值用作 outputText 文本字段的文本。 getPropertiesString() 方法返回一个使用影片剪辑的以下属性值填充的字符串:currentFrame、currentLabel、currentScene、 framesLoaded、totalFrames 和 trackAsMenu。
构造函数中的两行代码调整 outputText 文本字段的 width 和 height 属性。
构造函数的最后一行将 outputText 文本字段添加到显示列表。
package {
import flash.display.MovieClip;
import flash.text.TextField;
public class MovieClipExample extends MovieClip {
public function MovieClipExample() {
var outputText:TextField = new TextField();
outputText.text = getPropertiesString();
outputText.width = stage.stageWidth;
outputText.height = outputText.textHeight;
addChild(outputText);
}
private function getPropertiesString():String {
var str:String = “”
+ “currentFrame: ” + currentFrame + “\n”
+ “currentLabel: ” + currentLabel + “\n”
+ “currentScene: ” + currentScene + “\n”
+ “framesLoaded: ” + framesLoaded + “\n”
+ “totalFrames: ” + totalFrames + “\n”
+ “trackAsMenu: ” + trackAsMenu + “\n”;
return str;
}
}
}
复制代码
|
m1_mc.scaleX=2;
m2_mc.scaleY=2;
m1_mc.rotation=90;
m2_mc.rotationY=90;
m2_mc.scaleZ=2;
/* m2_mc.alpha=0;
m1_mc.visible=false;
*/
m1_mc.stop();
m2_mc.stop();
m1_mc.addEventListener(MouseEvent.MOUSE_UP,dong);
function dong(evt:MouseEvent){
m2_mc.play();
m1_mc.play();
}
m1_btn.addEventListener(MouseEvent.MOUSE_DOWN,ting);
function ting(sj:MouseEvent){
m1_mc.stop();
m2_mc.stop();
}
|
---|