Ir para conteúdo

POWERED BY:

Arquivado

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

irgo

[Resolvido] "attachMovie" em as3

Recommended Posts

Olá..estou montando uma estrutura no flash que abre janelas a la windows...pra isso eu criei um movieclip Janela, fiz o linkage ai ele virou a classe Janela extendida de MovieClip, adicionei ele no palco..ate ai beleza..o problema eh q eu preciso passar alguns parametros pra dentro desse movieclip mas não to conseguindo...preciso controlar outros mcs q tão dentro dele e tbm n consigo

 

o código eh assim:

 

var objJanela:Janela = new Janela();
mcJanela.addChild(objJanela);

function maximiza(evt:Event):void {
	if (evt.currentTarget.currentFrame == 1) {
		evt.currentTarget.gotoAndStop(2);
	} else {
		evt.currentTarget.gotoAndStop(1);
	}
}

mcJanela.objJanela.addEventListener(MouseEvent.MOUSE_UP, maximiza);

como q eu faço pra controlar esses movieclips "atachados" e mandar variaveis para dentro desse moviclip que agora eh classe?

 

flw

Compartilhar este post


Link para o post
Compartilhar em outros sites

Para que você possa controlar os itens internos de um movie clip que você marcou para exportar, você deve criar uma classe.

 

 

package {
	 import flash.display.MovieClip;
	 import flash.events.*;
	 import flash.net.*;

	 class Janela extends MovieClip {
		  // aqui você coloca os mesmos nomes dos movieclip's que estão dentro da "janela"
		  public var buttonMaximize:MovieClip;
		  public var buttonMinimize:MovieClip;
		  public var buttonClose:MovieClip;

		  function Janela(){}
	 }
}

Desta forma você consegue acessar os elementos internos da janela.

 

Para que o código funcione, você precisa desabilitar também uma coisa que chamamos de "for lazy guys" aqui na empresa.

Vá em:

- File

- Publish Settings

- Aba Flash

- clique no botão "settings" ao lado de "action script version" (que deverá estar selecionado como ActionScript 3.0)

- DESABILITE a opção "Automatically declare stage instances"

 

[complementando]

Você não pode acessar direto porque, como a Janela extende MovieClip e MovieClip não é mais uma classe dinamica e você não declarou uma classe Janela, o compilador não sabe de onde vem a referencia, então dá erro mesmo.

 

@braços

Compartilhar este post


Link para o post
Compartilhar em outros sites

alass hufersil, brigadão msm..funcionou aki...

soh q agora to com um outro problema, não sei c to num momento de lesera mas simplesmente n consegui fazer o seguinte. Preciso adicionar dentro do Janela uma lista de itens...no caso criei outra classe, a ListaPortfolio, ai por um for eu posiciono eles la dentro..como c fosse um attachMovie msm..o problema eh q n "atacha" todos...n sei c eh pq todos os Itens tem o msm nome mas aparece soh um, sendo q meu for eh um laço q vai ate 5.

 

o código é esse:

 

function defineTela(mc) {
	   //aki eu defino em que item do menu eu cliquei para abrir a janela e em relação a isso eu populo a Janela.

	if (mc=="mcHome") {
	} else if (mc=="mcPort") {
		var objPort:ListaPortfolio = new ListaPortfolio();

		var nY = 25;
		objPort.x = 3;
		objPort.y = nY;

		for (var i=0; i<5; i++) {
			
			nY +=25;
			objPort.y = nY;
			addChildAt(objPort,i);

		}
	}
}
defineTela(nomeMC);

será q pode me dar uma luz? eu quero fazer exatamente igual o attachMovie, adicionar itens e posicionar eles um embaixo do outro

 

flw

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara, pelo que você fez, deveria funcionar.

Depende também de como está o restante da programação...

vou colocar um exemplo de como fazer com colunas e linhas

 

var cores:Array = [0xFFCC00,0xFF0000,0x0000FF,0x00FF00,0x00CC00,0xCCFFCC];
var colunas:int = 20;
var linhas:int = 20;
var mc:MovieClip;

for(var line:int = 0; line < linhas; line++) {
	for(var col:int = 0; col < colunas; col++) {
		// aqui você pode substituir pelo objeto que você quer criar
		// estou desenhando dinamicamente só para testar
		mc = new MovieClip();
		mc.graphics.lineStyle(1,0x666666,1,true,'none');
		mc.graphics.beginFill(cores[ Math.round(Math.random()*(cores.length-1)) ], 1);
		mc.graphics.drawRect(0,0,20,20);
		mc.graphics.endFill();
		
		mc.x = mc.width * col;
		mc.y = mc.height * line;
		addChild(mc);
	}
}

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.