flash8的游戏制作(地图篇)

  研究flash 8制作mode7模式头大中.......抽空把以前的rpg引擎用flash 8改了下.

  下面先介绍下关于地图的制作(本文章适合与对tiles模式了解并对flash8有一定了解的人)

  过去制作游戏的时候,经常会为了切割地图而浪费时间.经常会为了地图过大.拖动过于耗机而烦恼.现在这一切都不成问题了.只要你掌握flash8 bitmapdata的基础运用既可.

  这次改造后的地图采用导入整张地形图的方式,由as控制切割调用后生成整个map,再由flash切割调用给适当的场景.

  效果如下(地图暂时采用随机模式,用方向键可控制地图的滚动.)

下面贴出代码:
import flash.display.BitmapData;
import flash.geom.*;
class _map {
 var timeline:MovieClip;
 var maps:Array;
 var bg:MovieClip;
 var tileBmd:BitmapData;
 var mapBmd:BitmapData;
 var bgBmd:BitmapData;
 var tileStep:Number;
 var tileCount:Number;
 var tileRect:Rectangle;
 var bgRect:Rectangle;
 var width:Number;
 var height:Number;
 var x:Number;
 var y:Number;
 function _map(timeline:MovieClip, linkId:String, maps:Array, tileStep:Number, width:Number, height:Number) {
  this.timeline = timeline;
  this.width = width;
  this.height = height;
  this.x = 0;
  this.y = 0;
  timeline._x = (Stage.width-width)/2;
  timeline._y = (Stage.height-height)/2;
  bg = timeline.createEmptyMovieClip("bg", 0);
  this.maps = maps;
  //地图tile范围
  tileRect = new Rectangle(0, 0, tileStep, tileStep);
  bgRect = new Rectangle(0, 0, width, height);
  //创建地图元素
  tileBmd = BitmapData.loadBitmap(linkId);
  this.tileStep = tileStep;
  tileCount = tileBmd.width/tileStep;
  //建立地图
  build();
 }
 function build() {
  mapBmd = new BitmapData(maps[0].length*tileStep, maps.length*tileStep, false, 0);
  for (var y = 0; y<maps.length; y++) {
   for (var x = 0; x<maps[0].length; x++) {
    attach(0, x*tileStep, y*tileStep);
    if (maps[y][x]<>0) {
     attach(maps[y][x], x*tileStep, y*tileStep);
    }
   }
  }
  bgBmd = new BitmapData(width, height, false, 0);
  bg.attachBitmap(bgBmd, 0);
  bgBmd.copyPixels(mapBmd, bgBmd.rectangle, new Point(0, 0));
 }
 function attach(id:Number, x:Number, y:Number) {
  var rect:Rectangle = tileRect.clone();
  rect.y = Math.floor(id/tileCount)*tileStep;
  rect.x = id%tileCount*tileStep;
  mapBmd.copyPixels(tileBmd, rect, new Point(x, y));
 }
 function scroll() {
  x = x<0 ? 0 : (x>(mapBmd.width-width) ? (mapBmd.width-width) : x);
  y = y<0 ? 0 : (y>(mapBmd.height-height) ? (mapBmd.height-height) : y);
  bgRect.x = x;
  bgRect.y = y;
  bgBmd.copyPixels(mapBmd, bgRect, new Point(0, 0));
 }
}  总体感觉.效率提高很大.无论画面如何放大,一样能保持流畅的滚动.这个方法不单适用与tiles模式,如果你是整图把地形图转为map的过程省略掉即可.

时间: 2025-01-21 11:00:37

flash8的游戏制作(地图篇)的相关文章

三维程序/游戏制作基本常识

flash3d初学者都是从flash或平面绘制转型的,对三维方面的常识的确理解甚少,即使是天天玩三维游戏的人.虽然这些信息对一些三维经验丰富的朋友是简单的不能再简单的东西,但写这一篇对某一些新上手的朋友是有必要的. 建模 除非简单几何体,任何复杂一点的模型和贴图位置,都只能靠其他三维软件导入,这不光是flash3d的常识,也是游戏制作的基本常识. 甚至很多朋友会以为既然用flash是可以'画'图形的,那么用flash3d就能直接'画'三维模型. 三维模型之所以叫做'建'模,就一定和'画'模有本质

c++游戏-C++小游戏制作的问题 新手求助~

问题描述 C++小游戏制作的问题 新手求助~ 老师给留的C++小游戏项目作业...想做一个类似于天天酷跑,爱丽丝快跑之类的跑酷游戏,不需求界面,就是只在黑色的小窗口里实现就行.但是不知道如何将地图随着时间给刷新出来,请大神们给个思路~ 解决方案 可以用openGL. 解决方案二: 用cocos2dx做 解决方案三: DOS下的字符界面吗

Flash游戏制作:打砖块

打砖块游戏大家都很熟悉:游戏者用一个挡板对小球进行反弹,上方排列了一些方块砖,游戏的目的就是利用鼠标对挡板进行左右移动控制,以便将小球挡回去,避免小球落到挡板的下方,挡回去的小球将与上面的方砖发生碰撞,被碰撞的方砖会自动显示,玩家每打掉一块方砖,会得到一定的分数. 在本实例中每局中玩家的生命值为5,如果将当前界面中的方砖全部打完,则进入下一关.游戏开始允许玩家选择游戏难度:初级.中级和高级,不同的难度中方砖的数量和小球运动的速度不同,玩家可以根据自己的水平来选择合适的游戏难度. 游戏制作思路:

excel2013怎么制作地图

  excel 2013制作地图的方法: 制作地图步骤1:为了能生成Power View图表,我们要创建数据源,选中数据源,单击插入--Power View. 制作地图步骤2:我们之前的数据源生成了表,然后,单击设计选项卡里面的地图选项. 制作地图步骤3:OK,地图插入进去了,接下来我们要稍作调整,进行布局设置. 制作地图步骤4:在布局选项卡中通过标题.图例.数据标签三大选项进行设置,可以调整标题位置,还能调整标签的位置,最后得到我们想要的布局效果.

java记忆翻牌游戏代码-JAVA做出记忆翻牌游戏,菜鸟想学习JAVA的游戏制作

问题描述 JAVA做出记忆翻牌游戏,菜鸟想学习JAVA的游戏制作 20C 1.界面打开为网格,每个网格放一张图片,图片两两相同2.点开两张图片若是一样则显示,若是不一样,显示50ms,变为背面.3.每轮游戏结束时显示总共花费时间.4.重复步骤2,直到所有图片显示出来 解决方案 http://download.csdn.net/detail/gaoda871010/2652900http://www.educity.cn/xiazai/8649772.html 解决方案二: 看下我写的这个怎么样.

ArcGIS for Desktop入门教程_第六章_用ArcMap制作地图 - ArcGIS知乎-新一代ArcGIS问答社区

原文:ArcGIS for Desktop入门教程_第六章_用ArcMap制作地图 - ArcGIS知乎-新一代ArcGIS问答社区 1 用ArcMap制作地图 作为ArcGIS for Desktop的组成部分之一,ArcMap用于数据的浏览.编辑.显示.查询.地图排版等.ArcMap和ArcCatalog一起构成了完整的数据处理与管理分析的功能.在前一章中已经介绍了ArcCatalog的使用,本章中将介绍ArcMap的使用.本章的例子依然使用第4章里的小区平面图示例,但是将从原理的角度做更加

c语言游戏制作的有关问题

问题描述 c语言游戏制作的有关问题 在初步了解要了c语言的基本语法之后,想自己做做小游戏,比如贪食蛇之类的,应该再学些什么内容呢? 解决方案 可以学一下sdl,有sdl库支持的话,一般的游戏逻辑都可以贴图转化. 解决方案二: 可以学一下sdl,有sdl库支持的话,一般的游戏逻辑都可以贴图转化. 解决方案三: 所有的游戏都离不开逻辑和渲染,C语言在逻辑方面可以胜任,但在画面呈现方面就差了些,鉴于你要做的游戏类型 可以考虑用控制台实现 解决方案四: 可以学习些数据结构和sql方面的 解决方案五: 数

Cocos2D:塔防游戏制作之旅(十八)

在Enemy.m的getDamaged:方法只给你添加如下1行(在if条件内): [theGame awardGold:200]; 现在运行游戏你将注意到你不能放置超出你资源金币的炮塔了.当然杀死敌人可以奖励金币,so你可以继续购买更多的炮塔!这是一个令人惊叹的系统,不是吗? 现在,最终,对于一些额外的地方,添加一些酷酷的背景音乐(由Kevin MacLeod制作)和cxfr制作的音效,他们可以使你的游戏更有趣一些! 打开HelloWorldLayer.m并且添加以下修改: //At the t

【百度地图API】如何利用PhoneGap制作地图APP

原文:[百度地图API]如何利用PhoneGap制作地图APP 摘要:百度地图API是一套由javascript编写的地图程序接口,按说它应该运行在浏览器上.现在,只要利用PhoneGap,我们就能开发出移动平台上能使用的APP了! --------------------------------------------- 一.安装平台 PhoneGap支持5种平台,IOS,安卓,黑莓,WebOS,塞班. 我们下面以IOS为例,开发一个定位的APP.   1.下载xCode 注意看清楚,狮子系统