Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Bom dia.
Gerei um arquivo .swc com as imagens de alguns animais. Depois incorporei esse swc nas propriedades do meu projeto no flash de forma que pudesse instanciar cada animal de acordo com a string passada para uma outra classe definida como document class. Ok.
As strings dos tipos de animais são carregadas de um xml.
No entanto, quando tento instanciar um dos animais, o seguinte erro é gerado?
ReferenceError: Error #1065: A variável Vaca não foi definida.
at global/flash.utils::getDefinitionByName()
at classes::Main/createObjectFromString()
at classes::Main/adicionaAnimais()
at classes::Main/adicionaClasses()
at classes::Main/frame255()
Para exemplificar, postarei os códigos do xml e da classe que estou usando.
<?xml version="1.0" encoding="utf-8" ?>
<content>
<classe nome="anfibio">
<animal nome="sapo" classe="Sapo"/>
<animal nome="salamandra" classe="Salamandra"/>
<animal nome="rã" classe="Ra"/>
</classe>
<classe nome="ave">
<animal nome="coruja" classe="Coruja"/>
<animal nome="flamingo" classe="Flamingo"/>
<animal nome="galinha" classe="Galinha"/>
<animal nome="garça" classe="Garca"/>
<animal nome="pato" classe="Pato"/>
<animal nome="pombo" classe="Pombo"/>
<animal nome="tucano" classe="Tucano"/>
</classe>
<classe nome="mamifero">
<animal nome="baleia" classe="Baleia"/>
<animal nome="coelho" classe="Coelho"/>
<animal nome="cachorro" classe="Cachorro"/>
<animal nome="elefante" classe="Elefante"/>
<animal nome="girafa" classe="Girafa"/>
<animal nome="golfinho" classe="Golfinho"/>
<animal nome="macaco" classe="Macaco"/>
<animal nome="morcego" classe="Morcego"/>
<animal nome="vaca" classe="Vaca"/>
</classe>
<classe nome="pez">
<animal nome="sardinha" classe="Sardinha"/>
<animal nome="tubarão" classe="Tubarao"/>
</classe>
<classe nome="réptil">
<animal nome="cobra" classe="Cobra"/>
<animal nome="jacaré" classe="Jacare"/>
<animal nome="tartaruga" classe="Tartaruga"/>
</classe>
</content>
AS 3.0
package {
import flash.display.MovieClip;
import flash.events.Event;
import flash.net.URLLoader;
import flash.net.URLRequest;
import flash.utils.getDefinitionByName;
public class Teste extends MovieClip {
private var animais:Array;
private var xml:XML;
public function Teste() {
super();
animais = new Array();
loadXML("xml/content.xml");
}
private function loadXML(url:String):void {
var request:URLRequest = new URLRequest(url);
var loader:URLLoader = new URLLoader();
loader.load(request);
loader.addEventListener(Event.COMPLETE, carregado);
}
private function carregado(event:Event):void {
xml = new XML(event.target.data);
var i:uint, j:uint = 0;
animais.pop();
for (i = 0; i < xml.classe.length(); i++) {
for (j = 0; j < xml.classe[i].animal.length(); j++) {
animais.push(createObjectFromString(xml.classe[i].animal[j].@classe));
}
}
trace(animais);
}
public function createObjectFromString(obj:String):MovieClip {
var symbolName:String = obj;
var symbolClass:Class = getDefinitionByName(symbolName) as Class;
var _mc:MovieClip = new symbolClass();
_mc.name = obj;
return _mc;
}
}
}
Caso queiram testar, o código tá completo.
Agradeceria se alguém souber o porque desse erro. Abs
Carregando comentários...