flash调用外部文件的问题

flash调用外部文件的问题,第1张

分类: 电脑/宴纯网络 >>软件 >>多媒体软件

问题描述:

已经载入了一个外部.swf文件,现在想把它放在原有flash的码闭一个特定位置上,请问要如何为这个调用的文件定位呢?拜托各位高手了!!!

解析:

新建一个空白影晌模咐片剪辑,然后将这个空白剪辑拖到舞台你想要的特定位置,命实例名为mc,在主时间轴上写代码:this.mc.loadMovie("外部文件名.swf","mc")就可以了;

注:外部文件名要用英文,还有路径要放在同级文件夹中

你说的载入变大,应该不可能发生吧,如果觉得大小不合适,就在外部修改这个swf文件,用硕思闪客精灵反编译成fla文件,再修改

我们都知道,SWF文件是Flash输出的标准文件格式之一,它的应用十分广泛,在PowerPiont、Authorware等软件中都可以轻松调用。那么如何在Flash中使用SWF文件呢?本文将为大家详细介绍相关的技术。

在使用Flash制作课件时,常常需要使用一些现成的SWF文件,通过Flash中的导入命令使用SWF文件,会彻底破坏原有的文件结构。另外,对于大型的课件,我们可以进行分组合作,然后通过调用SWF将课件组合起来,这样可以减小课件主文件的体积,也便于整体合作制作大型课件。

SWF文件的调用及控制

下面我们通过介绍课件《只有一个地球》(如图所示)的制作方法,来学习调用并控制SWF文件。在图中,灰色部分的尺寸为340×300(像素),这部分就是SWF文件的播放区域。右侧是文字按钮(如:片段一、片段二……),它们是SWF文件的调用按钮,下方是SWF文件的控制按钮,从左往右可以实现的功能有:播放、暂停、快退、快进、回到开头、跳到结尾、增加音量和减小音量。在课件的存放目录中有6个SWF文件,它们是被调用的文件,名称分别为:片段一、片段二、片段三……这些文件的场景尺寸跟灰色部分一样大,都是340×300(像素),另外还有一个片头动画名为:片头动画.swf。

第1步 启动Flash Mx 2004,使用绘图工具箱中的工具绘制界面,并添加一些文字。分别按“Ctrl+F8”创建所需要的按钮,然后拖放到界面的合适位置。按“Ctrl+F8”创建一个名为“SWF”的影片(MovieClip),里面不进行任何设置,然后按“Ctrl+L”打开Library库,将SWF影片拖放到场景中,并将其中心点和灰色区域的左上角重合,再单击〔Properties〕(属性)按钮,将其“Instance Name”设置为“swf”,最后保存文件到某个文件夹(注意:所调用的SWF也要放置在这个文件夹中,否则将不能调用,如果原SWF文件设置了背景色,在调用时都会自动去除成为透明色)。

第2步 为场景的第1帧添加如下Actions语句:

fscommand("fullscreen", true)

//设置课件全屏播放。

fscommand("allowscale", false)

//当课件窗口大小改肆滚变时,课件中的内容保持原有尺寸。

loadMovie("片头动画.swf", "swf")

//调用片头动画到影片SWF中。

movie_sound = new Sound(swf)

//捆绑影片SWF中的声音文件。

movie_sound.setVolume(50)

//设置影片SWF中音乐的音量为50,最高是100。

yinliang = movie_sound.getVolume()

//设置变量yinliang,使其值与影片SWF的音量相等。

第3步 为场景右侧的文字按钮加上Actions 语句,“片段一”按钮的语句如下:

on (release) {

unloadMovie("swf")

//将SWF影片中的原有内容清除。

loadMovie("片段一.swf", "swf")

//调用片段一文件至SWF影片中。

}

“片段二”按钮的语句如下:

on (release) {

unloadMovie("swf")

loadMovie("片段二.swf", "swf")

}

其余的几个文字按钮的语句与上面类似,只需要改变调用文件的名称即可。

第4步 下面分别来设置控制按钮的Actions语句:

“播放”按钮:

on (release) {

root.swf.play()

}//当单击该按钮时,当前场景中的SWF影片播放。

“暂停”按钮:

on (release) {

_root.swf.stop()

}//当单击该按钮时,当前场景中的SWF影片暂停。

“快退”按钮:

on (release) {

if (_root.swf._currentframe>=40) {

_root.swf.gotoAndStop(_root.swf._currentframe-40)

//当单击滑宽该按钮时,如果当前帧大于或等于40时,场景中的SWF影片从当前帧处减去40帧,实现快信雹亮退,这里的40可根据具体情况设置。

} else {

_root.swf.gotoAndStop(1)

//否则SWF影片跳转到第1帧。

}

}

“快进”按钮:

on (release) {

_root.swf.gotoAndStop(_root.swf._currentframe+40)

}//单击该按钮,SWF影片从当前帧加上40帧,从而实现了快进。

“回到开头”按钮:

on (release) {

_root.swf.gotoAndStop(1)

}

“跳到结尾”按钮:

on (release) {

dangqianzhen = _root.swf._totalframes

//设置变量dangqianzhen的数值等于SWF影片的总帧数,即最后一帧。

root.swf.gotoAndStop(dangqianzhen)

//让SWF影片跳转到最后一帧。

}

“增大音量”按钮:

on (release) {

if (_root.yinliang<=90) {

_root.yinliang = _root.yinliang+10

_root.movie_sound.setVolume(_root.yinliang)

//如果当前音量的数值小于或等于90就加上10,然后设置SWF影片中的音乐音量为增加后的值。

} else {

_root.movie_sound.setVolume(100)

//否则设置音量为100,这是最大音量。

}

}

“减小音量”按钮:

on (release) {

if (_root.yinliang>=10) {

_root.yinliang = _root.yinliang-10

_root.movie_sound.setVolume(_root.yinliang)

//如果当前音量的数值大于或等于10就减去10,然后设置SWF影片中的音乐音量为减少后的值。

} else {

_root.movie_sound.setVolume(0)

//否则设置音量为0,这样就没有声音了。

}

}

最后在课件发布时,一定要把所有的SWF文件都放置到同一个文件夹中,否则在使用课件时,会提示调用的SWF文件找不到。

特殊SWF文件调用技巧

并不是所有的SWF文件都正好与我们的调用要求相符合,对于一些不合乎我们要求的SWF文件,我们也可以通过设置其属性,力求让其与我们的要求相吻合。下面介绍三种特殊情况的处理方法。

1. SWF文件的尺寸不符合:当调用的SWF文件的尺寸大于或小于显示区域时,我们可以通过设置SWF影片的坐标和尺寸实现精确定位。语句示例如下:

_root.swf._X=0

_root.swf._Y=0

//设置SWF影片横坐标和纵坐标的数值,可根据具体情况设置。

_root.swf._width =340

_root.swf.._height = 300

//设置SWF影片长度和宽度的数值,可根据具体情况设置,单位为像素。

_root.swf._xscale=50;

_root.swf._yscale=50;

//设置SWF影片纵横比例为原来的二分之一,默认的原尺寸为100,可根据具体情况设置。

2. 只需要SWF文件中的一部分:当调用的SWF文件中的前一部分我们不需要,可以在使用loadMovie调用时,加上一句语句:_root.swf.gotoAndPlay(150)(假设从150帧处是我们需要的内容)。当SWF文件的后一部分不需要时,我们只需要在播放到该部分时,让影片暂停即可。其实当SWF文件加载到影片中的时候,影片的所有控制语句都可以用来对SWF文件进行控制,如:透明度(_alpha),角度(_rotation)等。

前两天,在书中看到一个光盘制作的例子,便也仿照着说明开始了制作。制作相应按钮与电影剪辑的过程因为都比较简单,所以也就没有遇到什么问题。但在关键的部分:调用安装程序这块却还是遇到了一些问题。那么在FLASH中如何调用EXE文件呢?

由于书中提到的例子没有介绍这一方面的内容,只是给了一个光盘目录结构,让你根据光盘目录结构设置好相应的URL就可以了。受这一提示的影响,当时便想会不会是利用GETURL命令来实现呢?于是便用这个命令去尝试了,结果发现虽然能够找到这个安装程序,却出现的是文件下载的提示框。虽然能够定位到这个可执行程序,也能通过这个窗口选择直接运行,但跟自己的要求还是有一定差距的。

虽然自己又看了看它的相应参数,也试图改变参数来满足自己的需要,但最终都没有找到合适的解决办法。后绝世来想见过这样用FLASH制作的安装光盘,网上应该有介绍的文章。于是上网开始搜索,果然找到了解决的办法,但还是有一些疑惑的问题,也希望明白的朋友予以指导。

网上的文章说,要想在flash

mx以后调用exe文件,需要将exe放到swf所在目录下的fscommand文件夹中,然后才能用fscommand("exec",文件名)的方式调用。也就是说要实现调用的功能,你必须先得建一个fscommand文件夹才行,然后再把可执行文件放到该文件夹中就可以了。因为我用的是FLASH

MX

2004,因此符合所说的条件。于是新建一个文件夹,然后以fscommand命名。再次尝试,果然能够实现调用了。但我在尝试的过程中,曾想用绝对路径的方式指定可执行文件,结果无论怎么尝试都没有实现。

因为我们知道,假如说想要完成一个用FLASH制作的安装光盘,一般情况下肯定不止一个安装程序,而把所有的安装程序都放到一个文件夹中,很显然有些太乱了。而我们都见过软件安装光盘,各个安装程序都在自己的文件夹中,里面还有安装说明等许多文件,这样就给我们一个很明确的提示,从而让我们有选择的进行程序的安装。而如果像这样制作的话,则不能达到指定的要求。所有的安装程序都放到一个目录中,程序太多的话就有些乱套了。

但如果利用绝对路径却又实现不了,而且在自己的实践过程中,真得有些对FLASH系统的绝对路径的表示有些疑惑了。因为在不同的程序中,不同的表示方法居然都能够起相同的作用,而这几种方法有时候是截然不同的。比如说有的时候指定文件如e:/a.swf也能够调用,而有的时候则要用e:///a.swf。而还有的时候则用正常的表示路径调用才可以,如e:\aa\a.swf。这就让我有些不理解了,究竟哪一种路径的表示方法正确呢?个人感觉应该第一种比较符合现在的调用习惯,但有时候这问题真得有些不好解释。

虽然有些问题,但总算实现了在FLASH中调用安装程序的功能,总算弥补了GETURL语句的缺陷。但总是感觉多少有些不足,既然它能够调用安装程序,既然能够利用相对路径调用,那么绝对路径应该也支持呀。但到现在为止还是没有找到合适的办法,相信一定有办法实现的,否则的话即使支持了,但也存在很不明显的不足之处,这就与该软件支持这一功能的初衷明显不符。

最后,把实现在FLASH中调用exe文件的全过程介并升肢绍如下:

我使用的版本是FLASH MX 2004,过程如下:

1、按照正常的过程制作程序文件(FLA文件)。

2、在程序中按照相对路径的方式调用exe文件,格式如下:fscommand("exec","a.exe").

3、导出影片文件(SWF文件)到指定目录中。

4、在导出的SWF文件的相同目录创建fscommand文件夹,然后将a.exe文件放到该文件夹中。

5、运行该笑唯SWF文件,然后选择创建播放器,只有生成exe文件才能调用exe文件。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/12298584.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-24
下一篇 2023-05-24

发表评论

登录后才能评论

评论列表(0条)

保存