1. 物体Object与物体池
JavaStage物体是JavaStage游戏的最小单元,JavaStage物体是JavaScript对象,具体的可以参阅JavaScript对象。这里给出一定的提示:
所有的JavaScript对象都是独立的
JavaScript对象上可以用“.”或“[ ]”添加属性
当把JavaScript对象赋值给一个临时变量或属性时,并不会建立一个新的对象
函数也是JavaScript对象
有两种方法建立新对象,使用{}或者new
调用某个对象的函数属性时,函数内的this将变成该对象
JavaStage物体只有加入到物体池中才能起作用,全局函数
stgAddObject(a);
可以将a所指的对象加入物体池
另外由一些内置函数生成的对象会自动加入物体池
2. Object脚本基础
JavaStage物体可以拥有几种重要属性
Object.init 初始化脚本(函数)
Object.script 每帧执行脚本(函数)
Object.finalize 删除时执行脚本(函数)
这三个属性都是函数,一般在设置时,使用
a.script=function(){
...
};
Object.frame 物体的存活时间(整数,帧数,从1开始)
3. 发射子弹函数
全局函数
function stgCreateShotA1(x,y,speed,angle,bulletname,delay,color)
可以发射子弹,其中为子弹的位置,以左上角为<0,0>,speed为速度,angle为角度(角度制),bulletname为子弹名(字符串),delay为弹雾时间(帧),color为子弹颜色(整数,从0开始)
全局变量 stg_frame_h 为场地高度,stg_frame_w为场地宽度,可以直接使用
angle以90度为正下,0度为正右,270度正上
bulletname为子弹名,具体名称可以参考 WebHYZ\GAME\default_bullets.js 中的bullet00Assignment,比如大玉为"lDY",米弹为"sMD"
4. 在关卡中发射第一个子弹
WebHYZ的关卡对象是 WebHYZ\GAME\hyz\hyz_level.js 中的hyz.level
找到hyz.level.script
在 if(this.frame==2) 的条件块中加入
stgCreateShotA1(stg_frame_w/2,stg_frame_h/2,1,90,"sXY",0,0);
stg_last.sid=1;
即可在第二帧场地中央放出一个子弹
其中stg_last指向最后添加入对象池的对象,可以方便对当前发射的子弹对象进行修改
而设置sid=1是为了将子弹放入左边场地。Object.sid是由WebHYZ定义的属性,由于WebHYZ是双场地,sid属性决定了物体在哪个场地上,1为左边场地,2为右边场地。sid默认会继承创建它的物体的sid,但是由于hyz.level物体并不属于左右场地,因此需要手动设置。
而在boss脚本、player脚本、enemy脚本中则一般不需要设置sid。