Proyecto de investigación: A partir de flex

Domingo, 18 de enero 2009

Era 2009, en el tiempo y hemos empezado con nuestro proyecto principal (tesis de licenciatura). Terminamos con un interesante proyecto que se entrega por Brook Consulting. El proyecto ha sido nombrado el AirDog .

En esencia, este proyecto va a desarrollar un software de informes y estadísticas con los datos proporcionados por el noruego Kennel Club (NKK).

Los dos entrenadores que han sido premiados por el arroyo llamado Erlend y Ole. Son miembros de pájaro perro Pointer clubes y Breton, por lo que el programa será principalmente dirigido a estos dos equipos en el primer lugar.

Vamos a utilizar la flexibilidad idiomas y php. Tenemos algo de experiencia con PHP antes, pero flex es algo completamente nuevo.

Después de algunas pruebas que terminó con lo siguiente:

feedflex

alimentar a los Estados flexible y se puede decir que echo de menos, pero aprendí mucho. Para suscribirse a un canal de alimentación flexibles que necesita un crossdomain.xml en la raíz de la alimentación proviene de dominio. También tiene que ser configurado de manera que se puede acceder desde el exterior.

La razón por la que no se dio cuenta de esto antes del programa fue "acabada" es que en modo de depuración no hay ningún requisito para crossdomain.xml introducido. Fue sólo cuando me envió la solicitud a Tore (amigo de la escuela) que me di cuenta que algo andaba mal. Para aquellos que quieran acceder a los archivos y la información fuera del dominio de su aplicación Flex funciona para leer más acerca de aquí: Flash / Flex Tutorial - Cómo crear un archivo crossdomain.xml.

El código fuente para la alimentación de flex:

FeedFlex.mxml

<?xml version="1.0"?> <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" initialize="initData()" width="100%" height="100%"> </mx><mx :Script> < ![CDATA[ import mx.rpc.events.FaultEvent; import mx.formatters.DateFormatter; import mx.resources.ResourceBundle; import mx.collections.*; import mx.controls.*; import mx.events.*; [Bindable] public var localFeeds:ArrayCollection = new ArrayCollection(); public var lsofeeds:LSOHandler; public function initData():void { lsofeeds = new LSOHandler("feeds"); if (lsofeeds.getObjects()) { localFeeds = lsofeeds.getObjects(); } } private function addFeed():void { var df:DateFormatter = new DateFormatter(); df.formatString="DD-MMM-YYYY"; var o:Object = {name:addAName.text, url:addAurl.text, date:df.format(new Date())}; lsofeeds.addObject(o); localFeeds = lsofeeds.getObjects(); addAName.text = ""; addAurl.text = ""; } private function removeFeed(eventObj:CloseEvent):void { if (eventObj.detail==Alert.OK) { if (myGrid.selectedIndex > -1) { localFeeds.removeItemAt(myGrid.selectedIndex); } } } public function clickHandler(event:ItemClickEvent):void { if (event.index == 0){ httpRSS.url = myGrid.selectedItem.url; httpRSS.send(); } else if (event.index == 1) { myGrid.editable = true; } else { var objAlert:Alert = Alert.show( "Vil du slette " + myGrid.selectedItem.url, "Slette?", Alert.OK | Alert.CANCEL, this, removeFeed, null, Alert.OK); } } private function feedFaultHandler(event:FaultEvent):void { Alert.show("Problem med å laste inn feeden\n" + "Problemet kan komme av at det ikke er en feed url som er skrevet inn.", "Feed problem"); } ]]> </mx> <mx :HTTPService id="httpRSS" resultFormat="object" fault="feedFaultHandler(event);" /> <mx :VBox id="theBox" height="100%" width="80%" horizontalAlign="center"> </mx><mx :Panel id="adder" title="RSS URL" width="100%"> </mx><mx :Form width="100%"> </mx><mx :Canvas height="57"> <mx :Label id="labelUrl" text="URL:" x="0" y="29"/> <mx :Label id="labelNavn" text="NAVN:" x="0" y="1"/> <mx :TextInput id="addAName" width="287" borderStyle="solid" x="46" y="0"/> <mx :TextInput id="addAurl" width="287" borderStyle="solid" x="46" y="25"/> <mx :Button label="Legg til" click="addFeed()" x="341" y="25"/> </mx> <mx :DataGrid id="myGrid" width="100%" height="133" dataProvider="{localFeeds}"> </mx><mx :columns> <mx :DataGridColumn headerText="Navn" dataField="name" /> <mx :DataGridColumn headerText="Url" dataField="url" /> <mx :DataGridColumn headerText="Dato lagt inn" dataField="date" /> </mx><mx :DataGridColumn headerText="Slett" editable="false"> </mx><mx :itemRenderer> </mx><mx :Component> </mx><mx :ButtonBar itemClick="outerDocument.clickHandler(event)"> </mx><mx :dataProvider> </mx><mx :Array> </mx><mx :String>Last inn</mx> <mx :String>Rediger</mx> <mx :String>Slett</mx> <mx :Panel id="reader" title="RSS innhold" width="100%"> </mx><mx :DataGrid id="entries" width="100%" dataProvider="{httpRSS.lastResult.rss.channel.item}" itemClick="{body.htmlText=httpRSS.lastResult.rss.channel.item[entries.selectedIndex].description}"> </mx><mx :columns> <mx :DataGridColumn dataField="title" headerText="Tittel" /> <mx :DataGridColumn dataField="pubDate" headerText="Dato" /> </mx> <mx :TextArea id="body" editable="false" width="100%" height="100"/> 

LSOHandler.as

 // ActionScript file package { import mx.collections.ArrayCollection; import flash.net.SharedObject; public class LSOHandler { private var mySO:SharedObject; private var ac:ArrayCollection; private var lsoType:String; public function LSOHandler(s:String) { init(s); } private function init(s:String):void { ac = new ArrayCollection(); lsoType = s; mySO = SharedObject.getLocal(lsoType); if (getObjects()) { ac = getObjects(); } } public function getObjects():ArrayCollection { return mySO.data[lsoType]; } public function addObject(o:Object):void { ac.addItem(o); updateSharedObjects(); } private function updateSharedObjects():void { mySO.data[lsoType] = ac; mySO.flush(); } } } 

Utiliza Adobe - Flex 3 LiveDocs para encontrar la mayor parte de la información que necesita para empezar.

Me ayudó en especial para comprender el objeto compartido, el tipo Flex de cookie. Para obtener más información acerca de cómo lo usa puede ver en este enlace: http://livedocs.adobe.com/flex/3/html/help.html?content=lsos_3.html

Echa un vistazo a nuestra página del proyecto http://prosjekt.mindre.net

Categorías → Flex

    Escribir un comentario