2016-07-21 3 views
0

AIR ActionScript 3.0アプリケーションを構築しています。私はPCでそれを試しているときは、Command + Enterを実行してムービーをテストすると、アプリケーションは正常に動作し、2つのムービークリップ間の衝突はうまくいきます。しかし、私はそれを公開し、適切なAPKを取得しようとすると、アプリは正常に実行されますが、衝突は起こりません!あたかも2つのムービークリップがちょうど上を飛び、何も起こらないかのように! PC上では、完全に動作している!私はAS3の初心者なので、誰がどこに間違っているのかを指摘できますか?これは私が衝突のために使用していますコードです:
hitTestObjectはPCで動作しますが、アンドロイドデバイスでは動作しません

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; 
     } 
    } 
} 
+0

最初は明らかです:このイベントハンドラはまったく起動されていますか?デバッグ:すべてのオブジェクトのバウンディングボックスをトレースして、実際にヒットするかどうか確認してみましたか? – alebianco

+0

@alebiancoおそらくPCで動作しているので動作しているのでしょうか? –

+0

まあ...私は思いません。ステージのサイズが異なって動作し、ヒットテストを捨てる可能性があります。ちょうど推測、それは私がそれのような何かをしたので、しばらくしていたが、それは働いていないので、私はそれらの2つの点を確認することから始めるだろう... – alebianco

答えて

1

問題は、実際には少し変だったが、それは働きました!将来のユーザーが同じ問題に気づいた場合は、Music !!まあ、私は "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; 



       } 
      } 



     } 

そして、それはすべて完璧に動作します。

関連する問題