Flash区块游戏之卷屏 |
| 作者:佚名 来源:不详 更新:2007-1-13 20:43:02 错误报告 我要投稿 |
//增加卷屏事件
function strollMap(dirx) { var mc = this.target._parent; if (mc._x<=0) { var t = mc._x-dirx*this.speed; if (t>0) { mc._x = 0; } else if (t<this.target.mapminx) { mc._x = this.target.mapminx; } else { mc._x -= dirx*this.speed; var t = Math.abs(Math.floor((this.target._parent._x)/Tile.width)); if (dirx == 1) { this.dispatchEvent({type:"left", value:t}); } else if (dirx == -1) { this.dispatchEvent({type:"right", value:t}); } } } } 在Game类中 _char.addEventListener("left", Delegate.create(this, moveleft)); _char.addEventListener("right", Delegate.create(this, moveright)); private function moveleft(obj) { var t = obj.value-1; if (t != 0) { var row = t-1; if (row>=0 && (row+endx+1)<_mapData.width) { this.removeRow(row); this.addRow(row+endx+1); } } } private function moveright(obj) { var t = obj.value-1; if (t>=0) { var row = t; if (row>=0 && (row+endx)<_mapData.width) { this.addRow(row); this.removeRow(row+endx+1); } } } //绘制指定列 private function addRow(row:Number) { var w = _mapData.width; var h = _mapData.height; var tileW = Tile.width; var tileH = Tile.height; for (var i = 0; i<h; i++) { var name = "t_"+i+"_"+row; var mc = _target.wholemap.attachMovie("tile", name, i*w+row); //根据参数来创建区块 mc.instance = new Tile(_mapData.getData(_index)[i][row]); mc.instance.target = mc; mc._x = row*tileW; mc._y = i*tileH; mc._width = tileW; mc._height = tileH; mc.gotoAndStop(mc.instance.name.frame); } } private function removeRow(row:Number) { var h = _mapData.height; for (var i = 0; i<h; i++) { var name = "t_"+i+"_"+row; _target.wholemap[name].removeMovieClip(); } }
|
|
| 文章录入:skyuu 责任编辑:skyuu |
|
| 【字体:小 大】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口】 |