如何将SWF文件转换成透明背景的GIF动画文件?
本人曾用硕思闪客精灵或另一款swf2gi软件先把SWF转成FLA文件,然后在调入FLASH8中,再选“发布”输出透明背景的GIF文件,可由SWF转的FLA文件,在FLAS...
本人曾用硕思闪客精灵或另一款swf2gi软件先把SWF转成FLA文件,然后在调入 FLASH 8中,再选“发布”输出透明背景的GIF文件,可由SWF转的FLA文件,在FLASH 8 中 画面不是静止的就是变换位置了,不原来的动画了,这个问题应如何解决?谢谢............
展开
1个回答
2013-09-04
展开全部
使用loadMovie有两种基本的方法:(一)将外部swf 文件载入到某一层上。(二)将外部 swf文件载入到时间轴的某个影片剪辑中。对这两种方法的使用,用图表示更加直观些。
第二种方法又可以这样写:_root.mc.loadMovie(“a1.swf”);如果a1的后缀名为 jpg那么载入的是外部图片。载入图片与载入swf文件的道理是一样的,就不赘述。说到这里还比较空洞,做一个实例来看看。
一、新建一个文件夹,任意取一个名字 比如:mywangye
二、做一个 Flash发布成swf文件并且取名字为a1,保存在mywangye这个目录中,这个a1就是我们要载入的子文件。
三、然后做主文件,由于我们是做最简单的,所以什么也不画,就在这个主文件的第一桢,写 loadMovie(“a1.swf”,1) 同样将这个文件保存在mywangye目录中,取个名字叫index
四、测试效果,源文件见本文后的打包中的 01文件夹
然后用上面图中的第2种语法,继续做一个,注意了,第二种方法需要在舞台上放一个mc并且取一个实例名,或者创建一个空的MC。做了上面的小实验后,我们可以总结些什么结论呢?如果仅仅是得到可以加载外部文件这么一条结论的话,那么就太肤浅了。可以让我们想到:被加入进来的外部文件的坐标问题;长宽问题;外部文件比较大,造成的加载延时问题;如何访问被加载进来的swf的问题;不要加载了,卸载问题…..这些问题我们如果不研究下,真正在做网页的时候,会遇到很多麻烦的。
由上面的最简单的加载我们可以得到这样的结论:(1)如果采用加载到层上的,加载进来后默认注册点是舞台的左上角;如果采用加载到mc里面的,那么默认注册点是MC的注册点。如果MC的注册点是左上角,那么被加载进来的SWF文件就与MC的左上角对准;如果MC的注册点是中心,那么加载进来的SWF就把左上角与MC的中心对齐。(2)被加载进来的MC保留原来的长宽比例。
问题一:如何控制被加载进来的SWF文件的坐标和长宽比例大小?
控制被加载进来的SWF文件控制其长宽要采用 onEnterFrame,比如 :
on (press) {
loadMovie("a2.swf", "_root.mymc");
onEnterFrame = function () {
_root.mymc._x = 0;
_root.mymc._y = 0;
_root.mymc._width = 330;
_root.mymc._height = 240;
};
}
为什么用 onEnterFrame呢?因为被加载进来的的过程中,有点延时,如果没有onEnterFrame语句,那么语句读取一次就不读取了,然而读取了这一次之后,还没有加载进来,所以就会导致坐标大小设置无效。同样,如果加载到层上,也是这样的。
on (press) {
loadMovie("a1.swf", 1);
onEnterFrame = function () {
_level1._x = 17;
_level1._y = 30;
_level1._width = 330;
_level1._height = 240;
};
}
请注意这两种方法,第一种,把外部的a2加载到mymc中,加在进来后,a2就自动的替换了mymc,我们直接设置mymc的属性就设置了被加载进来的swf的属性。第二种方法,_level是对于加载到时间轴上的电影的引用,加载到第2层就是_level2;加载到第3层就是_level3。
问题之二:如何实现点击按钮加载一个外部SWF文件,并且要显示加载的下载进度呢?
有两个方法来实现这个效果,其一:把加载londing写在主文件中,其二,被加载的子SWF文件有自己的londing。现在分别给予说明。
其一:在主文件中写londing
外部子swf文件名为a1,主文件中有一个动态文本框名为loadText,一个按钮名为bbt,现在把loadMovie和londing写在桢上。
_root.bbt.onPress = function() {
_root.createEmptyMovieClip("mc", 10);
mc.loadMovie("a1.swf");
mc._visible = false;
_root.bbt.onEnterFrame = function() {
var l = mc.getBytesLoaded();
var t = mc.getBytesTotal();
var getPercent = l/t;
loadText = Math.round(getPercent*100)+"%";
if (l>0 && l>=t) {
mc._visible = true;
delete this.onEnterFrame;
}
mc._x = 10;
mc._y = 10;
mc._width =440;
mc._height = 320;
};
};
其二:子文件中有自己的londing
这个写法与前面说的londing一样,只是注意一个问题就是注意路径的问题,比如这样写:
第一祯
loaded = getBytesLoaded();
total = getBytesTotal();
lts = Math.round((loaded/total)*100);
wenben = lts+"%";
第二祯
if (lts == 100) {
gotoAndStop(3);
} else {
gotoAndPlay(1);
}
和前面的londing中介绍的比较,看出不同之处没有呢?仅仅是去掉了_root因为被加载后,外部SWF文件就相当于主文件中的一个MC 有了_root 就是指向主文件的_root 了,当然会显示错误。
问题三:我想在舞台上画一个屏幕,然后点击一个按钮就载入一个外部swf进行播放该怎样做呢?
那么我们就来一起做一个相册吧。当主文件载入后,单击按钮就载入一个外部swf 文件,并且都有londing显示。首先我们做好以下准备工作:(1)准备几张图片,现在我们准备7张,6个子文件一个一张,主文件用一张。(2)主文件舞台大小为了适应网页的需要,设置为770*420。子文件舞台大小设置为512*384,这样就不需要载入后控制大小了,方便些(其实我们应当这样,省去一些麻烦.
一、制作子文件。每个都用来显示图片,第一和第二祯写londing,第三祯~~二十祯根据自己的爱好做点亮度变化,以产生动感,最后一祯写上stop()。第一和第二祯的londing如下
第一祯
loaded = getBytesLoaded();
total = getBytesTotal();
lts = Math.round((loaded/total)*100);
wenben = "数据下载中 "+lts+"%";
第二祯
if (lts == 100) {
gotoAndPlay(3);<
第二种方法又可以这样写:_root.mc.loadMovie(“a1.swf”);如果a1的后缀名为 jpg那么载入的是外部图片。载入图片与载入swf文件的道理是一样的,就不赘述。说到这里还比较空洞,做一个实例来看看。
一、新建一个文件夹,任意取一个名字 比如:mywangye
二、做一个 Flash发布成swf文件并且取名字为a1,保存在mywangye这个目录中,这个a1就是我们要载入的子文件。
三、然后做主文件,由于我们是做最简单的,所以什么也不画,就在这个主文件的第一桢,写 loadMovie(“a1.swf”,1) 同样将这个文件保存在mywangye目录中,取个名字叫index
四、测试效果,源文件见本文后的打包中的 01文件夹
然后用上面图中的第2种语法,继续做一个,注意了,第二种方法需要在舞台上放一个mc并且取一个实例名,或者创建一个空的MC。做了上面的小实验后,我们可以总结些什么结论呢?如果仅仅是得到可以加载外部文件这么一条结论的话,那么就太肤浅了。可以让我们想到:被加入进来的外部文件的坐标问题;长宽问题;外部文件比较大,造成的加载延时问题;如何访问被加载进来的swf的问题;不要加载了,卸载问题…..这些问题我们如果不研究下,真正在做网页的时候,会遇到很多麻烦的。
由上面的最简单的加载我们可以得到这样的结论:(1)如果采用加载到层上的,加载进来后默认注册点是舞台的左上角;如果采用加载到mc里面的,那么默认注册点是MC的注册点。如果MC的注册点是左上角,那么被加载进来的SWF文件就与MC的左上角对准;如果MC的注册点是中心,那么加载进来的SWF就把左上角与MC的中心对齐。(2)被加载进来的MC保留原来的长宽比例。
问题一:如何控制被加载进来的SWF文件的坐标和长宽比例大小?
控制被加载进来的SWF文件控制其长宽要采用 onEnterFrame,比如 :
on (press) {
loadMovie("a2.swf", "_root.mymc");
onEnterFrame = function () {
_root.mymc._x = 0;
_root.mymc._y = 0;
_root.mymc._width = 330;
_root.mymc._height = 240;
};
}
为什么用 onEnterFrame呢?因为被加载进来的的过程中,有点延时,如果没有onEnterFrame语句,那么语句读取一次就不读取了,然而读取了这一次之后,还没有加载进来,所以就会导致坐标大小设置无效。同样,如果加载到层上,也是这样的。
on (press) {
loadMovie("a1.swf", 1);
onEnterFrame = function () {
_level1._x = 17;
_level1._y = 30;
_level1._width = 330;
_level1._height = 240;
};
}
请注意这两种方法,第一种,把外部的a2加载到mymc中,加在进来后,a2就自动的替换了mymc,我们直接设置mymc的属性就设置了被加载进来的swf的属性。第二种方法,_level是对于加载到时间轴上的电影的引用,加载到第2层就是_level2;加载到第3层就是_level3。
问题之二:如何实现点击按钮加载一个外部SWF文件,并且要显示加载的下载进度呢?
有两个方法来实现这个效果,其一:把加载londing写在主文件中,其二,被加载的子SWF文件有自己的londing。现在分别给予说明。
其一:在主文件中写londing
外部子swf文件名为a1,主文件中有一个动态文本框名为loadText,一个按钮名为bbt,现在把loadMovie和londing写在桢上。
_root.bbt.onPress = function() {
_root.createEmptyMovieClip("mc", 10);
mc.loadMovie("a1.swf");
mc._visible = false;
_root.bbt.onEnterFrame = function() {
var l = mc.getBytesLoaded();
var t = mc.getBytesTotal();
var getPercent = l/t;
loadText = Math.round(getPercent*100)+"%";
if (l>0 && l>=t) {
mc._visible = true;
delete this.onEnterFrame;
}
mc._x = 10;
mc._y = 10;
mc._width =440;
mc._height = 320;
};
};
其二:子文件中有自己的londing
这个写法与前面说的londing一样,只是注意一个问题就是注意路径的问题,比如这样写:
第一祯
loaded = getBytesLoaded();
total = getBytesTotal();
lts = Math.round((loaded/total)*100);
wenben = lts+"%";
第二祯
if (lts == 100) {
gotoAndStop(3);
} else {
gotoAndPlay(1);
}
和前面的londing中介绍的比较,看出不同之处没有呢?仅仅是去掉了_root因为被加载后,外部SWF文件就相当于主文件中的一个MC 有了_root 就是指向主文件的_root 了,当然会显示错误。
问题三:我想在舞台上画一个屏幕,然后点击一个按钮就载入一个外部swf进行播放该怎样做呢?
那么我们就来一起做一个相册吧。当主文件载入后,单击按钮就载入一个外部swf 文件,并且都有londing显示。首先我们做好以下准备工作:(1)准备几张图片,现在我们准备7张,6个子文件一个一张,主文件用一张。(2)主文件舞台大小为了适应网页的需要,设置为770*420。子文件舞台大小设置为512*384,这样就不需要载入后控制大小了,方便些(其实我们应当这样,省去一些麻烦.
一、制作子文件。每个都用来显示图片,第一和第二祯写londing,第三祯~~二十祯根据自己的爱好做点亮度变化,以产生动感,最后一祯写上stop()。第一和第二祯的londing如下
第一祯
loaded = getBytesLoaded();
total = getBytesTotal();
lts = Math.round((loaded/total)*100);
wenben = "数据下载中 "+lts+"%";
第二祯
if (lts == 100) {
gotoAndPlay(3);<
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询