2016-07-21 16 views
0

Ich erstelle eine AIR ActionScript 3.0-Anwendung. Wenn ich es auf dem PC versuche, indem ich Command + Enter und den Film teste, funktioniert die App gut und eine Kollision zwischen zwei Filmclips funktioniert einwandfrei. Jedoch, wenn ich versuche, es zu veröffentlichen und die entsprechende apk zu erhalten, wird die App normal ausgeführt, aber keine Kollision findet statt! als ob die zwei Filmclips einfach übereinander fliegen und nichts passiert! Während auf dem PC, funktioniert es perfekt! Ich bin neu bei AS3, also kann jeder darauf hinweisen, wo ich falsch liege? Dies ist der Code, den ich für die Kollision bin mit:
hitTestObject funktioniert auf dem PC, aber nicht auf dem Android-Gerät

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

Zuerst das Offensichtliche: Sind Sie sicher, dass dieser Event-Handler überhaupt ausgelöst wird? dann das Debugging: hast du versucht, die Begrenzungsbox aller Objekte zu verfolgen, um zu sehen, ob sie tatsächlich treffen sollte? – alebianco

+0

@alebianco angeblich die Dinge funktionieren, da es im PC funktioniert? –

+0

gut ... ich würde nicht annehmen. die Bühnengröße könnte sich anders verhalten und das könnte den Hittest auslösen. Ich spekuliere nur, es ist eine Weile her, dass ich so etwas gemacht habe, aber da es nicht funktioniert, würde ich damit beginnen, diese beiden Punkte zu überprüfen ... – alebianco

Antwort

1

das Problem war eigentlich ein wenig seltsam, aber es funktioniert! Wenn zukünftige Benutzer das gleiche Problem bemerken, sollten Sie überprüfen Sie Musik !! nun, ich rufe einen Sound-Effekt, wenn ich "hit.play (0)" geschrieben habe. Ich habe keine mp3-Datei eingebettet. Wenn ich also versuche, meine App auf einem echten Gerät auszuführen, bricht der Compiler einfach diese Zeile ab und umgeht den gesamten restlichen Code. Also, als ich die MP3-Datei einbettete, alles hat gut funktioniert! Um die mp3-Datei einbetten, benutzen Sie einfach die folgende Struktur:

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

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

und dann var initiieren, wenn Sie die Musik spielen müssen:

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; 



       } 
      } 



     } 

Und es wird alles perfekt funktionieren.