FLASH中actionscript代码
- 格式:doc
- 大小:61.00 KB
- 文档页数:15
ActionScript编程Flash 影片发布设置作用:执行【文件】|【发布预览】和【文件】|【发布】命令,预览和发布影片或应用程序。
说明:在Flash CS4中,允许用户将影片发布为多种格式,例如,swf动画、带有swf动画的html、GIF图像、JPEG图像、PNG图像、Windows 放映文件(EXE)和Macintosh放映文件(APP)等。
本节将以swf动画为例,介绍Flash影片的发布设置。
1.Flash发布设置执行【文件】|【发布】命令,即可在弹出的【发布设置】对话框的【格式】选项卡中选择发布的文件格式。
当选中某个格式后,对话框中将新增相应格式的选项卡,如图15-1所示。
图15-1 发布设置对话框选中“Flash (.swf)”后,即可单击【格式】选项卡右侧的【Flash】选项卡,对发布的Flash影片进行设置,如图15-2所示。
图15-2 Flash发布设置在【发布设置】的【Flash】选项卡中,包含如下各种设置。
●播放器该列表框用来选择Flash Player播放程序的版本,其选项包括Flash Player1.0到10.0以及Flash Lite1.0到3.1(用于手机的Flash播放器)。
如用户安装了Adobe AIR插件,还将显示发布为Adobe AIR程序。
(关于AIR的发布设置,请参考本章相关小节)●脚本该列表框用于设置发布影片的ActionScript版本。
在其右侧的【设置】按钮可以配置影片的动作脚本信息。
(关于配置脚本的信息,请参考本章相关小节)●JPEG品质要控制位图压缩,可以调整【JPEG品质】滑块或者输入一个值,其中,图像品质越低,生成的文件就越小;图像品质越高,压缩比例越小,生成的文件就越大。
通常以80%为宜。
●启用JPEG解块启用该选项可有效减少低品质图像的失真程度●音频流单击其右侧的【设置】按钮,可对发布影片中的音频质量进行设置。
(关于音频设置,请参考本章其他小节)●音频事件单击其右侧的【设置】按钮,可对发布影片中事件触发的声音质量进行设置。
ActionScript 编程实战Flash动作面板概述ActionScript1.0和2.0的多数代码都是写在时间轴或元件中,而ActionScript3.0以后,只允许将代码写在时间轴和外部的类文件中。
将代码写在时间轴上,就需要使用到Flash 的【动作面板】。
1.动作面板在FlashCS4中,执行【窗口】|【动作】命令或按F9快捷键即可打开【动作】面板。
通过【动作面板】,用户可以将ActionScript脚本代码写在Flash的时间轴上,并对脚本代码进行格式化、验证语法等操作,如图1-11所示。
图1-11 【动作】面板在图1-11中,包含4个部分,如下所示。
●【动作工具箱】在【动作】面板中,【动作工具箱】的作用是提供ActionScript所有的包、类、属性和方法列表。
(关于包、类、属性和方法,请参考之后的面向对象编程相关章节)用户可以根据程序编写的需要,自行选择相应地语言元素,双击该元素,将其添加到代码中。
●【脚本导航器】【脚本导航器】的作用是提供当前编辑的代码位置,以及当前影片中所有代码的位置列表。
除当前选择的代码外,每段代码根据其所在的场景和图层、帧的位置顺序进行排列。
●【脚本助手】【脚本助手】的作用是显示和修改当前选择的表达式值、函数的名称、参数和数据类型等相关信息。
●【脚本窗格】【脚本窗格】的作用是输入和编辑脚本代码用户可以方便地拖动【动作】面板中各部分之间地分隔线,可以方便地调整各部分地大小。
同时,用户也可以对【动作】面板地边缘进行拖动,改变【动作】面板的大小。
2.【动作】面板的【脚本窗格】Flash CS4在【脚本窗格】中提供了一组按钮,可以帮助用户对ActionScript代码进行调试和格式化,如图1-12所示。
图1-12 【脚本窗格】在上面的【脚本窗格】中,包含如下按钮。
●【将新项目添加到脚本中】按钮单击该按钮,将弹出ActionScript各包及类的菜单供用户选择,并添加到代码中。
我们先来看效果。
在场景的左上角有一个取色板,如果我鼠标在取色板上点击,那相应的被点击部位的颜色就会显示在整个背景中,同时输出面板会输出这个颜色的值。
AS当中提供了小到像素级的访问和操作,通过对像素级别的操作可以实现无穷的变化,只要你有想象力,你的方法合理,就能创作出惊人的效果。
常见的像素级别的操作方法一般有:getPixel和setPixel是用于访问和处理像素点24位RGB像素值;getPixel32、setPixel32本身是对32位颜色信息处理;getPixels和setPixels是对一组像素进行处理。
下面我们通过一个具体的实例,也就是取色板,来讲解对像素级别的颜色值的访问方式。
来看代码,代码里面注释部分比较多。
ActionScript的介绍时间轴控制命令gotoAndPlay()跳转播放命令语法:gotoAndPlay([scene,]frame)—Scene可选字符串,指定播放头要转到的场景名称。
—frame表示将播放头转到的帧编号的数字,或者表示将播放头转到的帧的标签的字符串。
gotoAndStop()跳转停止命令语法:gotoAndPlay([scene,]frame)—Scene可选字符串,指定播放头要转到的场景名称。
—frame表示将播放头转到的帧编号的数字,或者表示将播放头转到的帧的标签的字符串。
play();播放stop();停止鼠标事件命令On(参数){命令}—press鼠标按下后触发命令—release按下鼠标点击后抬起时触发命令—releaseOutside按下鼠标后并拖出按钮范围时触发命令—keyPress键盘控制按键后触发命令—rollOver鼠标滑过的时候触发命令—rollOut鼠标滑出的时候触发命令—dragOver按下并拖动鼠标移动出按钮区域时触发命令—dragOut按下并拖动鼠标进入按钮区域时触发命令prevFrame(); 上一帧nestFrame(); 下一帧prevScene(); 上一场景nextScene(); 下一场景以上这些命令没有参数,一般都与事件操作命令结合使用。
stopAllSounds(); 停止所有声音播放。
浏览器网络命令Fscommand(命令) 发送指令到Flash Player—“quit”关闭播放器—“fullscreen”参数是true(真)falsc(假),设置为全屏模式—“allowscale”命令是视图缩放—“showmenu”视图的鼠标右键示例:on (press) {fscommand("quit", true);}译:鼠标按下后触发fscommand命令,即发送fscommand指令到Flash Player,如果为真,则执行“quit”命令,即关闭播放器。
FLASH中actionscript代码----调用外部文件详解作者: 网友添加来源: 互联网发布日期:2005-11-24 点击次数: 3865 FLASH调用外部文件详解Flash加载外部文件Flash可以通过帧、按扭、影片剪辑来调用外部文件。
调用的外部文件包括:外部文本文件、外部程序文件、外部*.swf文图片文件、外部音乐文件、外部脚本文件。
一.调用外部文本文件:(文本文件开头要以flash中的动态文本框的变量名开头,如msg=".........."这样的形式,要和编辑的Flash文件放在同一目录下)1.用工具箱中的文本工具,选择动态文本,给动态文本一个变量名,如:msg,在编辑区拖出一个文本框2.制作两个按扭(一个调用,一个清除)拖放到场景中。
3.调用按扭上添加AS:on(release){//松开鼠标后执行下面的代码;loadVariables("msg.txt",msg);//调用和你编辑的Flash处于同一目录下的msg.txt文本文件到动态文本msg中;eCodepage=true;//使外部文件的中文字符能够正确显示;}4.清除按扭上的AS:on(release){//松开鼠标后清楚动态文本框中的内容;msg="";}5.Ctrl+Enter测试.当然代码也可以写在帧上:(调用按扭的实例名是bt1,清除按扭的实例名是bt2)在第一帧上加如下代码:stop();_root.bt1.onRelease=function(){loadVariables("msg.txt",msg);eCodepage=true;}_root.bt2.onRelease=function(){_root.msg="";}Ctrl+Enter测试.调用的外部文本文件能够滚动:1.用工具箱中的文本工具,选择动态文本,给动态文本一个变量名,如:msg,在编辑区拖出一个文本框2.新建一层,制作两个按扭(一个调用,一个清除)拖放到此层中3.新建一层,在动态文本框的右侧用矩形工具画一个竖条,高度和动态文本一样;再制作一个向上的方向"箭头"按F8转为按复制一个"箭头"按扭,垂直镜象,使这两个按扭和竖条的两端对齐.4.调用按扭上的AS:on(release){//松开鼠标后执行下面的代码;loadVariables("msg1.txt",msg);//调用msg1.txt文本文件到动态文本框msg中;eCodepage=true;//使外部文件的中文字符能够正确显示;}清除按扭上的AS:on(release){_root.msg="";//清除动态文本框中的内容;}向上的按扭上的AS:on(press){//在按扭的感应区上每按一次鼠标执行下面的代码;_root.msg.scroll=_root.msg.scroll-1;//文本向下滚动一行;}向下的按扭上的AS:on(press){//在按扭的感应区上每按一次鼠标执行下面的代码;_root.msg.scroll=_root.msg.scroll+1;//文本向上滚动一行;}Ctrl+Enter测试.当然代码也可以写在帧上:(调用按扭的实例名是bt1,清除按扭的实例名是bt2,向上按扭的实例名是:up,向下按扭上的实例n)在第一帧上加如下代码:_root.bt1.onRelease=function(){//松开鼠标后执行下面的代码;loadVariables("msg1.txt",msg);//调用msg1.txt文本文件到动态文本框msg中;eCodepage=true;//使外部文件的中文字符能够正确显示;}_root.bt2.onRelease=function(){//松开鼠标后执行_root.msg="";//清除动态文本框中的内容;}_root.up.onPress=function(){//在向上按扭上每按一次鼠标执行下面的代码;_root.msg.scroll=_root.msg.scroll-1;//文本向下滚动一行;}_root.down.onPress=function(){//在向下按扭上每按一次鼠标执行下面的代码;_root.msg.scroll=_root.msg.scroll+1;//文本向上滚动一行;}Ctrl+Enter测试.二.调用外部*.swf文件(加载到影片剪辑中):外部*.swf文件要和编辑的Flash文件放在同一目录下1.新建立一个空的影片剪辑mymc,把它放在场景中,实例名是:mymc.2.新建一层,制作两个按扭(一个调用,一个清除)拖放到此层中3.调用按扭上的AS:on(release){//鼠标离开按扭后执行下面的代码;loadMovie("flash8.swf","mymc");//加载外部的"flash8.swf"文件到"mymc"空影片剪辑中;mymc._x=70;//加载影片的X轴坐标;mymc._y=20;//加载影片的Y轴坐标;mymc._xscale=70;//加载影片的宽度;mymc._yscale=70;//加载影片的高度;}清除按扭上的AS:on(release){//鼠标离开按扭后执行下面的代码unloadMovie(mymc);//删除用loadMovie加载的*.swf文件;}Ctrl+Enter测试三.调用外部*.swf文件(加载到时间轴上):外部*.swf文件要和编辑的Flash文件放在同一目录下1.制作两个按扭(一个调用,一个清除)拖放到场景中2.调用按扭上的AS:on(release){//鼠标离开按扭后执行下面的代码loadMovie("flash8.swf",1);//加载外部的"flash8.swf"文件到场景中,层深为1;}清除按扭上的AS:on(release){//鼠标离开按扭后执行下面的代码unloadMovie(1);//删除层深为1的用loadMovie所加载的"flash8.swf"文件}Ctrl+Enter测试。
很多朋友经常询问关于Flash的ActionScript脚本语句的用法,有些很简单的命令就能实现某种功能,现在我就把一些Flash的常用Action语句的基本用法讲解一下。
1、Goto:跳到一个指定的帧(Frame)Scene: 指定SceneFrame:Number,Label,EXPression,Next Frame,Previous Frame可以选择Frame 的编号,标号,通过表达式,下一帧,前一帧Expression: 定义表达式Control:Go to and Play,Go to and Stop通过选择这个项目来确定到达指定的帧以后是继续播放还是停止例子:Go to and Play (1)跳到第一帧播放Go to Next Frame跳到下一帧播放Go to and Stop ("intro")跳到标号为intro 的帧播2、Play:播放Stop:停止Toggle High Quality:切换画面的细节程度Stop All Sounds:停止所有声音Get URL:打开指定的网址URL: 网址Windows:_self,_blank,_parent,_top打开网址时使用的目标Variables on’t Send,Send use GET,Send use POST变量的传递方式例子:Get URL ("next.asp", window="_blank", vars=POST)在新窗口中打开next.asp,并且传递参数3、FScommand:调用命令Command: 命令Arguments: 参数For standalone player:fullscreen,allowscale,showmenu,exec,quit播放器使用的固定命令和参数例子:FS Command ("fullscreen", "true")设置全屏幕播放4、Load/Unload Movie:调入/释放外部的影片Action:Load movie into location,Unload movie from location,Load variables into locati on: 可以选择是否调入新影片,释放已经调入的影片,调入变量URL:影片的网址Location:Level,Target: 调入的层,或者是某一目标对象的位置Variables on’t Send,Send use GET,Send use POST: 变量的传递方式例子:Load Movie ("test.swf", 1): 把test.swf 调入到第一层Load Movie ("test.swf", "loadit", vars=GET): 把test.swf 调入到loadit 目标对象的位置Unload Movie ("loadit"): 把loadit 目标对象处的影片释放Load Variables ("makeit.asp", 2, vars=GET): 调用makeit.asp 并接收返回的变量5、Tell Target:指定目标对象Target: 目标对象例子:Begin Tell Target ("obj")指定目标对象objEnd Tell Target6、If Frame is Loaded:判断某帧是否调入Scene: 指定场景Frame:Number,Label,Expression: 指定帧,标号或者表达式Expression: 表达式例子:If Frame Is Loaded (Scene 1, "end")End Frame Loaded:判断场景一的标号为end 的帧是否调入7、On MouseEvent鼠标时间响应Event ress,Release, Release Outside,Roll Over,Roll Out,Drag Over,Drag Out,Key Pres s各种事件:按下,放开,在外面放开,焦点移入,移出,拖过,拖出,按键按下例子:On (Press) 鼠标按下的时候End OnOn (Key: s)键盘上s 按下的时候End On8、If判断条件是否成立Condition: 条件Add Else/Else If clause: 加入Else 再次判断例子:If (a=10)如果a=10 那么……End IfIf (a=10)如果a=10 那么……不然……ElseEnd If9、Loop循环Condition:条件例子:Loop While (a=10)如果a=10 那么循环End Loop10、Call调用函数帧或对象Frame:函数帧例子:Call ("make")调用make 帧程序11、Set Property设置属性Set:Y Positon,X Position,Y Scale,X Scale,Alpha,Visibility,Rotation,Name,High quality,S how focus rectangle,Sound buffer time设置y 坐标,x坐标,y 放大倍数,x 放大倍数,透明度,可视否,旋转角度,名称,精细度,焦点矩形框是否显示,声音缓冲时间(默认5秒)Target:目标对象value:值例子:Set Property ("aoe", X Position) = "12"设置目标对象aoe 的x 坐标为12Set Property (Show focus rectangle) = "0"取消焦点框12、Set Variable设置变量Variable:变量value:值例子:Set Variable: "test" = 10设置test=1013、Duplicate/Remove Movie Clip复制对象Action uplicate movie clip,Remove duplicate movie clip可选择是复制还是删除Target:目标对象New name:新目标对象的名字Depth:深度例子:Duplicate Movie Clip ("aoe", "aoe2", 1)复制aoe 一个新的动画,名字叫aoe2Remove Movie Clip ("aoe2")删除目标对象aoe214、Drag Movie Clip 拖动影片片段Start drag operation:开始拖动Target:目标对象Constrain to rectangle:Left,Top,Right,Bottom鼠标的位置,左上右下Lock mouse to center:鼠标放置在中心Stop drag operation停止拖动例子:Start Drag ("aoe", L=2, T=3, R=4, B=5)拖动目标对象aoe,位置在L=2, T=3, R =4, B=5Start Drag ("aoe", lockcenter)拖动目标对象aoe,位置在中心Stop Drag停止拖动15、Trace 跟踪Message:信息例子:Trace ("aoe")显示aoeTrace (aoe)显示aoe 的值16、Comment注释Comment:注释例子:Comment ("计算")注释:计算。
FLASHActionscript2.0脚本代码大全一.基本脚本代码:- Go to 跳转到指定的帧- Play 播放- Stop 停止- Toggle High Quality 在高画质和低画质间切换- Stop All Sounds 停止所有声音的播放- Get URL 跳转至某个超联结- FSCommand 发送FSCommand命令- Load Movie 装载影片- Unload Movie 卸载影片- Tell Target 告知目标- If Frame Is Loaded ..判断帧是否被完全载入- On Mouse Event 鼠标事件二.其他Actionscript2.0- break 跳出循环- call 调用指定帧(一般喊有某个特定函数)- comment 注释- continue 继续循环- delete 删除一个对象(Object)中的变量- do while do while循环- duplicateMovieClip 复制MC- else 否则(与if联用)- else if 否则如果(与if联用)- uate 调用自定义函数(Function)- for for循环- for .. in 依次取得对象(Object)中的各个属性或者某个数组中的所有元素- FSCommand 发送FSCommand命令- function 声明自定义函数- getURL 跳转至某个超联结- goto 跳转到指定的帧- if 如果- ifFrameLoaded ..帧是否完全被载入- include 读入外部的ActionScript程序文件(.as)- loadMovie 装载MC- loadVariables 转载外部文件中的数据,这些外部文件可以是文本文件,或者是由ASPCGI等脚本返回的文本值- on 鼠标事件的触发条件- onClipEvent MC的事件触发程序- play 播放- print 输出到打印机- removeMovieClip 删除MC- return 在函数(function)中返回一个值- set variable 设定变量值- setProperty 设定属性- startDrag 开始拖动- stop 停止- stopAllSounds 停止所有声音的播放- stopDrag 停止拖动- swapDepths 交换两个MC的深度- tellTarget 指定Action命令生效的目标- toggleHighQuality 在高画质和低画质间切换- trace 跟踪调试- unloadMovie 卸载MC- var 声明局部变量- while 当..成立时..- with 对..对象(Object)做..。
语句是在运行时执行或指定动作的语言元素。
例如,return 语句会为执行该语句的函数返回一个结果。
if 语句对条件进行计算,以确定应采取的下一个动作。
switch 语句创建ActionScript 语句的分支结构。
属性关键字更改定义的含义,可以应用于类、变量、函数和命名空间定义。
定义关键字用于定义实体,例如变量、函数、类和接口。
主表达式关键字表示文本值。
若要获得保留字的列表,请参见《ActionScript 3.0 编程》。
指令包含语句和定义,在编译时或运行时起作用。
下表中将既不是语句也不是定义的指令标记为指令。
语句break 出现在循环(for、for..in、for each..in、do..while 或while)内,或出现在与 switch 语句中的特定情况相关联的语句块内。
case定义 switch 语句的跳转目标。
continue 跳过最内层循环中所有其余的语句并开始循环的下一次遍历,就像控制正常传递到了循环结尾一样。
default定义 switch 语句的默认情况。
do..while 与 while 循环类似,不同之处是在对条件进行初始计算前执行一次语句。
else指定当 if 语句中的条件返回 false 时要运行的语句。
for计算一次 init(初始化)表达式,然后开始一个循环序列。
for..in 遍历对象的动态属性或数组中的元素,并对每个属性或元素执行 statement。
for each..in遍历集合的项目,并对每个项目执行 statement。
if计算条件以确定下一条要执行的语句。
label将语句与可由 break 或 continue 引用的标识符相关联。
return导致立即返回执行调用函数。
super调用方法或构造函数的超类或父版本。
switch根据表达式的值,使控制转移到多条语句的其中一条。
throw 生成或抛出(使用throw语句)一个可由 catch 代码块处理或捕获的错误。
FlashActionscript教程:游戏中的碰撞...-电脑资料教程简单碰撞下面是代码://把你舞台上的MC实例名放入数组,测试var ballA:Array = [ball1, ball2, ball3, ball4, ball5];//随机初始化每个MC的运动速度和方向for (var i = 0; i<="">ballA.dx = 11*rand1_1();ballA.dy = 7*rand1_1();}//随机产生1或-1function rand1_1():Number {return random(2) ? -1 : 1;}Stage.scaleMode = "noScale";Stage.align = "TL";var sw:Number = Stage.width;var sh:Number = Stage.height;var stageListener:Object = new Object();//舞台大小改变时,重置sw、shstageListener.onResize = function() {sw = Stage.width;sh = Stage.height;};Stage.addListener(stageListener);nEnterFrame. = function () {for (var i = 0; i<="">//检测所有MC之间是否有碰撞,有就根据情况改变“增量”方向for (var j = i+1; j<="">if (ballA.hitTest(ballA[j])) {mc12(ballA, ballA[j]);ballA._x += ballA.dx;ballA[j]._x += ballA[j].dx;ballA._y += ballA.dy;ballA[j]._y += ballA[j].dy;}}//如果到了边界,就反射if ((ballA._xsw-ballA._width/2 && ballA.dx>0)) {ballA.dx *= -1;}if ((ballA._ysh-ballA._height/2 && ballA.dy>0)) {ballA.dy *= -1;}//移动一个“增量”ballA._x += ballA.dx;ballA._y += ballA.dy;}};//碰撞函数,根据两球碰撞方向和自身运动方向合成新的增量值function mc12(mc1:MovieClip, mc2:MovieClip) {var ang:Number = Math.atan2(mc2._y-mc1._y, mc2._x-mc1._x);var ang1:Number = Math.atan2(mc1.dy, mc1.dx);var ang2:Number = Math.atan2(mc2.dy, mc2.dx);var r1:Number = (mc1.dy/Math.sin(ang1))*Math.cos(ang-ang1);var r2:Number = (mc2.dy/Math.sin(ang2))*Math.cos(ang-ang2);var dx1:Number = r1*Math.cos(ang)+r2*Math.cos(ang);var dy1:Number = r1*Math.sin(ang)+r2*Math.sin(ang);mc1.dx = -mc1.dx+dx1;mc1.dy = -mc1.dy+dy1;mc2.dx = -mc2.dx+dx1;mc2.dy = -mc2.dy+dy1;}加入反弹效果代码://把你舞台上的MC实例名放入数组,测试var ballA:Array = [ball1, ball2, ball3, ball4, ball5];//随机初始化每个MC的运动速度和方向for (var i = 0; i<="">ballA[i].dx = 5*rand1_1();ballA[i].dy = 5*rand1_1();ballA[i].N=i;}//随机产生1或-1function rand1_1():Number {return random(2) ? -1 : 1;}Stage.scaleMode = "noScale";Stage.align = "TL";var sw:Number = Stage.width;var sh:Number = Stage.height;var stageListener:Object = new Object();//舞台大小改变时,重置sw、shstageListener.onResize = function() {sw = Stage.width;sh = Stage.height;};Stage.addListener(stageListener);nEnterFrame. = function () {for (var i = 0; i<="">//如果到了边界,就反射if ((ballA[i]._xsw-ballA[i]._width/2 && ballA[i].dx>0)) {ballA[i].dx *= -1;}if ((ballA[i]._ysh-ballA[i]._height/2 && ballA[i].dy>0)) {ballA[i].dy *= -1;}//检测所有MC之间是否有碰撞,有就根据情况改变“增量”方向for (var j = i+1; j<="">if (myHitT est(ballA[i],ballA[j])) {//if (ballA[i].hitTest(ballA[j])) {mc12(ballA[i], ballA[j]);ballA[i]._x += ballA[i].dx;ballA[j]._x += ballA[j].dx;ballA[i]._y += ballA[i].dy;ballA[j]._y += ballA[j].dy;}}//移动一个“增量”ballA[i]._x += ballA[i].dx;ballA[i]._y += ballA[i].dy;updateAfterEvent();};//碰撞函数,根据两球碰撞方向和自身运动方向合成新的增量值function mc12(mc1:MovieClip, mc2:MovieClip) {//碰撞角var ang:Number = Math.atan2(mc2._y-mc1._y, mc2._x-mc1._x);//运动角var ang1:Number = Math.atan2(mc1.dy, mc1.dx);var ang2:Number = Math.atan2(mc2.dy, mc2.dx);//反射角var _ang1:Number = 2*ang-ang1-Math.PI;var _ang2:Number = 2*ang-ang2-Math.PI;//运动矢量var r1:Number=Math.sqrt(mc1.dx*mc1.dx+mc1.dy*mc1.dy);var r2:Number=Math.sqrt(mc2.dx*mc2.dx+mc2.dy*mc2.dy);//碰撞矢量var a1:Number = (mc1.dy/Math.sin(ang1))*Math.cos(ang-ang1);var a2:Number = (mc2.dy/Math.sin(ang2))*Math.cos(ang-ang2);//碰撞矢量合成var dx1:Number = a1*Math.cos(ang)+a2*Math.cos(ang);var dy1:Number = a1*Math.sin(ang)+a2*Math.sin(ang);//碰撞后的增量mc1.dx = r1*Math.cos(_ang1)+dx1;mc1.dy = r1*Math.sin(_ang1)+dy1;mc2.dx = r2*Math.cos(_ang2)+dx1;mc2.dy = r2*Math.sin(_ang2)+dy1;//碰撞侦测function myHitTest(mc1:MovieClip,mc2:MovieClip):Boolean{ var a:Number=Math.sqrt((mc1._x-mc2._x)*(mc1._x-mc2._x)+(mc1._y-mc2._y)*(mc1._y-mc2._y));if(a-5<=(mc1._width+mc2._width)/2){return true;}else{return false;}}带旋转效果:代码://把你舞台上的MC实例名放入数组,测试var ballA:Array = [ball1, ball2, ball3, ball4, ball5];//随机初始化每个MC的运动速度、方向、旋转for (var i = 0; i<="">ballA[i].dx = 5*rand1_1();ballA[i].dy = 5*rand1_1();ballA[i].dr = 0;//增加旋转属性ballA[i].N=i;//球编号}//随机产生1或-1function rand1_1():Number {return random(2) ? -1 : 1;}//舞台属性Stage.scaleMode = "noScale";Stage.align = "TL";var sw:Number = Stage.width;var sh:Number = Stage.height;var stageListener:Object = new Object();//舞台大小改变时,重置sw、shstageListener.onResize = function() {sw = Stage.width;sh = Stage.height;};Stage.addListener(stageListener);//------nEnterFrame. = function () {for (var i = 0; i<="">//如果到了边界,就反射if (ballA[i]._x<="">ballA[i].dx *= -1;ballA[i].dr += ballA[i].dy;}if (ballA[i]._x>sw-ballA[i]._width/2 && ballA[i].dx>0) { ballA[i].dx *= -1;ballA[i].dr += -ballA[i].dy;}if (ballA[i]._y<="">ballA[i].dy *= -1;ballA[i].dr += -ballA[i].dx;}if (ballA[i]._y>sh-ballA[i]._height/2 && ballA[i].dy>0) { ballA[i].dy *= -1;ballA[i].dr += ballA[i].dx;}//检测所有MC之间是否有碰撞,有就根据情况改变“增量”方向for (var j = i+1; j<="">if (myHitT est(ballA[i],ballA[j])) {//if (ballA[i].hitTest(ballA[j])) {mc12(ballA[i], ballA[j]);ballA[i]._x += ballA[i].dx;ballA[j]._x += ballA[j].dx;ballA[i]._y += ballA[i].dy;ballA[j]._y += ballA[j].dy;}}//移动一个“增量”ballA[i]._x += ballA[i].dx;ballA[i]._y += ballA[i].dy;ballA[i]._rotation += ballA[i].dr;ballA[i].dr -= ballA[i].dr*0.01;}};//碰撞函数,根据两球碰撞方向和自身运动方向合成新的增量值function mc12(mc1:MovieClip, mc2:MovieClip) {//碰撞角var ang:Number = Math.atan2(mc2._y-mc1._y, mc2._x-mc1._x);//运动角var ang1:Number = Math.atan2(mc1.dy, mc1.dx);var ang2:Number = Math.atan2(mc2.dy, mc2.dx);//反射角var _ang1:Number = 2*ang-ang1-Math.PI;var _ang2:Number = 2*ang-ang2-Math.PI;//运动矢量var r1:Number=Math.sqrt(mc1.dx*mc1.dx+mc1.dy*mc1.dy);var r2:Number=Math.sqrt(mc2.dx*mc2.dx+mc2.dy*mc2.dy);//碰撞矢量var a1:Number = (mc1.dy/Math.sin(ang1))*Math.cos(ang-ang1);var a2:Number = (mc2.dy/Math.sin(ang2))*Math.cos(ang-ang2);//碰撞矢量合成var dx1:Number = a1*Math.cos(ang)+a2*Math.cos(ang);var dy1:Number = a1*Math.sin(ang)+a2*Math.sin(ang);//旋转矢量,这里还有点问题,旋转方向有时不对,,电脑资料《Flash Actionscript教程:游戏中的碰撞...》(https://www.)。
ActionScript 编程实战Flash ActionScript首选参数Flash是目前应用最广泛的ActionScript开发环境。
在编写ActionScript代码时,可以通过Flash的首选参数对ActionScript代码的格式、关键字颜色等进行设置,以符合用户的习惯,提高代码编写的效率。
在Flash CS4中,与ActionScript相关的首选参数主要包括两类,即ActionScript参数和自动套用格式参数。
1.ActionScript参数ActionScript参数的作用是设置Flash CS4在编写ActionScript代码时显示代码的参数。
在Flash CS4中执行【编辑】|【首选参数】命令,即可打开名为【首选参数】对话框。
在【首选参数】对话框中选择左侧列表菜单中的“ActionScript”,即可打开ActionScript参数的选项面板,如图1-9所示。
图1-9 ActionScript参数在【ActionScript】参数对话框中,包含如下选项。
●自动缩进为便于阅读和理解程序的源代码,多数编程语言都会按照一定的格式进行书写。
例如,为嵌套关系的语句块进行句首缩进处理。
选中该选项后,Flash CS4可以自动在用户换行时将代码缩进。
●制表符大小设置新行中缩进的字符数●代码提示在输入代码时启用代码提示●延迟代码提示出现的延迟●字体在脚本窗口和as文件窗口中显示的字体和大小●样式在脚本窗口和as文件窗口中显示的字体样式●使用动态字体映射所选字体中呈现每个字符。
如不选该选项,则Flash会替换上一个包含必须字符的系列●打开/导入定义打开或导入ActionScript时使用的字符编码●保存/导出定义保存或导出ActionScript时使用的字符编码●重新加载修改的文件定义脚本文件在被修改、移动或删除时Flash CS4进行的操作,包括3个选项。
“总是”表示不显示警告,直接加载新文件;“从不”表示不显示警告,文件仍保持当前状态;“提示”表示显示出警告的对话框,由用户选择进行的操作。
FlashActionscript制作贪吃蛇简陋版-电脑资料全部代码如下:/************2005.5**************//*********贪吃蛇简陋版************//***********寒冰(胡乱编写)********/var s_x = 0;var s_y = 0;var dir = [[-1, 0], [0, -1], [1, 0], [0, 1]];//四个方向var _dir;var c_x = (Stage.width-256)/2;var c_y = (Stage.height-256)/2;var map;var speed;var level = 1;var child_num;var Child;var snake_arr;init();function init() {speed = 15;child_num = 1;snake_arr = [];DrawOutRound();//画外框DrawMap();//画地图SnakeRun();//蛇移动MakeWall();//创建障碍物MakeChild();//创建食物(后来变成蛇身)createTextField("info", getNextHighestDepth(), 30, 350, 400, 20);createTextField("status", getNextHighestDepth(), 320, 370, 100, 20);status.text = "状态:playing";info.text = "[用方向键控制方向,dead后请点鼠标重新开始]____寒冰制造";}function DrawBox(name, color, w, h) {//画方块var _b = createEmptyMovieClip(name, getNextHighestDepth());with (_b) {lineStyle(0);beginFill(color);lineTo(w, 0);lineTo(w, h);lineTo(0, h);endFill();}return _b;}function DrawOutRound() {DrawBox("outround", 0xffffff, 400, 400);}function DrawMap() {var _box = DrawBox("box", 0xffffff, 16, 16);_box._visible = false;map = [];for (var i = 0; i<16; i++) {map[i] = [];for (var j = 0; j<16; j++) {map[i][j] = 0;_box.duplicateMovieClip("_map"+i+j, getNextHighestDepth(), {_x:c_x+j*16, _y:c_y+i*16});}}//trace(map)}function MakeSnake() {var Snake = DrawBox("snake", 0x000000, 16, 16);snake_arr.push(snake);Snake.x = s_x;Snake.y = s_y;//map[Snake.y][Snake.x] = 1;Snake._x = c_x+s_x*16;Snake._y = c_y+s_y*16;return Snake;}function SnakeRun() {var S = MakeSnake();var i = 0;_dir = dir[3];SnakeControl();S.onEnterFrame. = function() {if (++i>100/speed) {ChildRun();i = 0;if (map[this.y+_dir[1]][this.x+_dir[0]] == 0) {} else if (map[this.y+_dir[1]][this.x+_dir[0]] == 8) { speed++;map[this.y+_dir[1]][this.x+_dir[0]] == 0; snake.swapDepths(getNextHighestDepth()); Child._name = Child._name.substr(1);snake_arr.push(Child);MakeChild();} else {status.text = "状态:over";delete this.onEnterFrame;return;}this.x += _dir[0];this.y += _dir[1];this._x = c_x+16*this.x;this._y = c_y+16*this.y;}};//trace(S);}function SnakeControl() {var bj = {};obj.onKeyDown = function() {var key = Key.getCode();switch (key) {case 37 :_dir = dir[0];break;case 38 :_dir = dir[1];break;case 39 :_dir = dir[2];break;case 40 :_dir = dir[3];}};Key.addListener(obj);}function RndArr() {//随机乱数,为了取得随机的障碍物的位置,不过这里用随机是为了偷懒,应该固定位置的.var arr = [];for (var i = 1; i<256; i++) {arr[i-1] = i;}arr.sort(function () {return random(2) ? 1 : -1;});return arr;}function MakeChild() {var rgb = 0x0000ff;Child = DrawBox("_child"+child_num, rgb, 16, 16);Child._alpha = 0;Child.onEnterFrame. = function() {if ((this._alpha += 5)>100) {delete this.onEnterFrame;}};do {var x = random(16);var y = random(16);} while (map[y][x] != 0 or (x == 0 and y == 0));Child.createTextField("txt", Child.getNextHighestDepth(), 0, 0, 16, 16);//食物上的数字Child.txt.textColor = "0xffffff";Child.txt.text = child_num;map[y][x] = 8;Child._x = c_x+x*16;Child._y = c_y+y*16;child_num++;}function MakeWall() {var _arr = RndArr();for (var i = 0; i<="">var x = _arr[i]%16;var y = int(_arr[i]/16);map[y][x] = 1;var Wall = DrawBox("wall"+i, 0xff0000, 16, 16);Wall._x = c_x+x*16;Wall._y = c_y+y*16;}}function ChildRun() {for (var j in snake_arr) {map[snake_arr[j].y][snake_arr[j].x] = 0;}for (var i = child_num; i>0; i--) {var last_child = this["child"+(i-1)];if (last_child == child0) {last_child = snake;}this["child"+i].x = last_child.x;this["child"+i].y = last_child.y;map[this["child"+i].y][this["child"+i].x] = 1;this["child"+i]._x = c_x+this["child"+i].x*16;this["child"+i]._y = c_y+this["child"+i].y*16;}}nMouseDown = function () {// 鼠标点击进行刷新,重新开始for (var i in this) {if (this[i].__proto__ == MovieClip.prototype) {this[i].removeMovieClip();} else if (this[i].__proto__ == TextField.prototype) {this[i].removeTextField();}}init();}//晚上边玩边弄的,居然写了这么多.bug多多哦,只是个大概样子,唬唬人的: )。
FLASH中actionscript代码----调用外部文件详解作者: 网友添加来源: 互联网发布日期:2005-11-24 点击次数: 3865 FLASH调用外部文件详解Flash加载外部文件Flash可以通过帧、按扭、影片剪辑来调用外部文件。
调用的外部文件包括:外部文本文件、外部程序文件、外部*.swf文图片文件、外部音乐文件、外部脚本文件。
一.调用外部文本文件:(文本文件开头要以flash中的动态文本框的变量名开头,如msg=".........."这样的形式,要和编辑的Flash文件放在同一目录下)1.用工具箱中的文本工具,选择动态文本,给动态文本一个变量名,如:msg,在编辑区拖出一个文本框2.制作两个按扭(一个调用,一个清除)拖放到场景中。
3.调用按扭上添加AS:on(release){//松开鼠标后执行下面的代码;loadVariables("msg.txt",msg);//调用和你编辑的Flash处于同一目录下的msg.txt文本文件到动态文本msg中;eCodepage=true;//使外部文件的中文字符能够正确显示;}4.清除按扭上的AS:on(release){//松开鼠标后清楚动态文本框中的内容;msg="";}5.Ctrl+Enter测试.当然代码也可以写在帧上:(调用按扭的实例名是bt1,清除按扭的实例名是bt2)在第一帧上加如下代码:stop();_root.bt1.onRelease=function(){loadVariables("msg.txt",msg);eCodepage=true;}_root.bt2.onRelease=function(){_root.msg="";}Ctrl+Enter测试.调用的外部文本文件能够滚动:1.用工具箱中的文本工具,选择动态文本,给动态文本一个变量名,如:msg,在编辑区拖出一个文本框2.新建一层,制作两个按扭(一个调用,一个清除)拖放到此层中3.新建一层,在动态文本框的右侧用矩形工具画一个竖条,高度和动态文本一样;再制作一个向上的方向"箭头"按F8转为按复制一个"箭头"按扭,垂直镜象,使这两个按扭和竖条的两端对齐.4.调用按扭上的AS:on(release){//松开鼠标后执行下面的代码;loadVariables("msg1.txt",msg);//调用msg1.txt文本文件到动态文本框msg中;eCodepage=true;//使外部文件的中文字符能够正确显示;}清除按扭上的AS:on(release){_root.msg="";//清除动态文本框中的内容;}向上的按扭上的AS:on(press){//在按扭的感应区上每按一次鼠标执行下面的代码;_root.msg.scroll=_root.msg.scroll-1;//文本向下滚动一行;}向下的按扭上的AS:on(press){//在按扭的感应区上每按一次鼠标执行下面的代码;_root.msg.scroll=_root.msg.scroll+1;//文本向上滚动一行;}Ctrl+Enter测试.当然代码也可以写在帧上:(调用按扭的实例名是bt1,清除按扭的实例名是bt2,向上按扭的实例名是:up,向下按扭上的实例n)在第一帧上加如下代码:_root.bt1.onRelease=function(){//松开鼠标后执行下面的代码;loadVariables("msg1.txt",msg);//调用msg1.txt文本文件到动态文本框msg中;eCodepage=true;//使外部文件的中文字符能够正确显示;}_root.bt2.onRelease=function(){//松开鼠标后执行_root.msg="";//清除动态文本框中的内容;}_root.up.onPress=function(){//在向上按扭上每按一次鼠标执行下面的代码;_root.msg.scroll=_root.msg.scroll-1;//文本向下滚动一行;}_root.down.onPress=function(){//在向下按扭上每按一次鼠标执行下面的代码;_root.msg.scroll=_root.msg.scroll+1;//文本向上滚动一行;}Ctrl+Enter测试.二.调用外部*.swf文件(加载到影片剪辑中):外部*.swf文件要和编辑的Flash文件放在同一目录下1.新建立一个空的影片剪辑mymc,把它放在场景中,实例名是:mymc.2.新建一层,制作两个按扭(一个调用,一个清除)拖放到此层中3.调用按扭上的AS:on(release){//鼠标离开按扭后执行下面的代码;loadMovie("flash8.swf","mymc");//加载外部的"flash8.swf"文件到"mymc"空影片剪辑中;mymc._x=70;//加载影片的X轴坐标;mymc._y=20;//加载影片的Y轴坐标;mymc._xscale=70;//加载影片的宽度;mymc._yscale=70;//加载影片的高度;}清除按扭上的AS:on(release){//鼠标离开按扭后执行下面的代码unloadMovie(mymc);//删除用loadMovie加载的*.swf文件;}Ctrl+Enter测试三.调用外部*.swf文件(加载到时间轴上):外部*.swf文件要和编辑的Flash文件放在同一目录下1.制作两个按扭(一个调用,一个清除)拖放到场景中2.调用按扭上的AS:on(release){//鼠标离开按扭后执行下面的代码loadMovie("flash8.swf",1);//加载外部的"flash8.swf"文件到场景中,层深为1;}清除按扭上的AS:on(release){//鼠标离开按扭后执行下面的代码unloadMovie(1);//删除层深为1的用loadMovie所加载的"flash8.swf"文件}Ctrl+Enter测试。
当然二和三的代码都可以写在帧上。
四.调用外部图片(加载到影片剪辑中)外部图片必须和正在编辑的Flash文件放在同一目录下1.制作两个按扭(一个调用,一个清除)拖放到场景中2.制作一个空的影片剪辑,拖到场景中,实例名是:mymc;3.时间轴上第一帧上的AS:i=0;//定义一个变量i,并且赋初值为0;调用按扭上的AS:on(release){//鼠标离开按扭后执行下面的代码;i++;if(i>9){//因为外面这有9张图,当变量大于9的时候,让变量为1,这样能够使加载的图片是连续的,即,每点一次按换一张图,等到换到第9张图,再点按扭,则循环到第一张图(j1.jpg到j9.jpg,因为没有j0.jpg,如果i=0,则会提示没0.jpg);i=1;}loadMovie(("j"+i)+".jgp",mymc);//从j1.jpg开始加载图片到影片剪辑mymc中;mymc._x=110;//以下设置加载图片的属性mymc._y=35;mymc._xscale=130;mymc._yscale=130;}清除按扭上的AS:on(release){unloadMovie(mymc);//删除掉用loadMovie加载到影片剪辑的图片;}Ctrl+Enter测试。
当然AS可以写在帧上。
五.调用外部声音文件(加载到场景中)外部声音文件必须和正在编辑的Flash文件放在同一目录下1.制作两个按扭(一个调用,一个清除)拖放到场景中2.调用按扭上的AS:on(release){//鼠标离开按扭后执行下面的代码;mySound=new Sound();//建立一个新的声音对象mySound;mySound.loadSound("zaihuni.mp3",true);//加载外部的*.mp3声音文件到mySound对象中,并且按流的方式播放(参数为时,是以装载完后播放);}清除按扭上的AS:on(release){mySound.stop();//当按下清除按扭后,停止声音的播放}Ctrl+Enter测试。
加载外部图片如果你的动画中有很多的图片.如果都放到一个SWF文件.可能打开或是下载会很慢.这样就影响了观看效果及速度,那么你载入外部图片的方法,只要把图片按名称放到你网上的一个目录里(和你的SWF文件同一个目录),那么就可以解决这个问题前十祯你做一个载入LOADING.从第十一祯开始新建一个图层.起名为AS层在AS图层的第十一祯加入一个关键祯,然后打开动作面板,加入以下ASi = 0;//初始化变量loadMovie ("p040.jpg", "pic");//在播放原始 SWF 文件的同时将p040.jpg 文件//加载到 Flash Player 中的叫PIC的这个影片剪辑中。
上面的语句是实现了加载一张.我们要它加载多张.所以要用到IF语句.在AS层的第六十祯处加入一个关键祯,打开动作面板S语句:i++;//变量i递增if (i >= 21) {//当变量i递增到>=21时.这里的21是因为我准备了二十一张要加载的图.如果你加载十张.那就把这里为10就可以了i = 0;//则变量为0,即重新加载}loadMovie (("p04" + i) + ".jpg", "pic");//如果不是.则继续加载.这里的p04+i就等p04i.也就是说i是几.这里就比如i为12,则p04+i就等于p0412gotoAndPlay (12);//跳转到第十二祯所以.在这里给图片起文件名时.就要按照这个原则来起的.准备好的图片要和你的主调用SWF文件入在同一个目录下,或者加载时用绝对路径,那就要改成"/p04"' target="_blank" >/p04";+i+".jpg"图片的大小最好是事先调整好的.在你做好的PIC这个加载用的MC里.它的位置是放在XY坐标为0的位置,加载进来图是以左上角为准的,也就是说加载进来图的左上角与加载用的MC的左上角是重合的--------------loadMovie("图片名",newname);以上语法以下用法on(release){loadMovie("pic.jpg", "mc");mc._x=50;mc._y=50mc._xscale=40;mc._yscale=40}--------------------------------------------------------------------------------加载外部文本文件的3种方法不管那样方法,文本文件要和主文件在同一目录下,再就是在这儿的文本文件名为 b.txt*第一种方法txt=1、创建一个文本框,给此文本框一个变量名txt;2、文本格式为:动态;3、选:多行输入4、在第一帧上增加脚本语言。