请选择 进入手机版 | 继续访问电脑版
点点网模板设计大赛 phpchina

经典论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

蓝色理想 最新研发动态 用悬赏 三天解决问题 解决访问速度慢 论坛支持农历生日 - 给官方提建议

论坛活动及任务 归纳网站最新活动 地图任务 邮件更新任务:保护帐号安全

写书评、邀请阅读赢精品图书! 想加薪?!蓝色理想招聘提供你更多机会 万元奖励等你拿——点点网模板设计大赛

查看: 8892|回复: 26

[视觉设计] 如何实动态加载图片逐个呈现 [复制链接]

winhero_charles 楼主

幽谷鸟

银牌会员

帖子
883
体力
2830
威望
2
居住地
广东省 深圳市
发表于 2007-7-3 17:57:28 |显示全部楼层
最近一直在练习FLASH动态加载图片,
具体方法是利用创建一系列的mc,按照一定要求来排列,在加载图片时侯,图片一瞬间就加载完毕,很不爽,想让图片一个一个的加载,
请高手提示下,给出思路

[ 本帖最后由 winhero_charles 于 2007-7-3 19:04 编辑 ]
文仔 
帖子
572
体力
3369
威望
0
居住地
广东省 佛山市
发表于 2007-7-3 18:30:30 |显示全部楼层
將圖片的地址路徑存到數組中,或用XML.

寫一個function函數,如:
var A:Array=["1.jpg","2.jpg","3.jpg",.......];
var n:Number=0
function LoadImg(ID){
這裏寫裝載圖片的程式,如裝完成執行一次LoadImg(n)
n++
}
LoadImg(0)
hack86 
帖子
1018
体力
3157
威望
80
居住地
浙江省 杭州市
发表于 2007-7-3 18:31:09 |显示全部楼层
加载当然是一下加完的,你要一个显示的过程,可以加载后全部不可见 (_visible,_alpha)都可以 或者全部离开舞台
再按你的要求 一个个的显示 不 就行了                  换个方法思考,问题就可以解决。
Flash Game Development
Rich Internet Application
文仔 
帖子
572
体力
3369
威望
0
居住地
广东省 佛山市
发表于 2007-7-3 18:51:36 |显示全部楼层
可以參考一下這個http://www.tonisalon.cn/image.swf
winhero_charles 楼主

幽谷鸟

银牌会员

帖子
883
体力
2830
威望
2
居住地
广东省 深圳市
发表于 2007-7-3 19:04:11 |显示全部楼层
sorry,我的描述有问题,应是让图片一个一个呈现
winhero_charles 楼主

幽谷鸟

银牌会员

帖子
883
体力
2830
威望
2
居住地
广东省 深圳市
发表于 2007-7-3 19:06:30 |显示全部楼层
就是文仔兄给出这样的效果,有没有源码供参考?
winhero_charles 楼主

幽谷鸟

银牌会员

帖子
883
体力
2830
威望
2
居住地
广东省 深圳市
发表于 2007-7-4 20:35:13 |显示全部楼层
做了一个效果,但是逐一呈现的效果还未出现,请朋友看看并提示,谢谢
附件: 你需要登录才可以下载或查看附件。没有帐号?注册
winhero_charles 楼主

幽谷鸟

银牌会员

帖子
883
体力
2830
威望
2
居住地
广东省 深圳市
发表于 2007-7-4 20:42:15 |显示全部楼层
还就我的例子提个问题:
附件: 你需要登录才可以下载或查看附件。没有帐号?注册
winhero_charles 楼主

幽谷鸟

银牌会员

帖子
883
体力
2830
威望
2
居住地
广东省 深圳市
发表于 2007-7-5 15:36:04 |显示全部楼层
请支持下吧,因为的确在这方面不足..
winhero_charles 楼主

幽谷鸟

银牌会员

帖子
883
体力
2830
威望
2
居住地
广东省 深圳市
发表于 2007-7-5 15:47:17 |显示全部楼层
上图片中的问题已解决:
将两个for中的i,j位置对调,下代码为改后的

for(j=0;j<3;j++){
        for(i=0;i<3;i++){

                var mc=this.createEmptyMovieClip("mc"+i+j,this.getNextHighestDepth())
                var menu1=mc.attachMovie("menu","menu1",num);
                mc._x=150+(menu1._width+20)*i;
                mc._y=50+(menu1._height+20)*j;

                mc._alpha=50;
                menu1.txt.text="图片"+num;
                loading(n);
                n++;
                //trace(n);
                num++;
               
                //trace(num);
                //trace(menu1._parent);
        }
}

[ 本帖最后由 winhero_charles 于 2007-7-5 15:48 编辑 ]
帖子
45
体力
63
威望
0
发表于 2007-7-5 15:51:22 |显示全部楼层

没明白啊

怎么搞暗暗
winhero_charles 楼主

幽谷鸟

银牌会员

帖子
883
体力
2830
威望
2
居住地
广东省 深圳市
发表于 2007-7-5 17:25:10 |显示全部楼层
半透明效果,鼠标至,图片会逐渐清晰开来
做了一个效果,但是逐一呈现的效果还未出现,请朋友看看并提示
Idoit 

猩猩点灯

银牌会员

帖子
1053
体力
1427
威望
22
居住地
江苏省 南京市
发表于 2007-7-5 17:51:53 |显示全部楼层
你需要一个过程嘛
附件: 你需要登录才可以下载或查看附件。没有帐号?注册
裸奔也是一种美
winhero_charles 楼主

幽谷鸟

银牌会员

帖子
883
体力
2830
威望
2
居住地
广东省 深圳市
发表于 2007-7-5 19:04:40 |显示全部楼层
正是idoit这样的效果,谢谢
但是,
在这个例中,为何要先
loadmc(0)
??

[ 本帖最后由 winhero_charles 于 2007-7-5 19:55 编辑 ]
winhero_charles 楼主

幽谷鸟

银牌会员

帖子
883
体力
2830
威望
2
居住地
广东省 深圳市
发表于 2007-7-5 21:09:49 |显示全部楼层
将ediot源码放出,

var Arr_img = ["01","02","03","04","05","06","07","08","09"];
var len = Arr_img.length;

var main = this.createEmptyMovieClip("main", 1);
main._x = main._y = 50;

//---???????
loadmc(0);

function loadmc(n) {
        var tmpmc = main.createEmptyMovieClip("mc"+n, n);
                var mclListener = new Object();
        mclListener.onLoadInit = function(target) {
        tmpmc._x = n%3*90;
        tmpmc._y = Math.floor(n/3)*90;
        if (n<len-1) {
                loadmc(n+1);//或loadmc(++n)
                //trace(n);
                }

        };
        var image = new MovieClipLoader();
        image.addListener(mclListener);
        image.loadClip("images/"+Arr_img[n]+".jpg",tmpmc);
        //trace(Arr_img[n])
}
红线部份,条件为真,重复执行loadmc(n)

一切都会好起来

中级会员

帖子
177
体力
402
威望
0
居住地
江苏省 无锡市
发表于 2007-7-5 21:39:36 |显示全部楼层
原帖由 文仔 于 2007-7-3 18:51 发表
可以參考一下這個http://www.tonisalon.cn/image.swf

兄弟:能不能给源码学习下。很喜欢你那个。
主页www.ue360.net
winhero_charles 楼主

幽谷鸟

银牌会员

帖子
883
体力
2830
威望
2
居住地
广东省 深圳市
发表于 2007-7-7 10:30:47 |显示全部楼层
按ediot的方法,
我现在作如下改变,将图片的资料写入xml文件,让FLASH解析XML,AS如下:
  1. var picArray=new Array();
  2. /////////////////////////////////////////////////
  3. var myXML=new XML();
  4. myXML.ignoreWhite=true;
  5. myXML.load("xml/img.xml");

  6. myXML.onLoad=function(suc){
  7.         if(suc){
  8.         fenxi();
  9.         //trace("ok");
  10.         loadPic(0);
  11.         }
  12. }
  13. loadPic(0);
  14. /////////////////////////////////////////////////
  15. fenxi=function(){
  16.         var myList=myXML.firstChild.childNodes;
  17.         var len=myList.length;
  18.         for(i=0;i<len;i++){
  19.                 picArray[i]=myList[i].attributes.name
  20.                 //trace(picArray[i]);
  21.         }
  22. }
  23. /////////////////////////////////////////////////
  24. function loadPic(n){
  25.         var mc=this.createEmptyMovieClip("mc"+n,n)
  26.     var  obj:Object=new Object();
  27.         obj.onLoadInit=function(){
  28.          mc._x=150+100*(n%3);//------>要将i%3括起来,运算顺序问题;
  29.          mc._y=50+100*Math.floor(n/3);
  30.          if(n<len-1){
  31.                  n++;
  32.                  loadPic(n)
  33.                  trace(n);
  34.         }
  35.         }
  36.         var  myCl:MovieClipLoader=new MovieClipLoader();
  37.         myCl.addListener(obj)
  38.         myCl.loadClip(picArray[n],"mc"+n);
  39. }
复制代码

不知为什么只出现一张图片,请告诉我出问题的原因;
另img.xml文件内容如下:
  1. <?xml version="1.0" encoding="UTF-8" ?>
  2. <imgs>
  3. <pic name="images/01.jpg" />
  4. <pic name="images/02.jpg" />
  5. <pic name="images/03.jpg" />
  6. <pic name="images/04.jpg" />
  7. <pic name="images/05.jpg" />
  8. <pic name="images/06.jpg" />
  9. <pic name="images/07.jpg" />
  10. <pic name="images/08.jpg" />
  11. <pic name="images/09.jpg" />
  12. </imgs>
复制代码

[ 本帖最后由 winhero_charles 于 2007-7-7 10:32 编辑 ]
附件: 你需要登录才可以下载或查看附件。没有帐号?注册
nang 

终极讨厌

金牌会员

帖子
1614
体力
3138
威望
8
发表于 2007-7-7 11:27:26 |显示全部楼层
我刚做好源文件,经典就灭了!!刷新了N次才上来!

  1. //=========透明函数========
  2. function alpha_func(_mc:MovieClip) {
  3.         _mc._alpha = 5;
  4.         _mc.onEnterFrame = function() {
  5.                 this._alpha += 5;
  6.                 this._alpha>95 ? delete this.onEnterFrame : 闪吧;
  7.         };
  8. }
  9. //============MCL类===========
  10. var _mcl:MovieClipLoader = new MovieClipLoader();
  11. var n:Number = new Number();
  12. this.onLoadInit = function(_mc:MovieClip) {
  13.         _mc._txt.removeTextField();
  14.         _mc._width = 80;
  15.         _mc._height = 80;
  16.         alpha_func(_mc);
  17.         if (n<picArray.length) {
  18.                 n++;
  19.                 load_func();
  20.         } else {
  21.                 trace("加载完成!");
  22.         }
  23. };
  24. //如果没有下面的代码,就会一个加载出错,导致后面的都不能加载,用这个可以出错时继续向下加载,源文件中我故意少了一个图片,让它出错
  25. this.onLoadError = function(_mc:MovieClip) {
  26.         _mc.createTextField("_txt", 200, 20, 10, 60, 30);
  27.         _mc._txt.textColor = 0xff0000;
  28.         _mc._txt.text = "加载失败!";
  29.         if (n<picArray.length) {
  30.                 n++;
  31.                 load_func();
  32.         }
  33. };
  34. //=========加载进度显示==============
  35. this.onLoadProgress = function(_mc:MovieClip, bytesLoaded:Number, bytesTotal:Number) {
  36.         _mc.createTextField("_txt", 200, 20, 10, 60, 30);
  37.         _mc._txt.textColor = 0xff0000;
  38.         _mc._txt.text = Math.floor((bytesLoaded/bytesTotal*10000)/100)+"%";
  39. };
  40. _mcl.addListener(this);
  41. //=================load函数========
  42. function load_func() {
  43.         this.createEmptyMovieClip("pic_mc"+n, n+100);
  44.         //如果要改成竖向加载,只需把下面的_x _y换一下就行了
  45.         this["pic_mc"+n]._y = 30+Math.floor(n/3)*100;
  46.         this["pic_mc"+n]._x = 100+n%3*100;
  47.         _mcl.loadClip(picArray[n], this["pic_mc"+n]);
  48. }
  49. //===========XML文件加载=========
  50. var picArray = new Array();
  51. var myXML = new XML();
  52. myXML.ignoreWhite = true;
  53. myXML.onLoad = function(suc) {
  54.         if (suc) {
  55.                 for (var d:Number = 0; d<this.firstChild.childNodes.length; d++) {
  56.                         picArray.push(this.firstChild.childNodes[d].attributes.name);
  57.                 }
  58.                 load_func();
  59.         } else {
  60.                 trace("XML文件加载失败!");
  61.         }
  62.         //trace(picArray);
  63. };
  64. myXML.load("xml/img.xml");
复制代码

[ 本帖最后由 nang 于 2007-7-7 11:36 编辑 ]
附件: 你需要登录才可以下载或查看附件。没有帐号?注册
终极讨厌    我的博客
winhero_charles 楼主

幽谷鸟

银牌会员

帖子
883
体力
2830
威望
2
居住地
广东省 深圳市
发表于 2007-7-7 11:44:23 |显示全部楼层
nang兄真是快,您的源码我要借来码究下,我的问题,暂时还不知道错在什么地方
winhero_charles 楼主

幽谷鸟

银牌会员

帖子
883
体力
2830
威望
2
居住地
广东省 深圳市
发表于 2007-7-7 19:36:58 |显示全部楼层
问题还是被nang解决啦,出错原因:
原例中有两个变量len及n,由于是定义在一个函数内,却被另一个函数引用(定义在函数中的变量属局部变量,局部变量在此函数执行之后自动失效),所以在另一个函数内是空值;

解决办法:
将此变量定义为全局变量,同时检查自定义函数是否有重新定义此两个变量的现象,有的话去掉前面的关键字"var"

很基础吧,但缩合运用时,却被ingnore,看来还要多练!
帖子
1
体力
9
威望
0
发表于 2008-5-21 15:48:11 |显示全部楼层
正在找可以下载的。
zmtcn 
帖子
1
体力
12
威望
0
发表于 2010-4-23 12:51:06 |显示全部楼层
好东西,谢了
gzcgc 
帖子
4
体力
11
威望
0
居住地
广东省 广州市
发表于 2010-4-24 11:42:00 |显示全部楼层
哈哈~~!刚好需要这东东~~!谢谢咯!
gzcgc.com
帖子
1
体力
17
威望
0
发表于 2010-4-24 17:52:36 |显示全部楼层
var Loader:MovieClipLoader;
var ImgArr:Array;
var LoadID:Number;

/*初始化*/
function init(){
        ImgArr = ["01.jpg","02.jpg","03.jpg"."..."]
        LoadID = 0;
        Loader = new MovieClipLoader();
        Loader.addListener(this);
}

/*为每个被加载的对象创建容器*/
function createCtn(n){
        var oname = "ctn"+n;
        var depth = n+30;
        var o = this.createEmptyMovieClip(oname,depth);
        return o;
}

/*加载当前ID的对象*/
function LoadItem(){
        var p = ImgArr[LoadID];
        var ctn = createCtn(LoadID);
        Loader.loadClip(p,ctn);
}

/加载下一个ID的对象/
function loadNext(){
        if(LoadID < ImgArr.length){
                LoadID++;
                LoadItem();
        }
}

/*加载过程*/
function onLoadProgress(t,bytesLoaded,bytesTotal){
        var p = Math.floor(bytesLoaded/bytesTotal*100);
}

/*加载完毕*/
function onLoadInit(t){
        loadNext();       
}

init();
帖子
29
体力
63
威望
0
发表于 2010-4-25 17:01:02 |显示全部楼层
我提一个问题,
如果让这一些图片形成环型显示,初始状态固定不动,点其中一个图片,就旋转到正面位置显示
这样的效果怎么写AS呢
帖子
1
体力
12
威望
0
居住地
天津市 河东区
发表于 2011-4-17 16:15:18 |显示全部楼层
正急求相关内容
ddl211 
帖子
1
体力
2
威望
0
发表于 6 天前 |显示全部楼层
初学者飘过
您需要登录后才可以回帖 登录 | 注册

Archiver|手机版|blueidea.com ( 京ICP备05002321号 )  

GMT+8, 2012-3-7 06:06 , Processed in 0.122796 second(s), 10 queries , Gzip On, Memcache On.

Powered by Discuz! X2

© 2001-2011 Comsenz Inc.

回顶部