[]为什么会出现报错 ani not found:ufo1_down

报错显示
ani not found: ufo1_down       laya.core.js:17282 
ani not found: bullet1_down 
而且就算设定了大飞机的血量,可是打一下就死了。
 
 
var Game = (function(){
(function Game(){
// 子弹发射偏移位置表
this.bulletPos = [[0],[-15,15],[-30,0,30],[-45,-15,15,45]];
// 关卡等级
this.level = 0;
// 升级等级所需要的成绩数量
this.levelUpScore = 0;
// 积分成绩
this.score = 0;
// 子弹级别
this.bulletLevel = 0;
// 敌机血量
this.hps = [1,4,10];
// 敌机速度
this.speeds = [3,2,1];
// 敌机半径
this.radius = [15,30,70];
// 初始化引擎,设置舞台大小
Laya.init(400,852);
// 创建循环滚动的悲剧
this.bg = new BackGround();
// 把背景添加到舞台
Laya.stage.addChild(this.bg);
// 加载图集资源
Laya.loader.load("res/atlas/war.json",Laya.Handler.create(this,onLoaded),null,Laya.Loader.ATLAS);
})();
function onLoaded(){
// 创建一个主角
this.hero = new Role();
// 初始化角色
this.hero.init("hero",0,1,0,30);
// 设置射击类型
this.hero.shootType = 1;
// 设置主角的位置
this.hero.pos(200,500);
// 放置到舞台上
Laya.stage.addChild(this.hero);
// 监听舞台的鼠标移动事件
Laya.stage.on(Laya.Event.MOUSE_MOVE,this,onMouseMove);

// 手动创建敌人
// createEnemy(10);

// 定时器自动循环创建敌人
Laya.timer.frameLoop(1,this,onLoop);
}
function onLoop() {
// 遍历所有飞机,更改飞机状态
for(var i = Laya.stage.numChildren - 1; i > 0; i--) {
// 接收舞台子对象
var role = Laya.stage.getChildAt(i);
// 判断是否有飞机,并且是否有速度值
if(role && role.speed){
// 根据飞机速度更改飞机的位置
role.y += role.speed;
// 判断飞机是否移动到舞台外部,然后移除回收
if(role.y>1000 || !role.visible || (role.isBullet && role.y < -20)){
// 从舞台移除
role.removeSelf();
// 回收前重置属性信息
role.isBullet = false;
role.visible = true;
// 回收到对象池
Laya.Pool.recover("role",role);
}
}
// 处理发射子弹逻辑
if(role.shootType > 0) {
// 获取当前浏览器时间
var time = Laya.Browser.now();
// 如果当前时间大于下次射击时间
if(time > role.shootTime) {
// 更新下次射击时间
role.shootTime = time + role.shootInterval;
// 根据不同子弹类型,设置不同的数量及位置
this.pos = this.bulletPos[role.shootType - 1];
for(var index = 0; index < pos.length; index++){
// 从对象池里面创建一个子弹
var bullet = Laya.Pool.getItemByClass("role",Role);
// 初始化子弹信息
bullet.init("bullet1",role.camp,1,-4-role.shootType - Math.floor(this.level / 15),1,1);
// 设置角色类型为子弹类型
// bullet.isBullet = true;
// 设置子弹发射初始化位置
bullet.pos(role.x + pos[index], role.y - role.hitRadius - 10 );
// 添加到舞台上
Laya.stage.addChild(bullet);
}
}
}
}
// 检测碰撞
for(var i = Laya.stage.numChildren-1;i > 0;i--){
// 获取角色对象1
var role1 = Laya.stage.getChildAt(i);
// 如果角色死亡,则忽略
if(role.hp < 1)continue;
for(var j = i - 1;j > 0;j--){
// 如果角色死亡则忽略
if(!role1.visible)continue;
// 获取角色对象2
var role2 = Laya.stage.getChildAt(j);
// 如果角色未死亡,并且阵营不同,才进行碰撞
if(role2.hp > 0 && role1.camp != role2.camp){
// 计算碰撞区域
var hitRadius = role1.hitRadius = role2.hitRadius;
// 根据距离判断是否碰撞
if(Math.abs(role1.x - role2.x) < hitRadius && Math.abs(role1.y - role2.y) < hitRadius){
// 碰撞后掉血
lostHp(role1,1);
lostHp(role2,1);

}
}
}
}
// 如果主角死亡,停止游戏循环
if(this.hero.hp < 1){
Laya.timer.clear(this,onLoop);
}
// 每隔30帧创建新的敌机
if(Laya.timer.currFrame%60 === 0){
createEnemy(2);
}
}
function lostHp(role,lostHp){
// 减血
role.hp -= lostHp;
if(role.heroType === 2){
// 每吃一个子弹升级道具,子弹升级+1
this.bulletLevel++;
//子弹每升级2级,子弹数量+1,最大数量限制在4个
this.hero.shootType = Math.min(Math.floor(this.bulletLevel / 2) + 1,4);
// 子弹级别越高,发射频率越快
this.hero.shootInterval = 500 - 20 * (this.bulletLevel > 20 ? 20 : this.bulletLevel);
// 隐藏道具
role.visible = false;
} else if(hero.heroType === 3){
// 每吃一个医疗包,血量增加1
this.hero.hp++;
// 设置最大血量不超过10
if(this.hero.hp > 10)this.hero.hp = 10;
// 隐藏道具
role.visible = false;
}
if(role.hp > 0){
// 如果未死亡 ,则播放爆炸动画
role.playAction("hit");
}
else{
if(role.isBullet){
// 如果是子弹,则直接隐藏
role.visible = false;
}
else{
role.playAction("down");
// 击中Boss掉落补给品
if(role.type === "enemy3"){
// 随机是子弹道具还是医疗包
var type = Math.random() < 0.7 ? 2 : 3;
var item = Laya.Pool.getItemByClass("role",Role);
// 初始化信息
item.init("ufo" + (type - 1),role.camp,1,1,15,type);
// 设置位置
item.pos(role.x,role.y);
// 添加到舞台上
Laya.stage.addChild(item);
}
}
}
}

function onMouseMove(){
// 始终保持主角和鼠标位置一致
this.hero.pos(Laya.stage.mouseX,Laya.stage.mouseY);
}

function createEnemy(num){
for(var i = 0; i < num; i++) {
// 随机出现敌人
var r = Math.random();
// 根据随机数,随机敌人
var type = r<0.7?0:r<0.95?1:2;
// 创建敌人
// var enemy = new Role();

// 优化创建敌人
var enemy = Laya.Pool.getItemByClass("role",Role);

// 初始化位置
enemy.init("enemy"+(type+1) , 1, this.hps[type], this.speeds[type], this.radius[type]);
// 随机位置
enemy.pos(Math.random()*400+40,Math.random()*200);
// 添加到舞台上
Laya.stage.addChild(enemy);
}
}
})();
已邀请:

cuixueying

赞同来自:

建议你根据报错,点击报错后面的js行号,打断点先自己查下,如果确实找不到问题,可以传下你可运行的例子,我们安排看下!

cuixueying

赞同来自:

你可以加下群:104144216,,,群文件里搜索:游戏实战-飞机大战-js  即可,之前同事写的例子已经上传,可以参考下!

要回复问题请先

商务合作
商务合作