如何(如果可能的话)我可以检查与MovieClip内的MovieClip的碰撞

时间:2014-04-19 18:52:59

标签: actionscript-3 flash collision-detection collision movieclip

这是我第一次访问这个网站,我相信这将是许多问题中的第一次。我唯一真正的经验是我理解的课程,书籍和在线教程。长话短说我终于对ActionScript有了基本的了解,但是当我尝试分支时,如果问题不是来自教程,我不知道该转向何处。

所以归结为坚韧不拔。我正在尝试编写一个代码,用于检查舞台上某个实例上MovieClip内的MovieClip是否发生冲突。这是代码。

idle_btn.addEventListener(MouseEvent.CLICK, idleAnim);
walk_btn.addEventListener(MouseEvent.CLICK, walkAnim);
attack_btn.addEventListener(MouseEvent.CLICK, attackAnim);
stage.addEventListener(Event.ENTER_FRAME, checkHit);


function idleAnim(event:MouseEvent):void{
    hero_mc.gotoAndPlay("idle");
    hitObject_mc.gotoAndStop("ready");
}

function walkAnim(event:MouseEvent):void{
    hero_mc.gotoAndPlay("walking");
    hitObject_mc.gotoAndStop("ready");
}

function attackAnim(event:MouseEvent):void{
    hero_mc.gotoAndPlay("attack");
}

function checkHit(event:Event):void{
    if(hero_mc.slash_mc.hitTestObject(hitObject_mc)){
        hitObject_mc.gotoAndPlay("hit");
    }
}

- 三个按钮使hero_mc中的时间轴跳转到我动画的三个动作。

-hitObject_mc.gotoAndStop( “就绪”);是在切割后将hitObject设置回它的准备位置。

-Hero_mc& hitObject_mc都是舞台上的命名实例。

在checkHit()函数中,我最初将.testHitObject的第一个条件设置为hero_mc,并且它有效。英雄的剑击中了盒子,它破了。我在英雄MovieClip中有一个名为slash_mc的MovieClip。这是剑的闪光,我想成为决定命中的东西。

如果我将英雄设置为检测碰撞而不是他的任何部分接触敌人它会杀死它,而我只想要武器来做那个想法。

由于代码如上所述,当我测试电影时,我收到此错误:

TypeError:错误#1010:术语未定义且没有属性。     在collisionPlusTest_fla :: MainTimeline / checkHit()

它重复出现在输出窗口中,我认为这与ENTER_FRAME监听器有关。

总结起来很简单,如何在hero_mc MovieClip中获取slash_mc MovieClip来检测碰撞?

任何答案,提示或指示都将是一个巨大的帮助。我适合你的时间和帮助。

1 个答案:

答案 0 :(得分:1)

这是我用于游戏的部分代码,您可能需要根据自己的需要稍微更改一下:function testCollisions():void { for (var i:int = enemies.length -1;i >= 0;i--) { tempEnemy = enemies[i]; if (tempEnemy.hitTestObject(player)) { //this is the part to put the code for bouncing the ball back } } }

这里我正在测试玩家在tempEnemy上的碰撞。我在敌人阵列中拥有所有的tempEnemy对象。这可能不是最有效的,但它确实有效。