2016-04-07 8 views
0

Ich habe zwei PaketeMehrere Pakete Ein AS-Datei verwenden, Variableninitialisierung Ausgabe ‚Coercion fehlgeschlagen‘

import ph.package1.*; 
import ph.package2.*; 

Hauptgrund, warum ich verschiedene Pakete verwendet wird, ist die Aussicht auf meine FB4.6 Mobile Application zu trennen, weil ich will um spezifische Ansichten zu erstellen, um unterschiedliche Auflösungen für Mobilgeräte und Tablets zu ermöglichen.

Also im Grunde haben die beiden die gleichen Dateien, Dateinamen, aber sie variieren nur auf das Layout und die Stile. Ich habe nur eine AS-Dateien von einem Paket verwendet, um Redundanz zu verhindern, und bis jetzt funktioniert es in Ordnung. App funktioniert auf den meisten Seiten.

Nun das Problem ist das, auf einer meiner Action Scripts, ich habe diesen Code:

var counter:Counter = this["counter"]; 

Annahmen

  • Aktuelle Ansicht von Package1 ist
  • AS Datei ist aufgerufen von Package2
  • Beide Pakete enthalten Counter.mxml

TypeError: Error #1034: Type Coercion failed: cannot convert ph.package1.Counter to ph.package2.Counter....

Wie kann ich dieses Problem zu beheben, so dass die Initialisierung von Variablen auf die andere Paket verweisen.

Antwort

1

Sie müssen den gesamten Namespace verwenden:

var counter:ph.package1.Counter = this["counter"]; 

Aber wie auch immer, während Pakete sollen diejenigen Konflikte vermeiden, ist es immer noch eine gute Idee ist, verschiedene Klassennamen zu geben. Stellen Sie sich vor, Sie hätten 20 Klassen mit exakt demselben Namen, was ein Albtraum wäre.

+0

Schön, wusste nicht, dass ich das tun kann. Nun, wie für den gleichen Namen Problem auf verschiedenen Paketen, dachte über das Erstellen einer Funktion, die die Pakete festlegen wird ... keine Ahnung, wie das zu tun. –

+0

BTW, als ich den ganzen Namespace beim Instanziieren der Variablen benutzt habe, habe ich immer noch den gleichen Fehler 'Fehler # 1034: Type Coercion failed'. –

+1

Dann verwenden Sie den anderen Paket-Namespace, es ist sowieso der eine oder der andere. – BotMaster