- 1、本文档共4页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
RPG游戏制作概念——NPC
说明:文档是FLASH9,脚本是AS3。我是一边研究AS3的功能一边写下这些。就因为对AS3不熟,更应该用AS3来写,这对自己也是一种自我价值提升的表现。
一个游戏,特别是传统的RPG,NPC是不可缺少或缺的。反之,需要NPC的地方是很多的,当然,这需要看游戏剧情的需要。
代码的逻辑,将会用到面象对象。面向对象不是把问题复杂化,而是把问题的实现简单化,觉得面向对象困难,那是在写代码的过程需要考虑到多方面,使自身的思维跟不上。这会让人觉得很困难。实现上,使用面向对象,在维护及更新是绝对容易的。
而面向过程,是比较符合人的思维罗辑方式,感觉就是人一步一步地向目标走。而对开发游戏来讲,就是随着游戏的剧情制作。实际上,两种方法的开发的结果都是差不多的(很不负责任的说法……)。
下说举个例来说明面向对象的用处:
在AS2中,没有画矩形的方法,通常,我们会用一个函数来创建
如:
Function createRect(x,y,wdith,height){
Return ….//返回一个矩形的元件
}
而我们需要创建矩形的时间,就直接用createRect(x,y,wdith,height)方法来创建就可以了。这其实也是一种面向对象的使用方法。
而使用自定义类来创建这些方法会更好些。同时AS3也是趋向使用类文件。
这里稍微对面向对象作一些解释,是因为我将会用到这些方法,会的人当然不用看。下面进入主题。
NPC其实就是(MovieClip,以下简称MC),在FLASH内部来说,NPC具有以下一些特征(或许会更多):
深度:不管是角色还是NPC,都要有一个深度,不然会出现角色踩在某些NPC身上,或者被NPC踩头上等状况;
与其他NPC不同:当鼠标移到该NPC身上,出现一些吸引人注意力的待点,如透明度减少;而当我们把鼠标移开NPC,角色的特征消失;
属性:X坐标Y坐标等;
点击事件:通常是实现对话的效果,点击NPC就发生对象;
代码实现:
定义类名:NPC
构造体:NPC()
添加NPC函数:addNPC(box:MovieClip,object:*,npc_x:uint,npc_y:uint,npc_fun)
box是存放NPC的容器,
object是库中的类名(2。0是链接名),
npc_x和npc_y是坐标,
npc_fun是该NPC被点击后触发的事件
还有两个特征显示的事件,鼠标移到NPC身上及鼠标从NPC身上移开两个
这里简单地用透明度来作为特征。
还是看看整个类文件吧:
package {
import flash.display.MovieClip;
import flash.events.MouseEvent;
public class NPC extends MovieClip {
public function NPC() {
}
/*
box是存放NPC的容器,object是库中的类名(2。0是链接名),npc_x和npc_y是坐标,npc_fun是该NPC被点击后触发的事件
*/
public function addNPC(box:MovieClip,object:*,npc_x:uint,npc_y:uint,npc_fun) {
var npc=new object();
box.addChild(npc);
npc.x=npc_x;
npc.y=npc_y;
//trace(CONSTAND.lower_depth)
var temp_y=npc.y+CONSTAND.lower_depth;
if (box.numChildrentemp_y) {
new Depther(box,temp_y);
}
box.setChildIndex(npc,temp_y);
npc.addEventListener(MouseEvent.MOUSE_DOWN,npc_fun);
npc.addEventListener(MouseEvent.MOUSE_OVER,npc_over);
npc.addEventListener(MouseEvent.MOUSE_OUT,npc_out);
return npc;
}
//鼠标移到该NPC身上,就降低透明度.也可以更改其色彩平衡,反正就是显示与其他非选择NPC不同
private function npc_over(eve:MouseEvent) {
eve.currentTarget.alpha=.8;
}
//鼠标移出NPC,透明度恢复
private function npc_out(eve:Mous
您可能关注的文档
最近下载
- 《新能源汽车维护与保养》课件——任务1新能源汽车起动、操控与充电.pptx VIP
- 2019年山东省广播电视技术能手竞赛(网络安全)答案.doc VIP
- 2025年华北煤炭医学院附属医院医护人员招聘参考题库含答案解析.docx VIP
- 起重机械培训(初训)课件.ppt VIP
- 《危化品企业安全隐患排查治理图册》.pptx VIP
- 2025广东珠海市斗门区招聘公办中小学教师71人笔试备考题库及答案解析.docx VIP
- 声音在不同介质中的传播说课课件公开课教案教学设计课件案例资料.pptx VIP
- 阿那亚品牌手册.pdf VIP
- 2021ACOG妊娠期急性脂肪肝指南要点解读(全文).docx VIP
- 《福建省工程建设领域保障农民工工资支付规范化管理指导手册(第一版)》(2).doc VIP
文档评论(0)