Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Cazanova

[Resolvido] passar as2 para as3

Recommended Posts

Pessoal,

 

To tentando fazer funcionar uma classe parser que usava no AS2 para o AS3 mas to levando uma surra, e não descubro onde é o erro, se alguém puder me ajudar, ai vai os códigos:

 

no primeiro frame do meu flash tem:

import classes.Parser;

stage.scaleMode = 'noScale';
var objXml:Object={};

Parser.loadXML("xml/musicas.xml", this, "cb", true, true);

function cb(ob:Object)
{
	objXml = ob;
	gotoAndStop("APP");
}

this.stop();

parser.as

class classes.Parser
{
	var __link, __parse, __targ, __cb;

	static function loadXML(link, target, callback, debug, timeCache, param)
	{
		var _loc2 = new XML();
		_loc2.ignoreWhite = true;
		var _loc7 = new Date();
		var _loc5 = _loc7.getTime();
		var _loc8 = link.indexOf("?");
		_loc2.__link = link;
		_loc2.__targ = target;
		_loc2.__cb = callback;
		_loc2.__parse = classes.Parser.xml2Object;
		var _loc3;
		if (timeCache || timeCache == undefined)
		{
			if (_loc8 == -1)
			{
				_loc3 = link + "?__time_cache=" + _loc5;
			}
			else
			{
				_loc3 = link + "&__time_cache=" + _loc5;
			} // end else if
		}
		else
		{
			_loc3 = link;
		} // end else if
		_loc2.load(_loc3);
		_loc2.toString = function ()
		{
			return ("[XML Class Instance]");
		};
		_loc2.onLoad = function (suc)
		{
			if (suc)
			{
				if (debug == true || debug == undefined)
				{
					trace ("Parser> XML Loaded!!! >>> " + __link);
				} // end if
				var _loc2 = this.__parse(this);
				__targ[__cb](_loc2, param);
			}
			else if (debug == true || debug == undefined)
			{
				trace ("Parser> Error Loading XML!!! >>> " + __link);
			} // end else if
		};
	} // End of the function
	static function xmlObject(xml_data, target, callback)
	{
		var _loc1 = new XML(xml_data);
		return (classes.Parser.xml2Object(_loc1));
	} // End of the function
	static function xml2Object(param)
	{
		var _loc6 = function (n)
		{
			var _loc2;
			var _loc4;
			var _loc5;
			var _loc3 = new String(n.firstChild.nodeValue);
			for (var _loc2 = _loc3 == "null" ? (n.firstChild) : (n.childNodes[1]); _loc2 != null; _loc2 = _loc2.nextSibling)
			{
				_loc5 = _loc2.childNodes.length > 0 ? (arguments.callee(_loc2)) : (new String(_loc2.nodeValue));
				for (var _loc4 in _loc2.attributes)
				{
					_loc5[_loc4] = _loc2.attributes[_loc4];
				} // end of for...in
				if (_loc3[_loc2.nodeName] != undefined)
				{
					if (!(_loc3[_loc2.nodeName] instanceof Array))
					{
						_loc3[_loc2.nodeName] = [_loc3[_loc2.nodeName]];
					} // end if
					_loc3[_loc2.nodeName].push(_loc5);
					continue;
				} // end if
				_loc3[_loc2.nodeName] = [_loc5];
			} // end of for
			return (_loc3);
		};
		var _loc5 = _loc6(param);
		return (_loc5);
	} // End of the function
} // End of Class

 

Da erro nas linhas: 15, 43, 46, 50, 57 do parser.as. Acho que é algum erro de declaração, estou iniciando no AS3 e não peguei o jeito...

 

Valeu

Compartilhar este post


Link para o post
Compartilhar em outros sites

Amigo.. como ainda não tenho muito tempo pra mecher em AS3, não consegui achar solução, mas para o resto do pessoal, olhem os erros que estão dando:

 

1120: Access of undefined property classes. / _loc2.__parse = classes.Parser.xml2Object;

1120: Access of undefined property __link. / trace ("Parser> XML Loaded!!! >>> " + __link);

1120: Access of undefined property __targ. / __targ[__cb](_loc2, param);

1120: Access of undefined property __cb. / __targ[__cb](_loc2, param);

1120: Access of undefined property __link. / trace ("Parser> Error Loading XML!!! >>> " + __link);

1120: Access of undefined property classes. / return (classes.Parser.xml2Object(_loc1));

Compartilhar este post


Link para o post
Compartilhar em outros sites

cara esse código é um pouco extenso, mas as dicas que posso te dar é, o AS3 é todo tipado, você tem que declarar todas as variáveis, e colocar o tipo dela tb, para carregar um XML com AS3, dá uma lida AQUI, para a criação da classe veja AQUI

 

vai alterando essas partes, qualquer coisa é só voltar aqui

 

 

[]´s

Compartilhar este post


Link para o post
Compartilhar em outros sites

Valeu a dica, vou dar mais uma lida em AS3 e tentar re-escrever do zero a classe, acho que fica mais facil que ficar catando erros.

 

Valeu

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.