白桦的天空

第一次的心动,永远的心痛!
  首页  :: 新随笔  :: 联系 :: 管理

flash地图图片分块加载

Posted on 2008-06-26 12:17  白桦的天空  阅读(1056)  评论(3编辑  收藏  举报
图片要在可见区域里需要显示它的时候,才加载,实现分批加载,主要也就是解决一个网速与显示速度的矛盾。

//图片大小100*50
var pw:Number = 100;
var ph:Number = 50;
//图片下标最大值。图片命名规则:p0_0.jpg , p2_12.jpg , ……
var PicMaxX:Number = 7;
var PicMaxY:Number = 8;
//地图初始坐标[separator]
var tempX:Number = temp._x;
var tempY:Number = temp._y;
//地图右下角坐标
var tempMaxX:Number = temp._width+temp._x;
var tempMaxY:Number = temp._height+temp._y;
//加载一张图片的函数,nx:水平编号,ny:垂直编号,编号从0开始;
//库里空的MC链接名为:”kmc”
function LoadPic(nx:Number, ny:Number) {
if (temp[”pic”+nx+”_”+ny] == undefined) {
temp.attachMovie(”kmc”, “pic”+nx+”_”+ny, temp.getNextHighestDepth(), {_x:pw*nx, _y:ph*ny});
temp[”pic”+nx+”_”+ny].loadMovie(”images/p”+nx+”_”+ny+”.jpg”);
}
}
function LoadPic2() {
//计算需加载的图片数,然后加载它们
var LosPicXN:Number = (tempMaxX-temp._x)/pw;
var LosPicYN:Number = (tempMaxY-temp._y)/ph;
LosPicXN = LosPicXN>=PicMaxX ? PicMaxX : LosPicXN;
LosPicYN = LosPicYN>=PicMaxY ? PicMaxY : LosPicYN;
for (i=0; i<=LosPicXN; i++) {
for (j=0; j<=LosPicYN; j++) {
LoadPic(i, j);
}
}
}
LoadPic2();
temp.onPress = function() {
temp.startDrag(false, tempMaxX-(PicMaxX+1)*pw, tempMaxY-(PicMaxY+1)*ph, tempX, tempY);
};
temp.onMouseUp = function() {
temp.stopDrag();
};
temp.onEnterFrame = function() {
if (temp[”pic”+PicMaxX+”_”+PicMaxY] == undefined) {
LoadPic2();
} else {
delete this.onEnterFrame;
}
};

附件: 地图.fla

附件: 地图.rar