Erik 2 Denunciar post Postado Dezembro 14, 2010 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
carneirinho 7 Denunciar post Postado Dezembro 15, 2010 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