论坛交流
首页办公自动化| 网页制作| 平面设计| 动画制作| 数据库开发| 程序设计| 全部视频教程
应用视频: Windows | Word2007 | Excel2007 | PowerPoint2007 | Dreamweaver 8 | Fireworks 8 | Flash 8 | Photoshop cs | CorelDraw 12
编程视频: C语言视频教程 | HTML | Div+Css布局 | Javascript | Access数据库 | Asp | Sql Server数据库Asp.net  | Flash AS
当前位置 > 文字教程 > Flash AS编程教程
Tag:2.0,3.0菜鸟,游戏,,cs,技巧,源码,,文本,文字,函数,音乐,随机,拖拽,asp,access,xml,mc,视频教程

FLASH调用外部文件详解(详细篇)

文章类别:Flash AS编程 | 发表日期:2008-10-6 18:07:43



一.调用外部文本文件:(文本文件开头要以flash中的动态文本框的变量名开头,如
msg=".........."这样的形式,要和编辑的Flash文件放在同一目录下)
1.用工具箱中的文本工具,选择动态文本,给动态文本一个变量名,如:msg,在编辑区拖出一个文本框
2.制作两个按扭(一个调用,一个清除)拖放到场景中。
3.调用按扭上添加AS:

on(release){//松开鼠标后执行下面的代码;
  loadVariables("msg.txt",msg);//调用和你编辑的Flash处于同一目录下的msg.txt文本文件到动态文本msg中;
  System.useCodepage=true;//使外部文件的中文字符能够正确显示;
}

4.清除按扭上的AS:
on(release){//松开鼠标后清楚动态文本框中的内容;
msg="";
}

5.Ctrl+Enter测试.

当然代码也可以写在帧上:(调用按扭的实例名是bt1,清除按扭的实例名是bt2)
在第一帧上加如下代码:

stop();
_root.bt1.onRelease=function(){
  loadVariables("msg.txt",msg);
  System.useCodepage=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中;
System.useCodepage=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,向下按扭上的实例名是down)
在第一帧上加如下代码:
_root.bt1.onRelease=function(){//松开鼠标后执行下面的代码;
loadVariables("msg1.txt",msg);//调用msg1.txt文本文件到动态文本框msg中;
System.useCodepage=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,则会提示没有找到j0.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对象中,并且按流的方式播放(参数为false时,是以装载完后播放);
}
清除按扭上的AS:
on(release){
    mySound.stop();//当按下清除按扭后,停止声音的播放
}
Ctrl+Enter测试。

加载外部图片
如果你的动画中有很多的图片.如果都放到一个SWF文件.可能打开或是下载会很慢.这样就影响了观看效果及速度,那么你可以利用载入外部图片的方法,只要把图片按名称放到你网上的一个目录里(和你的SWF文件同一个目录),那么就可以解决这个问题 


前十祯你做一个载入LOADING.从第十一祯开始

新建一个图层.起名为AS层

在AS图层的第十一祯加入一个关键祯,然后打开动作面板,加入以下AS

i = 0;//初始化变量
loadMovie ("p040.jpg", "pic");//在播放原始 SWF 文件的同时将p040.jpg 文件
//加载到 Flash Player 中的叫PIC的这个影片剪辑中。


上面的语句是实现了加载一张.我们要它加载多张.所以要用到IF语句.在AS层的第六十祯处加入一个关键祯,打开动作面板,加入AS语句:

i++;//变量i递增
  if (i >= 21) {//当变量i递增到>=21时.这里的21是因为我准备了二十一张要加载的图.如果你加载十张.那就把这里的21改为10就可以了
    i = 0;//则变量为0,即重新加载
  }
  loadMovie (("p04" + i) + ".jpg", "pic");//如果不是.则继续加载.这里的p04+i就等p04i.也就是说i是几.这里就是p04*,比如i为12,则p04+i就等于p0412
  gotoAndPlay (12);//跳转到第十二祯


所以.在这里给图片起文件名时.就要按照这个原则来起的.准备好的图片要和你的主调用SWF文件入在同一个目录下,或者你也可以加载时用绝对路径,那就要改成"http://www.XXXXX.cn/p04"'  target="_blank" >http://www.XXXXX.cn/p04";+i+".jpg" 

图片的大小最好是事先调整好的.在你做好的PIC这个加载用的MC里.它的位置是放在XY坐标为0的位置,加载进来图是以这个MC左上角为准的,也就是说加载进来图的左上角与加载用的MC的左上角是重合的
--------------
loadMovie("图片名",newname); 
以上语法以下用法
on(release){
  loadMovie("pic.jpg", "mc");
mc._x=50;
mc._y=50
mc._xscale=40;
mc._yscale=40
}


--------------------------------------------------------------------------------

加载外部文本文件的3种方法 


不管那样方法,文本文件要和主文件在同一目录下,再就是在这儿的文本文件名为 b.txt 

*第一种方法txt=

1、创建一个文本框,给此文本框一个变量名txt;
2、文本格式为:动态;
3、选:多行输入
4、在第一帧上增加脚本语言。(按F9)
loadVariablesNum("b.txt",0);//b.txt是文件名,0是场景中的根目录
然后打开poems.txt文件,在记事本里输入:txt= 
注意:在加载之前对文本文件进行转换,另存为Unicode编码格式。

*第二种方法 在主文件帧上输入防乱码的AS按钮实现引用外部文本文件的效果:
第一步:主场第一帧AS:
System.useCodePage = true;//防止乱码

第二步:在按钮上写AS:
on (release) {
_root.loadVariables("b.txt");//b.txt文本名
}


**第三种方法 使用构造器,将文本拆分为若干字符串来显示.从根本上防止乱码.
也就是说直接在 txt 里面写东西就行了。

代码如下: 

lala = new LoadVars();//构造函数;创建 LoadVars 对象。然后可使用该 LoadVars 对象的方法来发送和加载数据
lala.onData = function(rw) {//当lala被实例化并显示在时间轴上时将触发
a_txt.text = replacePunc(rw);//
};

function replacePunc(str) {//执行将文本拆分为多个字符串
var tempArray = str.split("\r\n");//拆分为多个子字符串
var tempstr = new String();
for (var i = 0; itempstr += tempArray+newline;
}
return tempstr;
}

System.useCodepage = true;//通知 Flash Player使用 传统代码页来解释外部文本
lala.load("b.txt");


调用外部的actionscript脚本
如果在你的动画中有需要重复使用的语句,最节省时间的办法是只写一遍然
后用include语句调用。 
你可以用任何文本编辑器编写好代码然后将其保存为扩展名为 .as的文件。

例如你的代码放在一个叫myscript.as的文件中。
你可以用下面的语句调用myscript.as文件中的代码:

on(release) {
#include "myscript.as"



调用外部swf
用主文件如index.swf调用同一目录下swf文件如mpg.swf最简单的方法是用一段代码:

loadMoive("mpg.swf","mpg");//mpg.swf在同一目录下,mpg为一个空mc,用以传递action

这样我们可以将mpg\avi视频先导入flash做成一个独立的swf如mpg.swf,再用以上代码调用

02
可是按以上方法不易控制mpg.swf在主文件index.swf中的播放位置,于是,我们最好用到坐标。

on (press){
loadMovie("mpg.swf","_root.mymc");  //mymc为命名的mc,传递as
onEnterFrame = function () {
_root.mymc._x = 0;
 //mpg.swf的横坐标
_root.mymc._y = 0;  //mpg.swf的纵坐标
_root.mymc.width =400;  //mpg.swf的宽度
_root.mymc.height =300;  //mpg.swf的高度
}
}


还有一种方法可以控制外部swf:通过一个空mc控制swf的大小及位置


setproperty ("mcname",_xscale,xx);//mcname为空mc的实例名,_xscale水平方向缩放比例,xx调整数值
setproperty("mcname",_yscale,yy);//_yscale垂直方向缩放比例,yy调整数值
setproperty ("mcname",_x,xxx);//mcname为空mc的实例名,_x横坐标,xxx调整数值
setproperty("mcname",_y,yyy);//mcname为空mc的实例名,_y横坐标,yyy调整数值

swf控制外部mp3
from:http://www.fzbz.org/user/history/forum_view.asp?forum_id=9&view_id=58
1、只需建两层,两层都只需做两桢。第一层action,第二层放按钮命名为button。

     action层两桢均添加代码stop();     button层第1桢放播放按钮,第2桢放停止按钮。

2、关键在于给两个按钮添加as:

  第1桢的播放按钮as如下:


on (release) {
_root.sou=new Sound();
_root.sou.loadSound("love.mp3",0);//love.mp3为同一目录下的mp3文件完整名称
_root.sou.start();//开始播放声音
gotoAndStop(2);//跳转到第2桢
}
 第2桢的停止按钮添加as如下:

on (release) {
_root.sou.stop();//停止声音
gotoAndStop(1);//跳转到第1桢
}


 需将欲播放的mp3放置于swf同一目录下。
提示:MP3独立被调用就不必导入flash,这样不增加flash文件大小。

也可以把有的mc也做成独立的swf,搁于同一目录下,用loadMvie("xxx.swf","xxx");来调用。

这样便于修改,而且可以增加n个swf,分别被主文件调用,却不增加主文件大小,播放十分流畅,图片也不必处理那么小,保持清晰度。



调用外部as的action代码
语句讲解:#include
用法

#include "filename.as"
参数
filename.as 要添加到“动作”面板的脚本的文件名;.as 是推荐使用的文件扩展名。 
说明
动作;包括当测试、发布或导出影片时参数中指定的文件的内容。当您进行测试、发布或导出时,#include 动作将被调用。当执行语法检查时,将检查 #include 动作。
1,这个道理和制作网页时的调用外部css样式表差不多,今天我们来制作一个简单的,geturl跳转到网页,这只是例子,当然如果要直接跳转更好,我们主要讲解#include,明白了道理就可以调用外部的as了.打开flashMX,文本输入webjx.com
2,点击webjx.com按F8转换为按钮元件.这个就不抓图了.
3,点击webjx.com按钮元件,打开as面板,输入as:
on (press) {

#include "webjx.as"
}

讲解:
on (press) { \\当点击按钮时
#include "webjx.as" 
}

\\运行include"webjx.as"这个语句,意思是调用webjx.as 这个外部文件并运行其中的as命令.
现在我们该编写外部as文件了,打开记事本,(webjx.as文件为普通文本文件,只要符合as的语法规则即可)输入:geturl("http://www.webjx.com",target='_blank')这个语句不多解释了,新窗口打开网页教学网了.
把记事本存盘到一个名为webjx的文件夹,命名为webjx.as.然后回到flash窗口,保存文件并导出swf到webjx文件夹. 现在试试吧.
懂得#include的使用后,应用的方面就太多了.比如多个flash使用同一as.
 
视频教程列表
文章教程搜索
 
Flash AS推荐教程
Flash AS热门教程
看全部视频教程
购买方式/价格
购买视频教程: 咨询客服
tel:15972130058