Foros del Web » Creando para Internet » Flash y Actionscript »

crear un book dinamico con libreria

Estas en el tema de crear un book dinamico con libreria en el foro de Flash y Actionscript en Foros del Web. Buenos dias! recién comencé un sistema que siempre he querido realizar y es una revista electronica... la idea la tome en base al componente de ...
  #1 (permalink)  
Antiguo 13/05/2011, 08:37
Avatar de superscully  
Fecha de Ingreso: febrero-2009
Mensajes: 56
Antigüedad: 15 años, 2 meses
Puntos: 0
Busqueda crear un book dinamico con libreria

Buenos dias!

recién comencé un sistema que siempre he querido realizar y es una revista electronica... la idea la tome en base al componente de ruben swirenga http://www.rubenswieringa.com/blog/f...component-beta el cual la verdad esta muy completo y recomiendo mucho, aqui el dilema que tengo es que deseo agregar paginas y eliminarlas dinamicamente en base al numero de paginas que me arroje un xml... he estado googleando y la verdad es que no he encontrado mas que ejemplos estaticos y quiciera saber si es posible hacer esto...

he aqui algo de mi codigo:

Mando llamar un servicio http que me arroja un xml
Código Flex:
Ver original
  1. <mx:HTTPService id="hemeroPHP" url="http://localhost/xml/getPubInit.php" resultFormat="e4x" result="paginasInHandler(event)" showBusyCursor="true"/>

el resultado lo envio a una function que me permite guardarlas en un arreglo y asi los puedo manejar de mejor manera
Código Flex:
Ver original
  1. import com.rubenswieringa.*;
  2. [Bindable] private var libro:Book = new Book();
  3.  
  4. private function paginasInHandler(event:ResultEvent):void
  5.         {
  6.             var tmp:XMLList = new XMLList(event.result);
  7.             revista= new XMLList(tmp.galeria.node);
  8.             imgPaginas = new ArrayCollection();
  9.             for(var i:int=0;i<periodico.length();i++)
  10.             {
  11.                 imgPaginas.addItem({source:"http://localhost/thumbs/"+revista[i].@id+".jpg"});
  12.                
  13.             }
  14.         }

hasta aqui todo empiezacon problemas y que al momento del debug me indica lo siguiente:

Código Error:
Ver original
  1. Error #1010: Un término no está definido y no tiene propiedades.
  2.     at com.rubenswieringa.book::Book/isPageCornerHit()[F:\Flex 3\revista\src\com\rubenswieringa\book\Book.as:1271]
  3.     at com.rubenswieringa.book::Book/evaluateHover()[F:\Flex 3\revista\src\com\rubenswieringa\book\Book.as:847]

creo que no debo de iniciar con [Bindable] el elemento book... pero entonces como lo inicializo????

espero puedan ayudarme...

saludos!
  #2 (permalink)  
Antiguo 16/05/2011, 09:16
Avatar de superscully  
Fecha de Ingreso: febrero-2009
Mensajes: 56
Antigüedad: 15 años, 2 meses
Puntos: 0
Busqueda Respuesta: crear un book dinamico con libreria

Bueno he visto progresos en esto de agregar paginas en una revista de manera dinamica... por lo menos en la primera vuelta... ya luego veo que gestos hace en la segunda vuelta... este es el codigo:

Código Flex:
Ver original
  1. private function paginasInHandler(event:ResultEvent):void
  2.         {
  3.             var tmp:XMLList = new XMLList(event.result);
  4.             revista = new XMLList(tmp.galeria.node);
  5.             imgPaginas = new ArrayCollection();
  6.             var libro:Book = new Book();
  7.             libro.width=500;
  8.             libro.height=300;
  9.             libro.openAt=0;
  10.             libro.autoFlipDuration=500;
  11.             libro.easing=0.7;
  12.             libro.regionSize=150;
  13.             libro.sideFlip=true;
  14.             libro.hardCover=true;
  15.             libro.hover=true;
  16.             libro.snap=false;
  17.             libro.flipOnClick=true;
  18.             //libro.tearable=true;
  19.             var pagina:Page = new Page();
  20.             pagina.tearable=true;
  21.             libro.addChildAt(pagina,0);
  22.             for(var i:int=0;i<periodico.length();i++)
  23.             {
  24.                 imgPaginas.addItem({source:"http://localhost/thumbs/"+periodico[i].@id+".jpg"});
  25.                 var img:Image = new Image();
  26.                 img.source="http://localhost/thumbs/"+revista[i].@id+".jpg";
  27.                 pagina.addChildAt(img,i);
  28.                 libro.addChildAt(pagina,i);
  29.             }
  30.             stage2.addChildAt(libro,0);
  31.         }

Aqui ya me muestra otro error y este es al momento de poner el libro en el stage2 que es un canvas
Código Flex:
Ver original
  1. <mx:Canvas width="100%" height="100%" left="0" top="80" id="stage2" visible="true" backgroundColor="#F5B366">
  2. </mx:Canvas>


y me genera este error, no se que como puedo corregirlo:
Código Error:
Ver original
  1. RangeError: Error #2006: El índice proporcionado está fuera de los límites.
  2.     at flash.display::DisplayObjectContainer/getChildAt()
  3.     at mx.core::Container/getChildAt()[C:\autobuild\3.5.0\frameworks\projects\framework\src\mx\core\Container.as:2377]
  4.         at com.rubenswieringa.containers::SuperViewStack/get selectedChild()[F:\Flex 3\src\com\rubenswieringa\containers\SuperViewStack.as:486]
  5.     at com.rubenswieringa.containers::SuperViewStack/set selectedIndex()[F:\Flex 3\src\com\rubenswieringa\containers\SuperViewStack.as:475]
  6.     at com.rubenswieringa.containers::SuperViewStack/childrenCreated()[F:\Flex 3\src\com\rubenswieringa\containers\SuperViewStack.as:128]
  7.     at mx.core::UIComponent/initialize()[C:\autobuild\3.5.0\frameworks\projects\framework\src\mx\core\UIComponent.as:5382]
  8.     at mx.core::Container/initialize()[C:\autobuild\3.5.0\frameworks\projects\framework\src\mx\core\Container.as:2569]
  9.     at mx.core::UIComponent/http://www.adobe.com/2006/flex/mx/internal::childAdded()[C:\autobuild\3.5.0\frameworks\projects\framework\src\mx\core\UIComponent.as:5278]
  10.     at mx.core::Container/http://www.adobe.com/2006/flex/mx/internal::rawChildren_addChild()[C:\autobuild\3.5.0\frameworks\projects\framework\src\mx\core\Container.as:3819]
  11.     at mx.core::ContainerRawChildrenList/addChild()[C:\autobuild\3.5.0\frameworks\projects\framework\src\mx\core\ContainerRawChildrenList.as:143]
  12.     at com.rubenswieringa.book::PageManager/createChildren()[F:\Flex 3\src\com\rubenswieringa\book\PageManager.as:153]
  13.     at mx.core::UIComponent/initialize()[C:\autobuild\3.5.0\frameworks\projects\framework\src\mx\core\UIComponent.as:5381]
  14.     at mx.core::Container/initialize()[C:\autobuild\3.5.0\frameworks\projects\framework\src\mx\core\Container.as:2569]
  15.     at mx.core::UIComponent/http://www.adobe.com/2006/flex/mx/internal::childAdded()[C:\autobuild\3.5.0\frameworks\projects\framework\src\mx\core\UIComponent.as:5278]
  16.     at mx.core::Container/http://www.adobe.com/2006/flex/mx/internal::childAdded()[C:\autobuild\3.5.0\frameworks\projects\framework\src\mx\core\Container.as:3348]
  17.     at mx.core::Container/addChildAt()[C:\autobuild\3.5.0\frameworks\projects\framework\src\mx\core\Container.as:2260]
  18.     at revista/paginasInHandler()[F:\Flex 3\src\revista.mxml:68]
  19.     at revista/__fechaPHP_result()[F:\Flex 3\src\revista.mxml:168]
  20.     at flash.events::EventDispatcher/dispatchEventFunction()
  21.     at flash.events::EventDispatcher/dispatchEvent()
  22.     at HTTPOperation/http://www.adobe.com/2006/flex/mx/internal::dispatchRpcEvent()[C:\autobuild\3.5.0\frameworks\projects\rpc\src\mx\rpc\http\HTTPService.as:763]
  23.     at mx.rpc::AbstractInvoker/http://www.adobe.com/2006/flex/mx/internal::resultHandler()[C:\autobuild\3.5.0\frameworks\projects\rpc\src\mx\rpc\AbstractInvoker.as:263]
  24.     at mx.rpc::Responder/result()[C:\autobuild\3.5.0\frameworks\projects\rpc\src\mx\rpc\Responder.as:46]
  25.     at mx.rpc::AsyncRequest/acknowledge()[C:\autobuild\3.5.0\frameworks\projects\rpc\src\mx\rpc\AsyncRequest.as:74]
  26.     at DirectHTTPMessageResponder/completeHandler()[C:\autobuild\3.5.0\frameworks\projects\rpc\src\mx\messaging\channels\DirectHTTPChannel.as:409]
  27.     at flash.events::EventDispatcher/dispatchEventFunction()
  28.     at flash.events::EventDispatcher/dispatchEvent()
  29.     at flash.net::URLLoader/onComplete()

a seguir googleando no hay mas...

Última edición por superscully; 16/05/2011 a las 09:17 Razón: me equivoque en la direccion
  #3 (permalink)  
Antiguo 17/05/2011, 10:12
Avatar de superscully  
Fecha de Ingreso: febrero-2009
Mensajes: 56
Antigüedad: 15 años, 2 meses
Puntos: 0
Pregunta Respuesta: crear un book dinamico con libreria

Ok! debido al exito obtenido tuve que hacer de nuevo el proyecto.. ahora hice varias cosas diferentes me base mas en el ejemplo del componente de Ruben Swieringa asi que declare el libro en la seccion del codigo con 2 paginas
Código Flex:
Ver original
  1. <rs:Book id="libro" y="50" width="800" height="530"
  2.         openAt="0" autoFlipDuration="600" easing="0.7" regionSize="150"
  3.         sideFlip="true" hardCover="true" hover="true" snap="false" flipOnClick="true">
  4.             <rs:Page  id="tearablePage2" tearable="true">
  5.                
  6.             </rs:Page>
  7.             <rs:Page  id="tearablePage1" tearable="true">
  8.                
  9.             </rs:Page>
  10.         </rs:Book>

tambien declare la pagina que se va a llenar al principio desde el principio en el bloque del script
Código Flex:
Ver original
  1. [Bindable]  private var pagina:Page = new Page();

Ya en la funcion quite casi todo el codigo que habia hecho y agregue unas lineas asi como listener para verificar que este bien inicializado el libro...

Código Flex:
Ver original
  1. private function paginasInHandler(event:ResultEvent):void
  2.         {
  3.             //libro.removeAllChildren();
  4.             libro.addEventListener(BookEvent.PAGE_TORN, onpageTorn);
  5.             var tmp:XMLList = new XMLList(event.result);
  6.             revista= new XMLList(tmp.galeria.node);
  7.             imgPaginas = new ArrayCollection();
  8.             //libro.tearable=true;
  9.             pagina.tearable=true;
  10.             pagina.hard=true;
  11.             for(var i:int=0;i<periodico.length();i++)
  12.             {
  13.                 imgPaginas.addItem({source:"http://localhost/mini/"+revista[i].@id+".jpg"});
  14.                 var img:Image = new Image();
  15.                 img.source="http://localhost/mini/"+revista[i].@id+".jpg";
  16.                 pagina.addChildAt(img,i);
  17.                 libro.pages.addItemAt(pagina,i);
  18.             }
  19.             //this.stage2.addChildAt(libro,1);
  20.             //libro.addChildAt(pagina,i);
  21.             //stage2.addChild(libro);
  22.         }
Código Flex:
Ver original
  1. private function onpageTorn(event:BookEvent):void
  2.         {
  3.             if(libro.pages.getItemIndex(pagina)==-1){
  4.                     addTearable();
  5.             }
  6.         }
  7.         private function addTearable ():void {
  8.                 libro.addChildAt(tearablePage2, 10);
  9.                 libro.addChildAt(tearablePage1, 10);
  10.             }

Bueno hasta aqui esta bien y de hecho ya no me sale el error #2006, que es el de los indices si no que ahora me sale un error #2015 que tengo entendido es sobre los bitmapData exceden los 2880 de alto y ancho, pero las imagenes que estoy tratando de poner no sobre pasan este limite... que sera????
Código Error:
Ver original
  1. ArgumentError: Error #2015: Objeto BitmapData no válido.
  2.     at flash.display::BitmapData/ctor()
  3.     at flash.display::BitmapData()
  4.     at com.rubenswieringa.book::Page/getBitmapData()[F:\Flex 3\src\com\rubenswieringa\book\Page.as:179]
  5.     at com.rubenswieringa.book::Book/saveBitmapData()[F:\Flex 3\src\com\rubenswieringa\book\Book.as:1221]
  6.     at com.rubenswieringa.book::Book/startPageFlip()[F:\Flex 3\src\com\rubenswieringa\book\Book.as:529]

Etiquetas: error#1010, flex
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 00:51.