请输入您要查询的百科知识:

 

词条 AS动作脚本
释义

简述

flash中用到的脚本语言,在flash中十分重要,用它可以实现flash动作的实现

定义

AS是ActionScript的缩写

ActionScript 动作脚本 是遵循 ECMAscript第四版 的 Adobe Flash Player 运行时环境的编程语言。它在 Flash Player内容和应用程序中实现交互性、数据处理、以及其他功能。

ActionScript 是由 Flash Player 中的 ActionScript虚拟机(AVM)来执行。

ActionScript代码通常被编译成“字节码格式”。

ActionScript 的主要 IDE 是 Adobe 公司的 Flash 和 Flex,最新版本 CS3(即flash9.0 和 flex3.0),2007年4月上市。

发展

从macromedia大刀阔斧对As1.0进行改革到AS2.0,这一段过程看上去还算长一些,从flashmx到flash mx2004到flash 7.2再到flash8. 它们的核心actionscript都是as2.0.在flash8刚刚发布不长时间,macromedia又紧罗密鼓的推出了flash9预览版,大家都已经知道了Adobe发布的预览版可以对AS3.0进行编译,而As3.0经过测试它的速度可以说要比之前的as2.0快10倍.拿着as3.0与As2.0相对比,虽然有些东西看着面熟,但它看上去就象是重写的一种新语言一样.还有随之推出的adobe的Flex 2.0 builder. Flex sdk.让许多人一时不知所措

· Flash Player 2

第一个支持脚本的版本,包括控制时间轴的gotoAndPlay, gotoAndStop, nextFrame和nextScene等动作。

· Flash Player 3

增强了载入外部SWF文件的基本脚本支持(loadMovie)。

· Flash Player 4

第一个完全实现脚本功能(称为动作)的播放器。这些脚本拥有简练的语法和对循环,条件,变量和其它基本语言结构的支持。

· Flash Player 5

第一个拥有真正意义上的ActionScript的版本。依据ECMAScript并采用基于原型编程,并允许完全的 过程序编程和面向对象编程。

· Flash Player 6

增加了事件处理模型,并且支持switch。

· Flash Player 7

Flash Player 7 提供一些新特性如支持CSS显示文本和增强显示效果。 Macromedia Flash编译器和Flash Player 7同时支持基于ECMAScript 4 Netscape Proposal的类编程语言ActionScript 2.0。不过ActionScript 2.0能交叉编译成ActionScript 1.0的字节码,因此它能运行于Flash Player 6。

· Flash Player 8

增加用于运行时图象数据控制和文件上传的新类库及APIs,ActionScript 2.0功能更为完善。

· Flash Player 8.5

(计划于2006春发布release版本,currently in public beta):增加ActionScript 3.0和一个称为AVM2(ActionScript Virtual Machine 2)新的虚拟机,它可以与前版本AVM1共存以便支持旧内容。增强性能是该版本的主要目标。

· Flash Player 9

2007发表,这是adobe收购Macromedia后的第一个版本,并且也是Mac OS X上第一个Universal版本的Flash Player。

基本记法

ActionScript 2.0

下面打印Hello World。值得注意的是这只能在整合环境下执行,因为trace函式只有支持整合环境。

trace("Hello world!");

下面代码利用onMouseMove事件当鼠标移动时输出现行鼠标位置。同样的这只有在整合环境下执行。

onMouseMove = function () {

trace("X: "+_root._xmouse);

trace("Y: "+_root._ymouse);

};

这个较先进的范例创造一个包括数字与字符串的数组,并利用原形函式(prototype function)与函式递归给变量名num指定一个数,给变量str指定一个字符串。然后,利用MovieClip应用程序接口,文字区域被显示在屏幕上,文字区域里头写入了变量值。

var my_Array:Array = new Array("Hello", "ActionScript", 3, 7, 11, "Flash");

Array.prototype.pickNumber = function():Number {

var rand:Number = random(this.length);

return (typeof (this[rand]) == "number") ? this[rand] : this.pickNumber();

};

Array.prototype.pickString = function():String {

var rand:Number = random(this.length);

return (typeof (this[rand]) == "string") ? this[rand] : this.pickString();

};

var num:Number = my_Array.pickNumber();

var str:String = my_Array.pickString();

_root.createTextField("txt", 1, 10, 10, 530, 390);

txt.text = "Array = "+my_Array+"\Random Number = "+num+"\Random String = "+str;

ActionScript 3.0

下面先进的Hello World程序目前需要在Flex 2.0公开Alpha测试版整合环境中编译。

package {

import flash.text.TextField;

import flash.display.MovieClip;

import flash.filters.DropShadowFilter;

public class HelloWorld extends MovieClip {

public function HelloWorld() {

var shad:DropShadowFilter = new DropShadowFilter(2, 45, 0x000000, 25, 3, 3, 2, 2);

var txt:TextField = new TextField();

txt.textColor = 0xFFFFFF;

txt.filters = [shad];

txt.width = 120;

txt.x = Math.random()*300;

txt.y = Math.random()*300;

txt.selectable = false;

txt.text = "Hello World! ["+Math.round(txt.x)+","+Math.round(txt.y)+"]";

addChild(txt);

//-----ActionScript3.0----------------- //as3.0最重要的概念就是在效能方面的增进,平时所加入的任何事件都可以被监听或从内存中移除 //以下例子就是监听与移除内存占用,这是as3.0最重要的基础概念

bt1.addEventListener(MouseEvent.CLICK,bt1_click);

function bt1_click(e:MouseEvent):void{ //触发的事件内容; }

//该按纽监听不需要时则remove掉,增加效能 bt1.removeEventListener(MouseEvent.CLICK,bt1_click);

Flash脚本语言

影片控制

语法:gotoAndPlay(Scene,Frame); 将播放头跳转到场景中指定的帧并从该帧开始播放,

标签范例:gotoAndPlay("Scene 1", 1);

gotoAndStop:将播放头跳转到场景中指定的帧(标签)并停止播放

NextFrame :下一帧

goto

PreviousFrame:前一帧

nextscene:下一个场景

previousscene :前一个场景

FrameLabel:关键帧中定义的标签位置

语法:on (mouseEvent);

范例:on (press) {

指定触发动作的鼠标事件或按键

startDrag("");

}

MouseEvent 可分为以下几类。

Press:鼠标指针在按钮上,并按下按钮

Release:鼠标指针在按钮上,按下后放开按钮

on Release Outside:当鼠标指针滑到按钮上时按下鼠标按钮,然后在释放鼠标按钮前滑出

此按钮区域

Roll Over:鼠标指针滑过按钮

Roll Out:鼠标指针滑出按钮外

Drag Over:当鼠标指针滑到按钮上时按下鼠标按钮,然后滑出该按钮区域,接着滑回

到该按钮上

Drag Out:当鼠标指针滑到按钮上时按下鼠标按钮,然后滑出此按钮区域

Key Press:(“key”)按下指定的键盘按键

play 语法:play(); 开始播放影片或继续往前播放

stop 语法:stop(); 停止播放影片

stopAllSounds 语法:stopAllSounds; 停止所有正在播放中的音乐文件

浏览器/网络

语法:fscommand (command,parameters); 使SWF 文件能够与Flash Player 或

fscommand 嵌入Flash Player 的程序(如 Web 浏览器

)进行信息传递,范例:fscommand ("fullscreen","true");

续表

Flash Player 的指令。

Fullscreen (true/false):以全屏方式打开播放器

Allowscale (true/false):允许影片放大或缩小

Showmenu (true/false):显示单击鼠标右键时的菜单

Trapallkeys (true/false):传送所有按键事件至onClipEvent

Exec (true/false):执行一项内部指令

Quit:关闭播放器

语法:loadVariables (URL,level/target,Variables);

从外部文件中读取数据,例如文本文件,或是CGI、ASP 或PHP 脚本产生的文本。然后在影片内设置变量值

范例:on(release){

loadVariables loadVariablesNum ("MX.txt", 0 ); }

语法:getURL (URL,Window,Variables);

打开网页的相对或绝对地址,与超级链接的作用是相同的,可从链接网页URL 中加载影片、JPG,选择性地传递变量,加载到当前动画影片中。

getURL 范例:getURL ("(网址)", "_blank");

语法:loadMovieNum (URL,level/target,Variables)

loadMovie

范例:loadMovieNum ("picture.jpg",0)

unloadMovie 语法:unloadMovieNum (level/target) 取消已载入的动画影片

影片剪辑控制

当 SWF 文件正在播放时,创建一个

影片剪辑的实例。无论播放头在原始影片剪辑中处于什么位置,在重复的影片剪辑中,播放头始终从第 1 帧

开始

语法:duplicateMovieClip (target,new name,depth);

duplicateMovieClip 范例:duplicateMovieClip ("/game","new game",2);

removeMovieClip 语法:removeMovieClip ("target"); 删除指定的影片剪辑

可用鼠标拖动已定义实体名称的影 片剪辑,一次只能拖动一个。一旦 执行,该影片剪辑保持可拖 动状态,直到用stopDrag 明确停止拖动为止,或是对另一个影片剪辑做 startDrag 的动作命令

语法:startDrag (target,lock,[left,top, right,bottom]);

范例:on (press) { startDrag startDrag

startDrag ("/happy",true,0,350,210);

startDrag 的动作命令

语法:stopDrag ();

范例:on (release)

stopDrag 停止当前的拖动操作

stopDrag ();

续表

语法:onClipEvent (movieEvent) {}

范例:onClipEvent (load) { 事件处理函数:触发去执行那些指派

gotoAndStop (3) 给一个影片剪辑的动作命令

MovieEvent 可分为以下几类。

Load:载入动画影片

Unload:删除动画影片

onClipEvent EnterFrame:进入每一帧(都会启动action)

MouseMove:每次移动鼠标时启动此动作

MouseDown:按住鼠标左键

MouseUp:放开鼠标左键

KeyDown:按住键盘的一个按键,使用Key.getCode 去读取最后被按下的按键

KeyUp:放开键盘的一个按键,使用Key.getCode 去读取最后被放开的按键

Data :在 loadVariables() 或 loadMovie() 动作中接收到数据时启动该动作。当与

loadVariables() 动作一起指定时,data 事件只在加载最后一个变量时发生一次

当影片播放时,更改影片剪辑的属

语法:setProperty (target, property, value)

setProperty 性值,如Alpha 、Width、Visible、

范例:setProperty ("happy",_alpha= 30); Rotation 等

在指定的ClipEvent 事件触发后,刷

updateAfterEvent 语法:updateAfterEvent() 新屏幕显示,可以避免刷新网页时的

屏幕闪烁

变量

语法:delete (reference)

范例:account = new Object();

account.balance = 5000;

delete account;

设置变量的值,可运用【运算法】的

方式设置其为字符串或数值。和大多

语法:variable = value 数的程序语言一样,设置变量名称

set variable

范例:x= random(15) + 6; 时,变量名称的第一个字需为英文而

不能是数字,而在Flash 中变量是没

有大小写之分

语法:var variableName

范例:var x;

var y = 1; 声明变量

var z = 3, w = 4;

var s, t, u = z;

语法:with (object) {statement}

with 范例:with (_root.apple) { 使用with 控制影片剪辑

gotoAndStop (3);

判断条件/循环

语法:break;

范例:var i = 0;

while (true) { 命令Flash 跳过循环体的其余部分,

if (i >= 100) { 停止循环动作,并执行循环语句之后

break; 的语句

出现在几种循环类型中,会先跳过循 环里的其余部分再执行: 在while 循环内,会回到循环顶端再

度测试条件。

continue 语法:continue;

在do while 里会到循环底部测试条件。

在for 内,会跳过循环的判断位置。

在for...in 内,会回到循环顶端,处理

下一个枚举值

执行语句,然后只要条件为 true,就

do while 语法:do {statement;} while (condition);

计算循环中的条件

当if 语句的条件返回false 时,就执

else 语法:else {statement;}

行要运行的语句

先判断init (初始值)一次,然后开始

做循环,只要condition (条件)的计

for 语法:for (init; condition; next) {statement}

算结果是true,就执行要运行的语句,

然后再重新判断

语法:if (condition) {statement;}

范例:if (mx = 5){ 当if 的condition 条件式为true 时,

if

play(); 就执行要运行的语句

}

计算条件,如果条件计算结果为

while 语法:while (condition) {statement;} true,则在循环返回以再次计算条件

之前执行一条语句或一系列语句

打印

打印指定影片剪辑的所有Frame,若 只想打印特定几页时,请在要打印的 Frame 加上Frame Lable:#print

语法:print (target,method);

范例:print ("fish","bmovie");

Method 可分为以下3 种:

Bmovie :指明以电影的边界区域(bounding area )作为打印区域。可以在编写环境

(authoring)中,在那几个帧附上标签:#b。

Bmax:可指定这个混合各个边界区域的参数,来作为打印范围。

Bframe:缩放每格的对象大小,来填满打印的页面

7.自定义函数

在被调用帧中执行脚本,而不将播放 头移动到该帧

call 语法:call (frame)

语法:function functionname ([parameters])

{statement }

function 范例:function Circle(radius) { 自定义函数

this.radius = radius;

}

method 语法:object.method = function ([parameters]) { }; 自定义对象的方法

语法:return [expression]; 指定函数返回一个值,如单独使用

return 范例:function sum (a,b,c) { return 或函数循环执行时,没有这个

return a + b + c;

命令,则函数返回null

}

8.各种动作

在测试模式下,计算表达式并在

trace 语法:trace (expression); 【输出】面板中显示结果,适用于

侦错

在Actions 中加上批注说明文字,以

语法:// comment 避免Actions 太混杂难以理解,此功

comment

范例:// 这是一个计数器的判断式 能对于往后的维护工作,甚至是程序

二次开发都相当有帮助

() 范例:gotoAndPlay("Scene 1"1) 范围

"" 范例:tellTarget("/game") 字符串

1.数学运算符

+ 加

范例:a = 10 ; b = 5

e = a + b // e = 15

- 减

c = a - b // c = 5

* 乘

g = a * b // g = 50

/ 除

h = a/b // h = 2

% A/B 的余数

i = a % b // i = 0

2.比较运算符

= 等于

范例:a = 50; b = 30; c = 20

< 小于

b < a

> 大于

a > c

<= 小于等于

if (c <= b)

>= 大于等于

if (a >= c)

!= 不等于

if (a != b)

语法:escape(expression)

范例:k = escape("Happy New Year"); 将参数转换为字符串,并以 URL 编

escape trace(k) 码格式对其进行编码

结果:Happy%20New%20Year

语法:eval(expression)

范例:on (release) {

x = “3”; 按照名称访问变量、属性、对象或影

eval

trace (eval (“x”); 片剪辑,返回该变量或属性的值

}

结果:3

语法:getProperty(instancename, property)

getProperty 返回指定属性的值

范例:getPrperty(_root.fish,_x)

返回自SWF 文件开始播放时起已经

getTimer 语法:getTimer()

过的毫秒数

返回一个包含Flash Player 版本与平

台信息的字符串,此函数在

getVersion 语法:getVersion()

Test-movie Mode (测试电影模式)不

会执行

返回一个包含Movie Clip 对象的目

targetPath 语法:targetpath(movieClipObject)

标路径字符串

语法:unescape(x)

范例:k = unescape("Happy%20 New%20Year"); 将 URL 编码格式的字符串转换成

unescape trace(k) ASCII 字符格式

结果:Happy New Year

1.转换函数

Boolean 语法:Boolean (expression) 转换指定的参数到布尔值类型

Number 语法:Number (expression) 转换指定的参数到数字类型

转换指定的参数到字符串类型

Actions 语法/范例 说明

_alpha

语法:instancename. _alpha=value;

范例:kewpie._alpha=30;

设置影片剪辑的透明值。有效值是0

(全透明)到100(不透明)

_visible

语法:instancename._visible,"boolean";

范例:apple.visible = 1

决定instancename 参数指定的影片

是否看得见

_target 语法:instancename._target 获取影片剪辑的目标路径

_rotation

语法:instancename._rotation;

范例:setProperty ("movieclip" _rotation=30);

设置影片剪辑的旋转角度

_name

语法:instancename._name

范例:setProperty("movieclip" _name, "string");

获取影片剪辑的实例名称

_framesloaded

语法:_framesloaded = x;

范例:happy._framesloaded = 25;

确定特定帧及其前面所有帧的内容

是否已经加载,并且是否可在浏览

器本地使用。参数:x 为时间轴上的

帧数

_droptarget

语法:myMovieClip._droptarget

范例:if (happy._droptarget == root.trash) {

happy._visible = false;

}

返回该影片剪辑的绝对路径

_currentframe

语法:_currentframe;

范例:gotoAndStop (_currentframe+5)

结果:引导影片前进 5 格

获取影片剪辑的当前帧

_totalframes

语法:_totalframes;

范例:if (_currentframe=_totalframes)

获取影片剪辑的总帧数

_quality 语法:_quality = x;

电影的质量,x 值包括低(low)、

中等(medium)、高(high)或最

好(best)

_focusrect 语法:_focusrect =Boolean 当按Tab 键浏览时,按钮上是否有个

黄色的边框出现

_soundbuftime

语法:instancename._soundbuftime

范例:setProperty ("happy "_soundbuftime, "5");

指定在声音开始进入流之前,预先缓

冲的秒数

_url

语法:instancename._url;

范例:setProperty ("happy" _url,"(网址)"

读取网址(URL)位置的影片剪辑

String 语法:String (expression) 参数:expression 要被转换成字符串

的数字、布尔式或表达式

2.数学函数

判断数据内容是否为数值,如果不是

isNaN 语法:isNaN (expression)

数值则返回true

将字符串转换为浮点数,直到此函数

parseFloat 语法:parseFloat(string)

遇到不是初始数字一部分的字符

将字符串转换成整数,并进一步设置

parseInt 语法:parseInt(expression, [radix])

数值的进制

设置影片剪辑的x 坐标,左上角默认

_x 语法:instancename._x

为(0,0)

_y 语法:instancename._y 设置影片剪辑的y 坐标

语法:instancename._xmouse

_xmouse 获取鼠标位置的x 坐标

范例:happy._xmouse = 50

语法:instancename._ymouse

_ymouse 获取鼠标位置的y 坐标

范例:happy._ymouse = 50;

语法:instancename._xscale 从注册点开始应用的水平缩放比例,

_xscale

范例:setProperty ("movieclip"_xscale, "70"); 以百分比表示。默认注册点为(0,0)

语法:instancename._yscale 从注册点开始应用的垂直缩放比例,

_yscale

范例:setProperty ("movieclip"_yscale, "60"); 以百分比表示。默认注册点为 (0,0)

语法:instancename._width = value;

_width 设置影片剪辑的宽度

范例:setProperty ("movieclip",_width, "80");

语法:instancename._height= value;

_height 设置影片剪辑的高度

范例:setProperty ("movieclip",_height, "50")

五、对象-核心-Date

Actions 语法/范例 说明

new Date

(构造函数)

语法:new Date(year,month,date, hour, min,sec,ms);

范例:now = new Date();

trace(now)

结果:Thu Mar 7 16:01:20 GMT+0800 2001

创建Date 对象

getDate

语法:mydate.getdate();

范例:now = new Date();

mydate = now.getDate()

trace (mydate);

按照本地时间返回指定的 Date 对

象中表示月中某天的值(1 到 31 之

间的整数)

getDay

语法:mydate.getday();

范例:now = new Date();

myday = now.getDay()

trace (myday);

按照本地时间返回指定的 Date 对

象中表示周几的值(0 代表星期日,

1 代表星期一,以此类推)

getFullYear

语法:mydate.getfullyear();

范例:now = new Date();

myfullyear = now.getfullyear()

trace (myfullyear);

按照本地时间返回指定的 Date 对

象中的完整年份值(一个 4 位数,

如2002)

getHours

语法:mydate.gethours();

范例:now = new Date();

myhours = now.gethours()

trace (myhours);

按照本地时间返回指定的 Date 对

象中的小时值(0 到 23 之间的

整数)

getMinutes

语法:mydate.getminutes();

范例:now = new Date();

myminutes = now.getminutes()

trace (myminutes);

按照本地时间返回指定的 Date 对

象中的分钟值(0 到 59 之间的

整数)

getMonth

语法:mydate.getmonth();

范例:now = new Date();

mymonth = now.getmonth()

trace (mymonth);

按照本地时间返回指定的 Date 对

象中的月份值(0 代表一月,1 代表

二月,以此类推)

getSeconds

语法:mydate.getsecondes();

范例:now = new Date();

myseconds = now.getseconds()

trace (myseconds);

按照本地时间返回指定的 Date 对

象中的秒钟值(0 到 59 之间的

整数)

toString 语法:mydate.tostring(); 将日期转换成可读的字符串值

随便看

 

百科全书收录4421916条中文百科知识,基本涵盖了大多数领域的百科知识,是一部内容开放、自由的电子版百科全书。

 

Copyright © 2004-2023 Cnenc.net All Rights Reserved
更新时间:2025/3/14 12:23:38