发新话题
打印

[分享] 又是XML加载图片,或许对新手有帮助!

又是XML加载图片,或许对新手有帮助!

昨天给一个朋友做课件,用到了XML写路径加载图片,我觉得对部分朋友可能用借鉴的价值,所以发上来。
由于图片太多,所以包中没有图片,但大家可以从XML中看到图片的路径和名称该怎样写。

FLASH:
复制内容到剪贴板
代码:
#include "tween_as.as"
///////
System.useCodepage = true;
var pic_xml:XML = new XML();
var url_array:Array = new Array();
pic_xml.ignoreWhite = true;
pic_xml.onLoad = function() {
for (var d:Number = 0; d<this.firstChild.childNodes.length; d++) {
  var path_array:Array = new Array();
  for (var c:Number = 0; c<this.firstChild.childNodes[d].childNodes.length; c++) {
   path_array.push(this.firstChild.childNodes[d].childNodes[c].firstChild.nodeValue);
  }
  url_array.push(path_array);
}
//trace(url_array);
};
pic_xml.load("path.xml");
///////////
var tween_array:Array = [myBlind, myFade, myFly, myPhoto, myPixelDissolove, myZoom, mySqueeze, myWipe];
this.createEmptyMovieClip("load_mc", this.getNextHighestDepth());
this.load_mc.createEmptyMovieClip("pic_mc", this.getNextHighestDepth());
var mcload:MovieClipLoader = new MovieClipLoader();
var mclListener:Object = new Object();
mclListener.onLoadInit = function(target:MovieClip) {
target._width = Stage.width;
target._height = Stage.height;
target._x = -550/2;
target._y = -400/2;
target._parent._x = 550/2;
target._parent._y = 400/2;
target.onRelease = function() {
  xiabiao_num++;
  xiabiao_num %= url_array[zhu_num].length;
  mcload.loadClip(url_array[zhu_num][xiabiao_num], load_mc.pic_mc);
};
tween_array[Math.floor(Math.random()*tween_array.length)](target._parent);
};
mcload.addListener(mclListener);
////////////////////
btn_mc.swapDepths(this.getNextHighestDepth());
var xiabiao_num:Number = 0;
var zhu_num:Number = 0;
for (var d:Number = 4; d>=0; d--) {
this.btn_mc["btn"+d].id = d;
this.btn_mc["btn"+d].onRelease = function() {
  xiabiao_num = 0;
  zhu_num = this.id;
  mcload.loadClip(url_array[zhu_num][xiabiao_num], load_mc.pic_mc);
};
}
/////////
this.btn_mc.fanhui_btn.onRelease = function() {
_root.gotoAndStop(1);
};
function auto_func() {
xiabiao_num++;
xiabiao_num %= url_array[zhu_num].length;
trace(url_array[zhu_num][xiabiao_num]);
mcload.loadClip(url_array[zhu_num][xiabiao_num], load_mc.pic_mc);
}
this.btn_mc.auto_btn.onRelease = function() {
auto_func();
clearInterval(id);
id = setInterval(auto_func, 12000);
};
this.btn_mc.hand_btn.onRelease = function() {
auto_func();
clearInterval(id);
};
this.btn_mc.one_btn.onRelease = function() {
xiabiao_num = 0;
mcload.loadClip(url_array[zhu_num][xiabiao_num], load_mc.pic_mc);
};
this.btn_mc.over_btn.onRelease = function() {
xiabiao_num = url_array[zhu_num].length-1;
mcload.loadClip(url_array[zhu_num][xiabiao_num], load_mc.pic_mc);
};
this.btn_mc.next_btn.onRelease = auto_func;
this.btn_mc.prev_btn.onRelease = function() {
xiabiao_num--;
if (xiabiao_num<0) {
  xiabiao_num = url_array[zhu_num].length-1;
}
mcload.loadClip(url_array[zhu_num][xiabiao_num], load_mc.pic_mc);
};
//////////////
this.miyu_txt.removeTextField();
XML:
复制内容到剪贴板
代码:
<?xml version="1.0" encoding="gb2312"?>
<part>
    <path>
      <url>\images\1娃娃鱼\娃娃鱼01.jpg</url>
   <url>\images\1娃娃鱼\娃娃鱼02.jpg</url>
   <url>\images\1娃娃鱼\娃娃鱼03.jpg</url>
   <url>\images\1娃娃鱼\娃娃鱼04.jpg</url>
   <url>\images\1娃娃鱼\娃娃鱼05.jpg</url>
   <url>\images\1娃娃鱼\娃娃鱼06.jpg</url>
   <url>\images\1娃娃鱼\娃娃鱼07.jpg</url>
   <url>\images\1娃娃鱼\娃娃鱼08.jpg</url>
   <url>\images\1娃娃鱼\娃娃鱼09.jpg</url>
    </path>
<path>
      <url>\images\2中华鲟\中华鲟01.jpg</url>
   <url>\images\2中华鲟\中华鲟02.jpg</url>
   <url>\images\2中华鲟\中华鲟03.jpg</url>
   <url>\images\2中华鲟\中华鲟04.jpg</url>
   <url>\images\2中华鲟\中华鲟05.jpg</url>
    </path>
<path>
   <url>\images\4.1老虎\老虎1.jpg</url>
   <url>\images\4.1老虎\老虎2.jpg</url>
   <url>\images\4.1老虎\老虎4.jpg</url>
   <url>\images\4.1老虎\老虎4.jpg</url>
   <url>\images\4.1老虎\老虎5.jpg</url>
   <url>\images\4.1老虎\老虎6.jpg</url>
   <url>\images\4.1老虎\老虎7.jpg</url>
   <url>\images\4.2大象\大象1.jpg</url>
   <url>\images\4.2大象\大象2.jpg</url>
   <url>\images\4.2大象\大象3.jpg</url>
   <url>\images\4.2大象\大象4.jpg</url>
   <url>\images\4.2大象\大象5.jpg</url>
   <url>\images\4.2大象\大象6.jpg</url>
   <url>\images\4.2大象\大象7.jpg</url>
   <url>\images\4.2大象\大象8.jpg</url>
   <url>\images\4.2大象\大象9.jpg</url>
   <url>\images\4.3狗熊\狗熊1.jpg</url>
   <url>\images\4.3狗熊\狗熊2.jpg</url>
   <url>\images\4.3狗熊\狗熊3.jpg</url>
   <url>\images\4.3狗熊\狗熊4.jpg</url>
   <url>\images\4.4孔雀\孔雀1.jpg</url>
   <url>\images\4.4孔雀\孔雀2.jpg</url>
   <url>\images\4.4孔雀\孔雀3.jpg</url>
   <url>\images\4.4孔雀\孔雀4.jpg</url>
   <url>\images\4.4孔雀\孔雀5.jpg</url>
   <url>\images\4.4孔雀\孔雀6.jpg</url>
   <url>\images\4.4孔雀\孔雀7.jpg</url>
   <url>\images\4.4孔雀\孔雀8.jpg</url>
      <url>\images\4.5其他\其他动物1.jpg</url>
   <url>\images\4.5其他\其他动物2.jpg</url>
   <url>\images\4.5其他\其他动物3.jpg</url>
   <url>\images\4.5其他\其他动物4.jpg</url>
   <url>\images\4.5其他\其他动物5.jpg</url>
   <url>\images\4.5其他\其他动物6.jpg</url>
   <url>\images\4.5其他\其他动物7.jpg</url>
   <url>\images\4.5其他\其他动物8.jpg</url>
   <url>\images\4.5其他\其他动物9.jpg</url>
   <url>\images\4.5其他\其他动物10.jpg</url>
   <url>\images\4.5其他\其他动物11.jpg</url>
   <url>\images\4.5其他\其他动物12.jpg</url>
   <url>\images\4.5其他\其他动物13.jpg</url>
   <url>\images\4.5其他\其他动物14.jpg</url>
  </path>
  <path>
      <url>\images\5青蛙\青蛙8.jpg</url>
      <url>\images\5青蛙\青蛙1.jpg</url>
   <url>\images\5青蛙\青蛙3.jpg</url>
   <url>\images\5青蛙\青蛙4.jpg</url>
   <url>\images\5青蛙\青蛙5.jpg</url>
   <url>\images\5青蛙\青蛙6.jpg</url>
   <url>\images\5青蛙\青蛙7.jpg</url>
   <url>\images\5青蛙\青蛙0.jpg</url>
     </path>
  <path>
      <url>\images\6.1狗\狗1.jpg</url>
         <url>\images\6.1狗\狗2.jpg</url>
   <url>\images\6.1狗\狗3.jpg</url>
   <url>\images\6.1狗\狗4.jpg</url>
    </path>
</part>

附件

XML路径加载.rar (24.02 KB)

2007-5-29 21:50, 下载次数: 513

TOP

谢谢分享

TOP

支持

TOP

也只能支持下了,这一下子测试不好啊

TOP

好东西,收下了

TOP

支持,呵呵

TOP

谢谢啊

TOP

好帖子,顶起来

TOP

果然是高手啊。。。

TOP

//引入一个图片特效的AS文件
#include "tween_as.as"
/////////防止图片路径、名称中的中文导致乱码
System.useCodepage = true;
//申明 XML实例
var pic_xml:XML = new XML();
var url_array:Array = new Array();
//加载XML这一句很重要,忽略空格
pic_xml.ignoreWhite = true;
pic_xml.onLoad = function() {
        for (var d:Number = 0; d<this.firstChild.childNodes.length; d++) {
                //申明一个临时数组来保存每个子节点中的元素然后放入到下面的url_array这个数组中,url_array也因此成为一个二维数组
                var path_array:Array = new Array();
                for (var c:Number = 0; c<this.firstChild.childNodes[d].childNodes.length; c++) {
                        path_array.push(this.firstChild.childNodes[d].childNodes[c].firstChild.nodeValue);
                }
                url_array.push(path_array);
        }
        //trace(url_array);
};
//加载XML文件
pic_xml.load("path.xml");
///////////这是一个应用特效的数组,方便后面的随机应用特效
var tween_array:Array = [myBlind, myFade, myFly, myPhoto, myPixelDissolove, myZoom, mySqueeze, myWipe];
//创建一个空MC来应用特效
this.createEmptyMovieClip("load_mc", this.getNextHighestDepth());
//在这空MC中再创建一个MC,来装图片
this.load_mc.createEmptyMovieClip("pic_mc", this.getNextHighestDepth());
//用MovieClipLoader类来加载图片,我认为是AS2.0加载图片必须要用的东东
var mcload:MovieClipLoader = new MovieClipLoader();
var mclListener:Object = new Object();
mclListener.onLoadInit = function(target:MovieClip) {
        //调整宽高,以及类似改变注册点的设置,当然这里已经是图片加载完成了,否则设置了也无效
        target._width = Stage.width;
        target._height = Stage.height;
        target._x = -550/2;
        target._y = -400/2;
        target._parent._x = 550/2;
        target._parent._y = 400/2;
        //这是是点击图片,就下一张,把图片做为一个按钮,这里可以略过
        target.onRelease = function() {
                xiabiao_num++;
                xiabiao_num %= url_array[zhu_num].length;
                mcload.loadClip(url_array[zhu_num][xiabiao_num], load_mc.pic_mc);
        };
        //随机应用特效,上面的数组中有特效的名字
        tween_array[Math.floor(Math.random()*tween_array.length)](target._parent);
};
mcload.addListener(mclListener);
////////////////////以下是我设置的关于按钮的深度,让它们始终在MC的上面,可以略过
btn_mc.swapDepths(this.getNextHighestDepth());
var xiabiao_num:Number = 0;
var zhu_num:Number = 0;
for (var d:Number = 4; d>=0; d--) {
        this.btn_mc["btn"+d].id = d;
        this.btn_mc["btn"+d].onRelease = function() {
                xiabiao_num = 0;
                zhu_num = this.id;
                mcload.loadClip(url_array[zhu_num][xiabiao_num], load_mc.pic_mc);
        };
}
/////////
this.btn_mc.fanhui_btn.onRelease = function() {
        _root.gotoAndStop(1);
};
//下一张的函数
function auto_func() {
        //这个数是来保存当前的图片的在数组中子数组中的下标
        xiabiao_num++;
        //下标只能在有当然数组中有效地循环
        xiabiao_num %= url_array[zhu_num].length;
        trace(url_array[zhu_num][xiabiao_num]);
        mcload.loadClip(url_array[zhu_num][xiabiao_num], load_mc.pic_mc);
}
//点击了自动这个按钮,就12秒自动切换一次
this.btn_mc.auto_btn.onRelease = function() {
        //马上运行一次图片切换
        auto_func();
        clearInterval(id);
        id = setInterval(auto_func, 12000);
};
//手动切换
this.btn_mc.hand_btn.onRelease = function() {
        auto_func();
        clearInterval(id);
};
//直接回到第一张
this.btn_mc.one_btn.onRelease = function() {
        xiabiao_num = 0;
        mcload.loadClip(url_array[zhu_num][xiabiao_num], load_mc.pic_mc);
};
//直接到达最后一张
this.btn_mc.over_btn.onRelease = function() {
        xiabiao_num = url_array[zhu_num].length-1;
        mcload.loadClip(url_array[zhu_num][xiabiao_num], load_mc.pic_mc);
};
//下一张
this.btn_mc.next_btn.onRelease = auto_func;
//上一张
this.btn_mc.prev_btn.onRelease = function() {
        xiabiao_num--;
        if (xiabiao_num<0) {
                xiabiao_num = url_array[zhu_num].length-1;
        }
        mcload.loadClip(url_array[zhu_num][xiabiao_num], load_mc.pic_mc);
};
//////////////

TOP

学习,谢谢

TOP

回复 #1 终极讨厌 的帖子

十分感谢终极老大,这正是我想要的。
www.chche.com
专业韩国CG动漫设计、室内设计、园林景观设计

TOP

谢谢楼主

正是我需要的。

TOP

哇。。好复杂! 谢谢分享!!!

TOP

请教如何加入预载呢。这个没预载。
www.chche.com
专业韩国CG动漫设计、室内设计、园林景观设计

TOP

强烈支持版主!终于见到高手了

TOP

发新话题