hitTestObject 在 PC 上工作但不在 android 设备上工作

hitTestObject working on PC but not on android device

我正在构建 AIR ActionScript 3.0 应用程序。每当我在电脑上尝试它时,通过执行 Command + Enter 并测试影片,该应用程序将正常运行,并且两个影片剪辑之间的碰撞也正常运行。但是,当我尝试发布它并获取相应的 apk 时,该应用程序将正常 运行,但不会发生碰撞!就好像这两个电影剪辑只是在彼此上方飞过,什么也没有发生!在 PC 上,它运行完美!我是 AS3 的新手,所以任何人都可以指出我哪里出错了?这是我用于碰撞的代码:

function ifHitAct(e:Event):void
{
    for each (var obstacle in runNow.manyObs)
    {
        //trace("the obstacle Index Created is" , parent.getChildIndex(runNow.obstacle));
        //parent.setChildIndex(runNow.obstacle ,1)
        if (MC1.hitTestObject(obstacle))
        {
            hit.play(0);
            runNow.manyObs.splice(runNow.manyObs.indexOf(obstacle), 1);

            //this.removeChild(obstacle);
            score++;
            scoreField.text = String(score);
            obstacle.alpha = 0;
        }
    }
}

这个问题实际上有点奇怪,但它有效!如果任何未来的用户注意到同样的问题,你应该检查你的音乐!!好吧,我在写“hit.play(0)”时调用了音效。我没有嵌入任何 mp3 文件,所以每当我尝试在真实设备上 运行 我的应用程序时,编译器都会在该行中断,并简单地绕过所有其余代码。所以,当我嵌入 mp3 文件时,一切正常!要嵌入 mp3 文件,只需使用以下结构:

 [Embed(source='/hit.mp3')] 

      private var MySound : Class;         
      private var sound : Sound;

然后在需要播放音乐时启动您的 var:

function ifHitAct(e:Event):void
        {
            //

            for each (var obstacle in runNow.manyObs)
            {

                if (MC1.hitTestObject(obstacle))
                {


                    sound = (new MySound()) as Sound;
                    sound.play(0);

                    runNow.manyObs.splice(runNow.manyObs.indexOf(obstacle), 1);

                    score++;
                    scoreField.text = String(score);
                    obstacle.alpha = 0;



                }
            }



        }

一切都会完美无缺。