RGPJS 教程之八 创造场景
开始画面
游戏画面
代码
<!DOCTYPE html>
<html>
<head>
<script src="rpg-beta-2.js"></script>
<script>
var rpg;
RPGJS.loadPath = "rpgjs/core/";
RPGJS.load({
plugins: ['title']
}, function() {
rpg = new Rpg("canvas_rpg"); var scene = new Scene_Title(rpg);
scene.onExit = function(init) {
if (!init) return;
rpg.loadMap('MAP009', {
tileset: 'forest.png',
autotiles: ['002-G_Shadow01.png', '002-G_Shadow01.png', '003-G_Ground01.png', '004-G_Ground02.png', '011-G2_Ground02.png'],
events: ['EV001'],
player: {
x: 12,
y: 20,
direction: 'up',
filename: '001-Fighter01.png'
}
}, loadMap); } }); function loadMap() {
rpg.bind("eventCall_save", function() {
rpg.save(1);
window.location.reload();
});
rpg.setScreenIn("Player");
} </script>
</head>
<body style="margin: 0; overflow: hidden; background-color: #000;">
<canvas id="canvas_rpg" width="640px" height="480px"></canvas>
</body>
</html>
plugin/title.js
function Title() {
}
Title.prototype = {
Core: {
},
Event: {
}
}
function Window_Title(rpg, parent) {
this.parent = Window;
var h = 50;
if (rpg.slotExist(1)) {
h = 115;
}
this.parent(rpg, parent, 200, h);
}
var p = Window_Title.prototype = new Window();
p.onLoad = function() {
var self = this;
this.setPosition(this.rpg.canvas.width / 2 - this.width / 2, this.rpg.canvas.height - this.height - 40);
this.setBackOpacity(0.5);
var w = 6, h = 1;
this.addCommand(5, 12, w, h, function() { self.scene.newGame(); } );
this.drawText(30, 35, "New Game", "18px Arial", "#FFF");
if (this.rpg.slotExist(1)) {
this.addCommand(5, 47, w, h, function() { self.scene.loadGame(); });
this.addCommand(5, 82, w, h, function() { self.scene.deleteSlot(); });
this.drawText(30, 70, "Load Game", "18px Arial", "#FFF");
this.drawText(30, 105, "Delete Save", "18px Arial", "#FFF");
}
this.selectable();
}
p.update = function() {
}
function Scene_Title(rpg) {
this.parent = Scene;
this.parent(rpg);
this.main();
}
var p = Scene_Title.prototype = new Scene();
p.newGame = function() {
var self = this;
new Effect(this).fadeOut(5, function() {
self.exit(true);
})
}
p.loadGame = function() {
var self = this;
new Effect(this).fadeOut(5, function() {
self.exit();
self.rpg.load(1, loadMap);
})
}
p.deleteSlot = function() {
this.rpg.deleteSlot(1);
this.window_title.commands = [];
this.window_title.refresh();
this.window_title.setSize(200, 50);
this.window_title.onLoad();
this.window_title.index = 0;
this.window_title.moveCursor();
}
p.main = function() {
this.drawBackground('title.png');
this.window_title = this.addWindow(Window_Title);
}
RGPJS 教程之八 创造场景的更多相关文章
- iOS Sprite Kit教程之滚动场景
iOS Sprite Kit教程之滚动场景 滚动场景 在很多的游戏中,场景都不是静止的,而是滚动的,如在植物大战僵尸的游戏中,它的场景如图2.26所示. 图2.26 植物大战僵尸 在图2.26中,用 ...
- 超详细实战教程丨多场景解析如何迁移Rancher Server
本文转自Rancher Labs 作者介绍 王海龙,Rancher中国社区技术经理,负责Rancher中国技术社区的维护和运营.拥有6年的云计算领域经验,经历了OpenStack到Kubernetes ...
- Cocos2d-x 3.0final 终结者系列教程06-Director和场景跳转
这些天互联网大事不少呀 1.逻辑思维分家(所谓合久必分,分久必合,实属正常.切行切珍惜吧) 2. 锤子手机开卖 (无论你买没买,反正我没买,作为多年Android开发的我深知说的亮点事实上在我看来都 ...
- ASP.NET MVC4 新手入门教程之八 ---8.向模式中添加验证
在这本部分会将验证逻辑添加到Movie模式,和你会确保验证规则执行任何时候用户试图创建或编辑使用该应用程序的一部电影. 保持事物的干练性 ASP.NET MVC 的核心设计信条之一是 DRY(”Don ...
- (Python基础教程之八)Python中的list操作
Python基础教程 在SublimeEditor中配置Python环境 Python代码中添加注释 Python中的变量的使用 Python中的数据类型 Python中的关键字 Python字符串操 ...
- qtp:vbs基础教程
◎Vbs脚本编程简明教程之中的一个-为什么要使用Vbs? 在Windows中,学习计算机操作或许非常easy,可是非常多计算机工作是反复性劳动,比如你每周或许须要对一些计算机文件进行复制.粘贴.改名 ...
- Vbs 脚本编程简明教程之一
—为什么要使用 Vbs ? 在 Windows 中,学习计算机操作也许很简单,但是很多计算机工作是重复性劳动,例如你每周也许需要对一些计算机文件进行复制.粘贴.改名.删除,也许你每天启动 计算机第一件 ...
- mybatis 教程(mybatis in action)
目录简介: 一:开发环境搭建二:以接口的方式编程 三:实现数据的增删改查 四:实现关联数据的查询 五:与spring3集成(附源码) 六:与Spring MVC 的集成 七:实现mybatis分页(源 ...
- VBS教程
Vbs是一种Windows脚本,它的全称是:Microsoft Visual Basic Script Editon.(微软公司可视化BASIC脚本版),VBS是Visual Basic的的一个抽象子 ...
随机推荐
- POJ 1988 Cube Stacking
题意:有编号为1~N的N个小木块,有两种操作 M x y 将木块x所在的堆放到木块y所在的堆的上面 C x 询问木块x下面有多少块木块 代码巧妙就巧妙在GetParent函数中在进行路径压缩的同时,也 ...
- 51nod1257 背包问题 V3
分数规划经典.开始精度1e-3/1e-4都不行,1e-5就A了 #include<cstdio> #include<cstring> #include<cctype> ...
- Codeforces 279 B Books
题意:给出n本书,总的时间t,每本书的阅读时间a[i],必须按照顺序来阅读,问最多能够阅读多少本书 有点像紫书的第七章讲的那个滑动区间貌似 维护一个区间的消耗的时间小于等于t,然后维护一个区间的最大值 ...
- JProfiler 使用说明
一个全功能的 Java 剖析工具( profiler ),专用于分析 J2SE 和 J2EE 应用程序.它把 CPU .执行绪和内存的剖析组合在一个强大的 应用中. JProfiler 可提供许多 I ...
- 梯度下降之随机梯度下降 -minibatch 与并行化方法
问题的引入: 考虑一个典型的有监督机器学习问题,给定m个训练样本S={x(i),y(i)},通过经验风险最小化来得到一组权值w,则现在对于整个训练集待优化目标函数为: 其中为单个训练样本(x(i),y ...
- 【英语】Bingo口语笔记(30) - 表示“拒绝”
- Linux/Unix shell 监控Oracle告警日志(monitor alter log file)
使用shell脚本实现对Oracle数据库的监控与管理将大大简化DBA的工作负担,如常见的对实例的监控,监听的监控,告警日志的监控,以及数据库的备份,AWR report的自动邮件等.本文给出Linu ...
- shell 中数学计算总结
shell中的赋值和操作默认都是字符串处理,在此记下shell中进行数学运算的几个特殊方法,以后用到的时候可以来看,呵呵. 1.错误方法举例 a) var=1+1 echo $var ...
- oracle收集
1. 高级sql学习——with子句 http://blog.chinaunix.net/uid-10697776-id-2935678.html 2.java List 排序 Collections ...
- POJ 2241 Mondriaan's Dream
题意:给一块n×m的空地,用1×2的砖铺,有多少种方案. 解法:状压dp.考虑dp[i][j]表示前i - 1行都铺满时第i行的状态为j时的方案数.对于第i行,每个格子上是否有砖用0和1表示,0表示不 ...