Comunidad de diseño web y desarrollo en internet online

mi post 800 y un tutorial

Citar            
MensajeEscrito el 06 Abr 2007 06:21 pm
bueno, me siento feliz, llegue a 800 clabLevel :cool: aunque debo reconocer que los 600 clabLevel iniciales fueron a punta de tutoriales, para celebrar mis 800 (se q es poco) quiero dejarles mi primer tutorial de APOLLO.

esteeee!!!! como lo publico :oops: jajaja, aqui les adelanto un poco:

Tutorial de Manejo de archivos en APOLLO con editor HTML (primera parte)

Ya sabemos que con Apollo podemos usar tecnologia Flash/Flex/Ajax y demas ( http://www.cristalab.com/blog/33654/adobe-apollo-programas-de-escritorio-con-flash-pdf-o-ajax ) para poder desarrollar aplicaciones de escritorios, casi un sueño hecho realidad para los que trabajamos en web, al fin podremos hacer cosas con un diseño realmente interesante, ademas de la funcionalidad y todo eso q la gente quiere para sus aplicaciones.

En este tutorial veremos las formas como abrir y cerrar documentos de manera BASICA, para mas detalles veremos en otro tutorial los tan famosos componentes Apollo

ahora si al codigo, basandonos en el tutorial de Zguillez
http://www.cristalab.com/tutoriales/217/guia-de-adobe-apollo-para-principiantes
empezamos aqui:

declaro mis variables

Código :

private var desk:File;
private var file:File;
private var fs:FileStream;

desk, nos almacenará la ruta donde vamos a trabajar, en este caso el ESCRITORIO
file, nos dira el nombre del archivo a abrir o grabar
fs, nos dará los metodos necesarios para abrir o grabar el archivo

pasamos a nuestros DOS metodos básicos, veamos uno por uno:

Código :

private function save():void{
   file = desk.resolve(txt_file.text);
   fs.open(file, FileMode.WRITE);
   fs.writeUTFBytes(campo.text);
   fs.close();
}

bueno, mas facil imposible
file = desk.resolve(txt_file.text);
le decimos que nombre tendra nuestro archivo, en este caso lo colocaremos en un TextInput
fs.open(file, FileMode.WRITE);
llamamos a nuestro metodo open y le decimos que queremos hacer, el primer parametro es para decirle el nombre del archivo y el segundo es QUE queremos hacer, en este caso, escribir
fs.writeUTFBytes(campo.text); //**lineas abajo hablo de esto
aqui le mandamos el texto o contenido a grabar
fs.close();
y cerramos nuestro archivito

nuestro otro metodo porfavor:

Código :

private function open():void{
   file = desk.resolve(txt_file.text);
   fs.open(file, FileMode.READ);
   var str:String = fs.readMultiByte(file.size, File.systemCharset);
   html.htmlText=str;
   campo.text=str;
   fs.close();
}

aqui lo unico distinto y que interesa para explicar es:
var str:String = fs.readMultiByte(file.size, File.systemCharset);
pues, lee el contenido del archivo y
html.htmlText=str;
campo.text=str;

esto nos lo muestra en nuestro diseño

hasta aqui considero que nada dificil, para hacerlo mas interesante aplique nuestro pequeño tutorial en un editor HTML basico, es la version inicial, asi que no sean muy exigentes:

nuestro diseño en flex

Código :

<?xml version="1.0" encoding="utf-8"?>
<mx:ApolloApplication xmlns:mx="http://www.adobe.com/2006/mxml" 
   layout="absolute" width="520" height="362" initialize="init()">
   <mx:Script source="metodos.as" />
      
   <mx:HTML width="240" id="html" right="10" bottom="39" top="56"/>
   <mx:TextArea width="240" 
               id="campo"
               textInput="convierte()"
               left="10" bottom="39" top="56"/>

   <mx:TextInput width="178" id="txt_file" bottom="10" right="268" text="test.html"/>
   <mx:Button label="Open" click="open()" left="10" bottom="10"/>

      <mx:Button x="70" y="1" label="B" width="30" id="btn_B" click="negrita()"/>
      <mx:Button label="U" width="30" id="btn_U" click="subrayado()" x="99" y="1"/>
      <mx:Button x="128" y="1" label="I" width="30" id="btn_I" click="cursiva()"/>
      <mx:Button label="Save" bottom="10" right="196" click="save()"/>
      <mx:Button x="10" y="1" label="New" click="nuevo()"/>
      <mx:Button x="354.5" y="26" label="Refresh" click="actualizar()"/>
      <mx:Button x="10" y="26" label="Table" width="54" id="btn_table" click="miTabla()"/>
      <mx:Button x="194" y="1" label="link" width="33" id="btn_link" click="link()"/>
      
      <mx:NumericStepper x="85" y="26" id="col" minimum="1" maximum="5" value="1" width="40"/>
      <mx:NumericStepper x="148" y="26" id="row" minimum="1" maximum="5" value="1" width="38"/>
      <mx:Label x="132" y="28" text="C:" width="18"/>
      <mx:Label x="68" y="28" text="R:" width="18"/>
      <mx:HRule x="10" y="46" width="498" height="5"/>
      <mx:ColorPicker  id="cp" x="194" y="26"/>
      <mx:ColorPicker x="158" y="2" id="cpFont" change="color()"/>
      
      <mx:TextInput x="227" y="1" text="http://" id="txt_link" width="120"/>
      <mx:Button x="357" y="1" label="img" width="33" id="btn_img" click="img()"/>
      <mx:TextInput x="391" y="1" width="117" id="txt_img"/>

</mx:ApolloApplication>


como veran llamo aqui
<mx:Script source="metodos.as" />
a mis metodos y demas AS usado, un poco para ordenar nuestro trabajo

aqui esta señores:

Código :

// ActionScript file
import flash.filesystem.FileMode;
import flash.filesystem.File;
import flash.filesystem.FileStream;
import mx.controls.textClasses.TextRange;
//
private var desk:File;
private var file:File;
private var fs:FileStream;
   
private function init():void{
   desk = File.desktopDirectory;
   fs = new FileStream();
}   
private function convierte():void{
   html.htmlText = campo.text;
}
//---------------------------solo esto es APOLLO
private function save():void{
   file = desk.resolve(txt_file.text);
   fs.open(file, FileMode.WRITE);
   fs.writeUTFBytes(campo.text);
   fs.close();
}
private function open():void{
   file = desk.resolve(txt_file.text);
   fs.open(file, FileMode.READ);
   var str:String = fs.readMultiByte(file.size, File.systemCharset);
   html.htmlText=str;
   campo.text=str;
   fs.close();
}
//------------------------- fin de APOLLO

private function actualizar():void{
   html.htmlText = campo.text;
}
private function miSeleccion(que:String, action:int):void{
   var b :int = campo.selectionBeginIndex;
    var e :int = campo.selectionEndIndex;
    if ( b != e ){
       var str:String = campo.text;
      var par:String = str.substring(0, b);
      var part:String = str.substring(b, e);
      var parte:String = str.substring(e, campo.length);

      switch(action){
         case 0:
            campo.text = par+"<"+que+">"+part+"</"+que+">"+parte;
            break;
         case 1:
            campo.text = par+"<font color=' "+que+" '>"+part+"</font>"+parte;
            break;
         case 2:
            campo.text = par+"<a href=' "+que+" '>"+part+"</a>"+parte;
            break;
         case 3:
            campo.text = par+"<img src='"+que+"'>"+part+"</img>"+parte;
            break;
      }
    }
}
//FORMAT TEXT
private function negrita():void{
   miSeleccion("b",0);
}
private function cursiva():void{
   miSeleccion("i",0);
}
private function subrayado():void{
   miSeleccion("u",0);
}
private function color():void{
   miSeleccion(cpFont.selectedColor.toString(16),1);
}
private function link():void{
   miSeleccion(txt_link.text,2);
}
private function img():void{
   miSeleccion(txt_img.text,3);
}

private function miTabla():void{
   var Col:int= col.value;
   var Row:int= row.value;
   var miT:String="<table border='1' width='100%' bgcolor='#"+cp.selectedColor.toString(16)+"'> \n";
   var miC:String="";
   for(var i:int=0; i<Col; i++){
      miT += "  <TR>\n"; 
      for(var j:int=0; j<Row; j++){
         miT += "     <TD>texto</TD>\n"; 
      }
      miT += "  </TR>";
      miT += "\n";
   }
   miT += "</table>";
   campo.text = miT;
}

private function nuevo():void{
   campo.text = "<html>\n";
   campo.text += "   <body>\n";
   campo.text += "      <p>\n\n\n\n\n\n      </p>\n";
   campo.text += "   </body>\n";
   campo.text += "</html>\n";
}

los demas metodos que ven no los explico porq es programacion con flex, y ese no es el tutorial, solo es un ejemplo basico.

Listo, eso es todo, como nota importante, los archivos que van a grabar seran en el Escritorio porque use:
desk = File.desktopDirectory;
y obviamente para abrir un archivo HTML, tiene que existir primero en el escritorio, sino les sale un error (no es parte del tutorial)

Para la gente que esta esperando la explicacion del
fs.writeUTFBytes(campo.text);
var str:String = fs.readMultiByte(file.size, File.systemCharset);


pues aqui va:

en apollo, nos da metodos de la clase FileStream, que nospermite grabar y leer, pero no solo texto, sino una serie de datos distintos, claro, optimizar tiempos seria la explicacion aca, ademas de tener un mejor manejo de data, aqui les detallo algunos

empezamos con READ:

readByte():int
readBytes(bytes:ByteArray, offset:uint = 0, length:uint = 0):void
readDouble():Number
readFloat():Number
readInt():int
readMultiByte(length:uint, charSet:String):String
readObject():*
readShort():int
readUnsignedByte():uint
readUnsignedInt():uint
readUnsignedShort():uint
readUTF():String
readUTFBytes(length:uint):String

esos son, creo q si se entienden casi todos, lee los distintos tipos de datos segun los necesitemos, como vieron deje el object resaltado pues este para los amantes de remoting y amf nos levanta un objecto traido desde AMF

ahora WRITE:

writeBoolean(value:Boolean):void
writeByte(value:int):void
writeBytes(bytes:ByteArray, offset:uint = 0, length:uint = 0):void
writeDouble(value:Number):void
writeFloat(value:Number):void
writeInt(value:int):void
writeMultiByte(value:String, charSet:String):void
writeObject(object:):void
writeShort(value:int):void
writeUnsignedInt(value:uint):void
writeUTF(value:String):void
writeUTFBytes(value:String):void

bueno, creo q el nombre del metodo lo dice todo, lo bueno es que podemos manejar todo tipo de dato sin complicaciones

entonces señores, realmente el uso de Apollo en este tutorial es minimo, pero de lo mas interesante, con unas pocas horas hice este editor, espero que les sirva de guia.

[ Archivos del tutorial ]

Por eldervaz

BOFH

10964 de clabLevel

39 tutoriales
56 articulos

Genero:Masculino  

en algún lugar del mundo

firefox
Citar            
MensajeEscrito el 06 Abr 2007 09:42 pm
Enhorabuena por tu post 177 XD y tu clabLevel 800 ^^
Tu tuto, bastante parecido a mi tip: http://www.cristalab.com/foros/viewtopic.php?t=36577
Para cuando F lo pase a algún sitio, puedes mejorar detalles como la forma de los componentes al redimensionarse o usar el evento change del campo de texto para prescindir del botón refresh.
Saludos.

Por Zah

BOFH

4290 de clabLevel

27 tutoriales
5 articulos

  Bastard Operators From Hell Editores

Zaragoza, España

firefox
Citar            
MensajeEscrito el 06 Abr 2007 10:04 pm
Buen tuto eldervaz, mándaselo al email de F en formato xhtml para que lo publique como tutorial ^^

Por Zguillez

BOFH

10744 de clabLevel

85 tutoriales
17 articulos
3 ejemplos

Genero:Masculino   Bastard Operators From Hell Héroes Team Cristalab Editores

BCN

firefox
Citar            
MensajeEscrito el 06 Abr 2007 10:11 pm
hola Zah, pos "casi" si, aqui en mi tuto es explicar el uso de WRITE Y READ (como y porque funciona, ademas de los distintos metodos existentes) de forma basica :), el htmlEDITOR es algo q se me ocurrio para darle uso, todos el codigo lo hice para complementarlo y empezar a añadir cosas a lo q OJALA sea un editor mas o menos completo, claro en un futuro :cool:

sobre el change, pues aun asi funciona con mi metodo convierte() q lo hice por ser mas POO y porque despues tendra otra aplicacion

Código :

<mx:TextArea width="240" 
               id="campo"
               textInput="convierte()"
               left="10" bottom="39" top="56"/>

sobre el uso de los componentes :) pues no es la idea del tutorial, porq es flex mas que apollo

pero gracias y q sigan los proyectos apollo :) ahh ademas vi a Mike Chambers hacer algo aun mas basico.

Por eldervaz

BOFH

10964 de clabLevel

39 tutoriales
56 articulos

Genero:Masculino  

en algún lugar del mundo

firefox
Citar            
MensajeEscrito el 10 Abr 2007 07:38 am
Tutorial publicado:
http://www.cristalab.com/tutoriales/220/abrir-editar-y-guardar-archivos-con-adobe-apollo

Por Freddie

BOFH

53 tutoriales
597 articulos
43 ejemplos

Genero:Masculino   Admin

Conserje de Cristalab

firefox
Citar            
MensajeEscrito el 10 Abr 2007 06:21 pm
Esto es genial. A ver si más gente se anima con el pollo. Más adelante (quizás antes de que se acabe el milenio) me anime yo y todo. Gracias!

Por Sisco

BOFH

3700 de clabLevel

12 tutoriales
4 articulos

Genero:Masculino   Bastard Operators From Hell

Catalunya

firefox
Citar            
MensajeEscrito el 10 Abr 2007 06:25 pm

Sisco escribió:

Esto es genial. A ver si más gente se anima con el pollo

:lol: :lol: :lol: si lo has hecho agrede GENIAL!!!! me hiciste reir, y si ni te diste cuenta y estas lamentandote no hacer vista preliminar je. :?

Por eldervaz

BOFH

10964 de clabLevel

39 tutoriales
56 articulos

Genero:Masculino  

en algún lugar del mundo

firefox
Citar            
MensajeEscrito el 10 Abr 2007 06:30 pm
¿Acaso vos se atreve a dudar de mi excelente ortografía?

Por Sisco

BOFH

3700 de clabLevel

12 tutoriales
4 articulos

Genero:Masculino   Bastard Operators From Hell

Catalunya

firefox
Citar            
MensajeEscrito el 10 Abr 2007 06:36 pm

Sisco escribió:

¿Acaso vos se atreve a dudar de mi excelente ortografía?

ni por un segundo mi Lord.

pero si tanto es el pollo lo que le llama la atencion, le invito que venga a Perú, es un deporte nacional comer el pollo (a la brasa) :?

Por eldervaz

BOFH

10964 de clabLevel

39 tutoriales
56 articulos

Genero:Masculino  

en algún lugar del mundo

firefox
Citar            
MensajeEscrito el 10 Abr 2007 06:39 pm
juaaaaaaaaaaaaaaas! :lol:

Por Sisco

BOFH

3700 de clabLevel

12 tutoriales
4 articulos

Genero:Masculino   Bastard Operators From Hell

Catalunya

firefox
Citar            
MensajeEscrito el 10 Abr 2007 09:54 pm
No conocía APOLLO, muy interesante...

Gracias por el Tutorial!!

Cristian Arce.

Por cromosoma47

159 de clabLevel



 

Rosario | Argentina

firefox

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.