这篇博客介绍一下几个常见的方法与精灵进行交互,这些方法同样可以用于场景交互,窗口交互,学完之后可以很容易地举一反三。
无论什么交互过程,我都大致将其分为四个部分,信号约定(什么指令可以发生交互),信号监测(判断是否有信号输入,哪个信号输入),信号输入,事件响应(交互后运行什么方法)几个部分。比如调用插件用的插件指令,信号约定和信号监测就是声明插件指令,信号,信号输入放在事件编辑器里,事件响应放在其它函数或者直接和信号约定放在一起。
常见的交互方法有使用插件指令,键盘指令,鼠标指令等,插件指令大家应该入门的时候已经了解了,这里介绍后面两种。
文章除了教会读者代码怎么写,意思是什么,还分享我自己的学习经历,以供参考。
这次我们要实现的目标是在场景地图显示一个简单的精灵对象,通过点击键盘上的“N”可以让其反复出现消失,如图:
7.1 建立命名空间,准备相关变量
/*=======================================
controller.js
===================================*/
/*:
*
* @plugindesc 控制精灵演示插件
* @
* @author 进入盛夏之门
*
* @param keyVal
* @desc 快捷键键值(键盘N键是:78)
* @default 78
*
*/
//常规工作——设置命名空间
//当需要管理多个命名空间时,使用作者名缩写+子空间名更加规范
var JRSXZM = JRSXZM || {
};
JRSXZM.controller = {
};
JRSXZM.controller.parameters = PluginManager.parameters('controller');
//这是个用于判断当前是否需要精灵的变量,更规范的写法是用一个函数储存
JRSXZM.controller.isShowSprite = 1;
当我们自己编辑插件变多时,使用更规范的“作者名缩写+子空间名”更有利于管理。
在设定命名空间的位置准备一些判断状态的函数或者变量,一般情况下,这些内容放在函数里,这里由于判断比较简单就直接用一个变量。
7.2 定义一个简单的精灵
用上一章的方法,我们可以很轻松地定义一个简单地精灵类,注意,我下面的代码使用的类名与上次相同,大家写的时候不能在不同插件里重复定义两个同名类。
//用复制式重写定义一个简单的精灵
//我们对系统提供的精灵类进行复制,创建一个"mySprites"
function mySprites() {
this.initialize.apply(this, arguments);
}
mySprites.prototype = Object.create(Sprite.proto