Ir para conteúdo

POWERED BY:

Arquivado

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

DanielGianni

[Resolvido] [AS3] addChild insiste que falta parâmetros

Recommended Posts

Estou com dificuldades de adicionar MovieClips diretamente da Library no Stage.

 

Esta é minha Library:

 

Imagem Postada

 

O MovieClip verificaResposta possui o export de actionscript com o mesmo nome verificaResposta, internamente ele possui apenas 2 frames quase idênticos, a única diferença é que no segundo frame existe um stop();

 

Imagem Postada

 

Agora a chamada na timeline no Stage principal está sendo feita assim:

 

Imagem Postada

 

Mas ao compilar não dá certo, aparece uma mensagem de erro que não tenho a menor idéia de como resolver, pois pela documentação da Adobe a chamada está correta, não está faltando parâmetros!

 

Imagem Postada

 

Alguém usa ou já usou esse tipo de carregamento de MovieClips e pode me indicar o que há de errado?

 

Os parâmetros para compilação está configurada assim:

 

Imagem Postada

Compartilhar este post


Link para o post
Compartilhar em outros sites

O Flash insiste porque realmente falta. haha. O correto é:

MovieClip(root).addChild(new verificaResposta());

Lembre-se que, por convenção, nome de classe sempre começa com letra maiúscula.

Compartilhar este post


Link para o post
Compartilhar em outros sites

você precisa criar o objeto verificaResposta com o operador new. Algo assim:

 

addChild(new verificaResposta());

porém dessa forma você não vai ter mais acesso a esse objeto, mas ela vai estar no palco. Então se você for precisar inserir mais interação ao objeto, aponte uma variável para ele:

 

var meuVerificaResposta:MovieClip = new verificaResposta();
addChild(meuVerificaResposta);

agora você pode se referir ao seu objeto com a variavel meuVerificaResposta.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Resolvido

 

Pessoal consegui resolver. O problema dos parâmetro é que não havia instância previamente criada.

 

Na timeline a chamada deve ser:

 

stop();
var resposta:MovieClip = new verificaResposta();
MovieClip(root).addChild( resposta );

Obrigado a todos que ajudaram! acabei resolvendo antes de ler as respostas. Muito obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

por isso é sempre bom pesquisar e de certa forma esgotar as possibilidades de resolução antes de criar um post.

 

bom que fica como referência =)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Para não abrir outro tópico estou adicionando essa questão relacionada ao caso acima.

 

criei um arquivo para comportar a classe VerificaResposta.as

 

associei ele na propriedade do MovieClip verificaResposta.

 

ele ficou assim internamente:

 

package com.danielgianni.VerificaResposta{

	import flash.display.MovieClip;
	
	public class VerificaResposta extends MovieClip {

		private var statusEstrela:Boolean;

		public function VerificaResposta( posicaoX:Number = 0, posicaoY:Number = 0 ) {
			this.statusEstrela=false;
			this.x=posicaoX;
			this.y=posicaoY;
			trace("x" + x + "\ny" + y + "/nstatusEstrela "+ statusEstrela);
		}


	}// fim classe

}// fim do pacote

mas agora o construtor não funciona se eu passo parâmetros assim:

 

stop();

var Resposta:VerificaResposta = new VerificaResposta( 100, 100 );
MovieClip(root).addChild( Resposta );

Ele reclama "1137: Incorrect number of arguments. Expected no more than 0." danadinho como não esperava por mais que nenhum argumento?

 

Em resumo o que eu quero fazer é o seguinte:

 

1) Se eu clicar no botão que está dentro do movieclip eu vou instanciar uma outra classe dentro da VerificaResposta que vai corrigir as respostas.

 

milagrosamente se eu não passar nenhum parâmetro ele chama o construtor corretamente (o trace aparece)!!!

 

stop();

var Resposta:VerificaResposta = new VerificaResposta();
MovieClip(root).addChild( Resposta );

Eu programo OOP em php e c#, mas o ActionScript 3 tá me dando um baile!!! (No Flex parece tudo mais fácil e amigável rs) acho que deve ser algum trauma com flash.

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • O nome da classe não vai no endereço do package;
  • Para verificar se o flash está encontrando a classe que você espera, clique no sinal verde "Validate class definition";

Ps.: Só o nome da classe é que começa com letra maiúscula, o nome da instância da classe é minúsculo.

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.