问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

如何制作ACT游戏

发布网友 发布时间:2022-04-20 03:39

我来回答

2个回答

懂视网 时间:2022-04-20 08:00

上一篇,我已经模仿as,加入了LBitmap和LBitmapData类,并且用它们实现了静态图片的显示。
这次用Sprite来动态显示图片。
依然遵循上一篇对显示对象的处理的思路,添加LSprite类,并追加show方法,如下:

function LSprite(){ 
 var self = this; 
 self.type = "LSprite"; 
 self.x = 0; 
 self.y = 0; 
 self.visible=true; 
 self.childList = new Array() 
} 
LSprite.prototype = { 
 show:function (cood){ 
 if(cood==null)cood={x:0,y:0}; 
 var self = this; 
 if(!self.visible)return; 
 LGlobal.show(self.childList,{x:self.x+cood.x,y:self.y+cood.y}); 
 }, 
 addChild:function (DisplayObject){ 
 var self = this; 
 self.childList.push(DisplayObject); 
 } 
}

因为Sprite上可以有图片等其他的可显示对象,所以我在其构造函数里,添加了childList,用来保存它上面的所有对象。然后在调用它本身的show方法的时候,将其LGlobal循环现实其子对象。
这样一来,我们上一篇中显示图片的代码,也可以利用Sprite来显示了,代码如下:

function main(){ 
 loader = new LLoader(); 
 loader.addEventListener(LEvent.COMPLETE,loadBitmapdata); 
 loader.load("1.png","bitmapData"); 
} 
function loadBitmapdata(event){ 
 var bitmapdata = new LBitmapData(loader.content); 
 var mapimg = new LBitmap(bitmapdata); 
 
 var backLayer = new LSprite(); 
 addChild(backLayer); 
 backLayer.addChild(mapimg); 
}

我们知道,actionscript中的Sprite可以添加EnterFrame事件,用来动态显示图片,我这里也来模仿一下,因为在LSprite类中show方法是不断循环的,所以,我只需要在show方法中不断调用一个方法,就能让其循环。
我假设有一个数组,里面存储了所有不断循环的所有方法,然后我就可以在show方法中循环这个数组,这样就达到了所有方法的循环,看下面

function LSprite(){ 
 var self = this; 
 self.type = "LSprite"; 
 self.x = 0; 
 self.y = 0; 
 self.visible=true; 
 self.childList = new Array() 
 self.frameList = new Array(); 
} 
LSprite.prototype = { 
 show:function (cood){ 
 if(cood==null)cood={x:0,y:0}; 
 var self = this; 
 if(!self.visible)return; 
 LGlobal.show(self.childList,{x:self.x+cood.x,y:self.y+cood.y}); 
 self.loopframe(); 
 }, 
 loopframe:function (){ 
 var self = this; 
 var key; 
 for(key in self.frameList){ 
  self.frameList[key](); 
 } 
 }, 
 addChild:function (DisplayObject){ 
 var self = this; 
 self.childList.push(DisplayObject); 
 } 
}

光假设当然是不行的,我们需要有添加这个循环事件的方法,所以我们还需要addEventListener方法,以及移除这个事件的removeEventListener方法

addEventListener:function (type,listener){ 
 var self = this; 
 if(type == LEvent.ENTER_FRAME){ 
  self.frameList.push(listener); 
 } 
 }, 
 removeEventListener:function (type,listener){ 
 var self = this; 
 var i,length = self.frameList.length; 
 for(i=0;i<length;i++){ 
  if(type == LEvent.ENTER_FRAME){ 
  self.frameList.splice(i,1); 
  break; 
  } 
 } 
 }

该添加的都添加了,接下来,就来简单实现一个人物的行走图
先来给BitmapData类添加几个方法,用来改变图片显示的区域位置等

LBitmapData.prototype = { 
 setProperties:function (x,y,width,height){ 
  var self = this; 
  self.x = x; 
  self.y = y; 
  self.width = width; 
  self.height = height; 
 }, 
 setCoordinate:function (x,y){ 
  var self = this; 
  self.x = x; 
  self.y = y; 
 } 
 }

好了,现在准备一张人物的行走图,这就让它动起来

var list = new Array(); 
var index = 0; 
var mapimg; 
var loader 
var imageArray; 
var animeIndex = 0; 
var dirindex = 0; 
var dirarr = new Array({x:0,y:1},{x:-1,y:0},{x:1,y:0},{x:0,y:-1}); 
function main(){ 
 loader = new LLoader(); 
 loader.addEventListener(LEvent.COMPLETE,loadBitmapdata); 
 loader.load("1.png","bitmapData"); 
} 
function loadBitmapdata(event){ 
 var bitmapdata = new LBitmapData(loader.content,0,0,70,92); 
 imageArray = LGlobal.divideCoordinate(bitmapdata.image.width,bitmapdata.image.height,8,8); 
 mapimg = new LBitmap(bitmapdata); 
 mapimg.x = 100; 
 mapimg.bitmapData.setCoordinate(0,0); 
 index = 0; 
 var backLayer = new LSprite(); 
 addChild(backLayer); 
 backLayer.addChild(mapimg); 
 backLayer.addEventListener(LEvent.ENTER_FRAME, onframe) 
} 
 
 
function onframe(){ 
 index++; 
 if(index >= imageArray[0].length){ 
 index = 0; 
 } 
 mapimg.bitmapData.setCoordinate(imageArray[dirindex][index].x,imageArray[dirindex][index].y); 
 
 mapimg.x += dirarr[dirindex].x*3; 
 mapimg.y += dirarr[dirindex].y*3; 
 if(animeIndex++ > 20){ 
 dirindex++; 
 if(dirindex > 3)dirindex = 0; 
 animeIndex = 0; 
 } 
}

热心网友 时间:2022-04-20 05:08

如果是新手, 可以用Director MX 2004 ,这是制作多媒体软件的,做游戏也行, 操作比较简单。

Director是Macromedia公司最老的应用软件之一,可以追述到多媒体内容主要通过CD-ROM而不是互联网传播的时代。该软件的关键市场是那些开发定制型教育培训软件的企业以及为MacromediaShockwave播放器开发简单游戏和动画的开发人员。

新版的Director MX2004增加了对t语言的支持,从而使那些不熟悉MacromediaLingo格式的开发人员更容易使用。这一举措与不久前该公司推出经过修改的 Flash开发工具模仿Java开发人员的工作模式类似。Macromedia产品管理主任MiriamGeller认为,增加对t语言的支持使开发人员可以使用具有行业标准的脚本语言编写脚本,同时省却了开发人员学习一门新语言的时间。

新的Director软件支持更多的媒体格式,包括微软WindowsMedia和DVD视频。该软件还与MacromediaFlash MX 2004等最新版的网页设计和开发工具存在接口。DirectorMX2004输出更为简单、Flash内容处理更迅速,同时提供用于用户界面开发的预制模块。

Geller称,“我们所关注的事情是那些确实能够让人们高效工作并能更快适应该应用工具的东西。”

该工具的其它功能还包括一步制作完成Mac和Windows电脑的投影文件;支持多数视频、音频、位图、3D和矢量图形格式;以及定制型用户界面等。

Director MX 2004可以在Windows XP、Windows 2000、MacOS10.2.6以及更高版本上运行。该产品计划在2月份上市,针对新用户的售价为1199美元,Director8.5及DirectorMX用户升级需要399美元。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
哪个牌子复印机好 复印店用什么型号的复印机好 开复印店需要什么设备 家用打印复印机哪个好 如何分辨鞋底是不是空心格子底? Ubuntu10.04下安装Oracle11g 超市监控多少钱 超市防盗器要多少钱 超市防盗系统多少钱 智能存放柜管理系统 48小时核酸检测结果在哪里查询-48小时核酸检测怎么看结果 身为一个高中生,我在学校里谈恋爱,结果被老师发现了,就处分了,还要写7 ... 青春期的“异性效应”是什么? 接地电阻要怎么测量? 学生用淫秽语言给老师写字条,老师应该怎么处理!! 老师会偏心吗 电阻怎么测出是不是好的? 怎么检测电阻? 求寒假10篇日记,不少于400个字 教师韩继凯怎么了?优秀教师,博兴县名师怎么了?神经病? 隆昌二中李静老师的事是什么事?严重生活作风问题?隆昌二中高2017级语文老师李静。 新东方自双减*后平均每2天成立一家新公司,该公司接下来还有哪些计划? 刘勤学直播双减如何提升孩子的自立能力 双减对学而思的影响 读爰子有方双减政策下如何有效推进家庭阅读感 双减影响 “科技与未来”汽车设计,寻求未来20年后的生活场景。 双减对河小象网课的影响 电子版的爱子有方双减政策观后感怎么找 家庭教育微课第十八讲双减*下如何做智慧家长观后感500字_百度问一问 土地承包合同书样本 上海自贸区注册公司地址如何选取 孩子跳绳家长评语简短是什么? 跳绳的好评都有什么 跳绳在家练习情况怎么评价呢? 小程序导流到APP,怎么实现小程序和APP的双赢 不穿袜子是不是更容易脚臭 形容花式跳绳跳得很好的句子 不穿袜子会脚臭吗 微信头像对你的形象有什么影响?专家给出解释:头像就是第一印象 请问我的脚如果不穿袜子就会出很多汗,而且闻起来是酸酸的味道,有没有方法解决? 脚臭,我穿帆布鞋不穿袜子的有脚汗,就很臭了。鞋子也臭了。怎么解决 哥德巴赫猜想的主要内容是什么? 1+1 哥德巴赫猜想 哥德巴赫猜想是什么时候提出的? “哥德巴赫猜想”是怎么回事啊?如题 谢谢了 2021移动电话通话分钟数的变化 口红mgp是什么牌子 名爵红是什么意思?为什么最近那么多人说? 如果买D版的MG高达模型,是口红还是MK2好呢? 高达模型MG版强袭口红多少钱合理呢?