Ir para conteúdo

POWERED BY:

Arquivado

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

Erik

Galeria PaperVision e XML

Recommended Posts

Caracas... passei o final de semana todo estudando papervision e XML, depois de vários tutoriais em inglês e português, exemplos e muito tempo quebrando a cabeça eu consegui colocar algo pra funcionar, mas ta com três probleminhas:

 

01 - as imagens que são puxadas do xml funcionam de boa, mas elas se repetem uma em baixo da outra, ou seja, eu coloquei nove imagens e uma configuração pra exibir 12 imagens na tela (03 colunas e 04 linhas), mas ele mostra apenas as 03 primeiras fotos na primeira e as demais linhas repentem a primeira., não sei o porque disso, não entendi a lógica desse raciocínio.

 

02 - eu tentei alinhar a galeria no meio, mas sempre que mudo as posições do plano ele começa a travar na tela, trava do flash parar de funcionar, só funcona em posição 0.

 

03 - Achei em algum lugar (depois de tanto pesquisar e ler perdi a fonte se o dono ler isso me avisa pra eu colocar os créditos), o esquema pra ele girar quando clica em cima, mas tem que esperar até o final da animação pra poder clicar de novo, se clicar antes disso ele não funciona mais (???????)

 

Ta ai o código, livre pra alguém me ajudar a arrumar, incrementar, distribuir, vender, enfim...só me ajuda a terminar isso!!!

 

//redimensionando background
stage.scaleMode = StageScaleMode.NO_SCALE;
stage.addEventListener(Event.RESIZE, Redimensionamento);
function Redimensionamento(evt)
{
bg_galeria.x = 0;
bg_galeria.y = 0;
bg_galeria.height = stage.stageHeight;
bg_galeria.width = stage.stageWidth;
}
Redimensionamento(null);
//importando classes e objetos
import org.papervision3d.cameras.Camera3D;
import org.papervision3d.materials.BitmapAssetMaterial;
import org.papervision3d.materials.utils.*;
import org.papervision3d.materials.*;
import org.papervision3d.objects.primitives.Plane;
import org.papervision3d.render.BasicRenderEngine;
import org.papervision3d.scenes.Scene3D;
import org.papervision3d.view.Viewport3D;
import org.papervision3d.events.InteractiveScene3DEvent;
import caurina.transitions.Tweener;
import flash.events.Event;
//criando a base do barato
var viewport:Viewport3D = new Viewport3D(0,0,true,true);
addChild(viewport);

var cena:Scene3D = new Scene3D();
var camera:Camera3D = new Camera3D();

var render:BasicRenderEngine = new BasicRenderEngine();
//carregando o xml
var xml:XML;
var lista:XMLList;
var loadIMG:Loader = new Loader();
var loadXML:URLLoader = new URLLoader();
loadXML.addEventListener(Event.COMPLETE, Listar);
loadXML.load(new URLRequest("galeria.xml"));
//Poe pra funcionar;
function Listar(e:Event):void
{
//armazena as informações do xml em variáveis
xml = new XML(e.target.data);
var xml_colunas:Number = xml.configura.colunas;
var xml_linhas:Number = xml.configura.linhas;
var xml_largura:Number = xml.configura.largura;
var xml_altura:Number = xml.configura.altura;
var xml_espac_horiz:Number = xml.configura.espacamentoh;
var xml_espac_vert:Number = xml.configura.espacamentov;
var alinhaA:Number = (xml_altura + (xml_espac_vert - xml_altura)) * xml_linhas / 2;
var alinhaL:Number = (xml_largura + (xml_espac_horiz - xml_largura)) * xml_colunas / 2;
trace(alinhaA);
trace(alinhaL);

for (var i:int = 0; i < xml_colunas; i++)
{
	for (var j:int = 0; j < xml_linhas; j++)
	{
		//criando o material
		var material:BitmapFileMaterial = new BitmapFileMaterial(xml.foto.imagem[i].toString());
		material.doubleSided = true;
		material.interactive = true;
		material.smooth = true;

		//adicionando e configurar o plano

		var plano:Plane = new Plane(material,xml_altura,xml_largura,0,0);
		plano.x = i * xml_espac_horiz;
		plano.y = j * xml_espac_vert;
		cena.addChild(plano);
		camera.target = plano;
		addEventListener(Event.ENTER_FRAME, funcVai);
		function funcClick(e:InteractiveScene3DEvent)
		{
			var targetRotation:Number = (plano.rotationY <180) ? 180 : 0;
			Tweener.addTween(plano, {rotationY:targetRotation, time:3, transition:"easeOutBounce"});
		}
	}

	//criando interatividade

	plano.addEventListener(InteractiveScene3DEvent.OBJECT_CLICK, funcClick);
	function funcVai(e:Event)
	{
		var rotY: Number = (mouseY-(stage.stageHeight/2))/(stage.stageHeight/2)*(1200);
		var rotX: Number = (mouseX-(stage.stageWidth/2))/(stage.stageWidth/2)*(-1200);
		camera.x = camera.x + (rotX - camera.x) / 5;
		camera.y = camera.y + (rotY - camera.y) / 5;

		render.renderScene(cena, camera, viewport);
	}
}
}

 

Aguardo ajuda de vocês!!!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Oi Erik,

 

Quando mexo em Papervision o que ajuda bastante no desempenho é setar a qualidade do Stage para LOW. Isso pode ajudar mas não sei se ja resolveria seu problema de desempenho, teria como voc~e postar o que colocou em galeria.xml?

 

abraço,

 

Carneirinho

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.