今天看到帧子以顶上来了.心里很高兴.
今天就写个教程吧.
先说下结构.分为主文件.地图信息.关于此地图的资源信息,还有就是要用到的资源了.
为了结构再清析分别建立单独的文件夹.主文件放在外边.
文件里放代码.
地图信息里放数组和地图的描述.还以事件状态什么的这个以后再添加.
地图资源里写着要用到的资源的一些信息.我这里只写了用到哪个文件.并放到了数组里
资源里现在就放着地图的元素.全是放到库里的.
这里用到了共享库.可以在网上查资料.这里不做介绍了.
主文件:
var FPS = 16;
//
var stageW = Stage.width;
var stageH = Stage.height;
//
var path = "";
//路径
var clipW = 16;
var clipH = 16;
//元素的大小
var titleW = int(stageW/clipW);
var titleH = int(stageH/clipH);
//横竖可以放的元素个数
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
我从执行先后顺序写代码.这样可以一步步说明
function loadmap(link) {
//加载地图信息
stage_mc = _root.createEmptyMovieClip("stage_mc", 0);
//stgae_mc是主场景了.以后都不用_root.因为这里共享库有点关系.....
map_mc = stage_mc.createEmptyMovieClip("map_mc", 0);
//这个加载有地图数组的影片
traces("第一个加载对像:map_mc");
var _mcl = new MovieClipLoader();
var _lin = new Object();
_mcl.addListener(_lin);
_mcl.loadClip(path+"map/"+link, map_mc);
_lin.onLoadInit = function(map_mc) {
//加载完数组后加载有资源描述的文件.这个文件的地址是写到map里的.
loadPackage(map_mc.package);
};
}
////////////////////////////////////////////////////
function loadPackage(link) {
//加载资源包
traces("第二个加载对像");
var _mcl = new MovieClipLoader();
var _lin = new Object();
_mcl.addListener(_lin);
_mcl.loadClip(path+"package/"+link, stage_mc);
_lin.onLoadInit = function(stage_mc) {
traces("包加载完");
//map_info里有关于这个地图用到了哪个资源文件,然后加载这些文件.如果是在电脑上这一步可以省去.要是手机上这一步有必要做一下.
loadsrc(stage_mc.map_info);
trace(map_mc);
};
}
///////////////////////////////////////
function loadsrc(_array) {
//加载那些资源文件.这里应该相当于递归吧......................
//加载的时候是先从数组里pop一个值出来.然后加载这个值.加载完后接着执行些功能.
var temp_mc = _root.createEmptyMovieClip("temp_mc", 1);
var _mcl = new MovieClipLoader();
var _lin = new Object();
_mcl.addListener(_lin);
var link = _array.pop();
traces("正在加载"+link);
_mcl.loadClip(path+"src/"+link, temp_mc);
_lin.onLoadInit = function(temp_mc) {
var len = _array.length;
if (len<=0) {
traces("素材加载完");
//////当加载完后就可以把这个东西移除去了.
/////加载map的那个别移除去.因为里边有关于地图的信息.可能以后要更改和用到里边的东西.
removeMovieClip(temp_mc);
newmap();
////这里只是用来测试的.所以没有根据场景扑满播放器.
} else {
loadsrc(_array);
}
};
}
///////////////////////////
function newmap() {
k = 0;
for (var i = 0; i<8; i++) {
for (var j = 0; j<15; j++) {
k++;
var _mc = newclip("b"+(random(21)+1), "b"+k, k);//这里只是简单的写了个小功能.到时候为了方便要把添加一行地图和一列地图分别写个函数.还有块的层级也是很重要的.名称可以根据当前坐标命名.
//trace(_mc);
_mc._x = j*clipW;
_mc._y = i*clipH;
}
}
var _mc = newclip("n1", "dea", 300);
}
////////////////////////////////////////////////////
function newclip(link, name, depth) {
var _mc = stage_mc.attachMovie(link, name, depth);
//这里所有的库元件能只加到stage_mc里,因为是用stage_mc加载的那个包.网上查共享库的资料...
return _mc;
}
////////////////////////////////////主文件里就没有东西了.
地图信息里数组也是模拟的.
map_array = new Array();
for (var i = 0; i<8; i++) {
map_array = new Array();
var h_array = map_array;
for (var j = 0; j<15; j++) {
h_array[j] = "b"+(random(27)+1);
}
}
package = "new.swf";
////////////////////////////////////////////////
//资源包里写的是这个
map_info = ["G.swf", "B.swf", "N.swf"];
//资源里没有代码.只是一些地图的方块..
///////////////////////////////
好了.功能现在只是实现了大体的结构和地图的创建立.改天接着写
附件
-
test.rar
(118.17 KB)
-
2008-5-24 18:35, 下载次数: 22
这是源文件.