after a quick glance i'd recommend a couple of things: see if you can break your application into smaller chunks that interact with each other rather than have a single class - one of the benefits of oop is being able to visualise the problem as distinct tasks that are handled by separate objects (classes)
second is just naming conventions - generally only classes should start with a capital letter - instances (like CityList and PhotoArray) should be camel case (cityList and photoArray). My own personal preference is to prefix with the object type (listCities and arPhotos), much like hungarian notation but there's discussion about how relevant that is in these days of proper coding environments with automatic code completion (like FlashDevelop and FDT). It's also considered good form for method names to be verbs (getVariable(), handleEvent(), completeSetup()) although many people like to make their event handlers follow the form onEnterFrame() / onMouseEvent() (i use handleEventname() for mine) You should try to give values to your class variables in the constructor / init method or when they're needed if possible. An instance of myCloseBtn:Button that is added when the variable is declared and then is never used is memory / cpu wasted i'll be looking through the code a bit closer when i get a chance - i'm sure there's others here who will comment as well best a On 7 July 2010 07:45, J.C. Berry <[email protected]> wrote: > Hello all, > I wondered if I could bother you to review the code below and make comments > and suggestions. It's my first full attempt (from scratch) to create a > class. I would appreciate any comments you would like to make. Thanks. Oh, > and to get an idea of how it looks, the project is located at > http://www.fjroadtrip.com > Thanks! > > > package{ > import fl.controls.TextArea; > import fl.containers.ScrollPane; > import fl.controls.Button; > import flash.display.*; > import flash.events.Event; > import flash.events.MouseEvent; > import flash.net.URLRequest; > import flash.net.URLLoader; > import fl.managers.StyleManager; > > public class DynaMap extends MovieClip{ > XML.ignoreWhitespace = false; > private var myXML:XML; > private var myXMLLoaderReq:URLRequest; > private var myXMLLoader:URLLoader; > private var CityList:XMLList; > private var CityNum:Number = 0; > private var PhotoArray:Array; > private var CurrPhoto:Number = 0; > private var NumOfCities:Number; > private var myWin:ScrollPane = new ScrollPane(); > private var DayPicURLReq:URLRequest; > private var myWinLoader:Loader = new Loader(); > private var tbaInstance; > private var CityTextBox:TextArea = new TextArea(); > private var myCloseBtn:Button = new Button();//closebtn > private var myNextBtn:Button = new Button();//nextbtn > > public function DynaMap(){ > myXMLLoaderReq = new URLRequest('cities.xml'); > myXMLLoader = new URLLoader(myXMLLoaderReq); > myXMLLoader.addEventListener(Event.COMPLETE, xmlLoaded); > } > private function xmlLoaded(e:Event):void{ > myXML = new XML(myXMLLoader.data); > CityList = new XMLList(myXML.city); > NumOfCities = CityList.length(); > //initStage(cityList,0); > for(var i=0;i<NumOfCities;i++){ > CityNum = i; > var DynaBtn = root['city'+CityNum+'_mc']; > DynaBtn.gotoAndStop(1); > > > DynaBtn.addEventListener(MouseEvent.MOUSE_OVER,DynaBtnRollOverHandler(CityNum)); > > DynaBtn.addEventListener(MouseEvent.MOUSE_OUT,DynaBtnRollOutHandler); > } > } > private function ClearScreen(){ > for (var k:int =0; k < numChildren; k++){ > > if(getChildAt(k).name.indexOf('Popout')>-1)removeChildAt(k); > } > } > private function PopoutImgListener(e:Event):void{ > e.target.content.x = -93; > e.target.content.y = -47; > e.target.content.alpha = 0; > tbaInstance.addChild(e.target.content); > } > private function DynaBtnRollOverHandler(cityNum){ > return function(){ > root['city'+cityNum+'_mc'].gotoAndStop(2); > ClearScreen(); > var PopoutContentLoader:Loader = new Loader(); > var PopoutContentListener:Object = {}; > if(cityNum > 25){ > tbaInstance = new tba2(); > tbaInstance.x = root['city'+cityNum+'_mc'].x-105; > tbaInstance.y = root['city'+cityNum+'_mc'].y-55; > tbaInstance.name = 'cityPopout'+cityNum+'_mc'; > addChild(tbaInstance); > }else{ > tbaInstance = new tba(); > tbaInstance.x = root['city'+cityNum+'_mc'].x+99; > tbaInstance.y = root['city'+cityNum+'_mc'].y-55; > tbaInstance.name = 'cityPopout'+cityNum+'_mc'; > addChild(tbaInstance); > } > > > PopoutContentLoader.contentLoaderInfo.addEventListener(Event.COMPLETE,PopoutImgListener); > var pictURLReq:URLRequest = new URLRequest('images/' + > CityList[cityNum].images); > PopoutContentLoader.load(pictURLReq); > //XML.ignoreWhitespace = false; > PhotoArray = CityList[cityNum].gallery.split(','); > if(PhotoArray.length > 0){ > > > tbaInstance.addEventListener(Event.ENTER_FRAME,EnterFrameListener(cityNum)); > > tbaInstance.addEventListener(MouseEvent.MOUSE_UP,ClickPopoutListener); > > //tbaInstance.addEventListener(MouseEvent.MOUSE_OUT,ClearScreen); > } > with(CityTextBox){ > x = -11; > y = -53; > width = 98; > height = 105; > selectable = true; > alpha = 0; > wordWrap = true; > verticalScrollPolicy = 'off'; > horizontalScrollPolicy = 'off'; > } > tbaInstance.addChild(CityTextBox); > } > } > private function DynaBtnRollOutHandler(e:Event):void{ > e.target.gotoAndStop(1); > } > private function EnterFrameListener(cityNum){ > return function(){ > if(tbaInstance.currentFrame == 8){ > tbaInstance.getChildAt(1).alpha = > tbaInstance.getChildAt(2).alpha = 1; > tbaInstance.getChildAt(1).htmlText = '<b>' + > CityList[cityNum].name + '</b><br>' + CityList[cityNum].blurb; > > tbaInstance.removeEventListener(Event.ENTER_FRAME,EnterFrameListener); > } > } > } > private function ClickPopoutListener(e:Event){ > if(PhotoArray.length > 0 && PhotoArray[0].toString()!=''){ > removeChild(tbaInstance);//delete popout > myWin.setSize(425, 435); > myWin.move(0,0); > addChild(myWin); > CurrPhoto = 0; > if(PhotoArray[CurrPhoto].indexOf('*') > -1){ > DayPicURLReq = new URLRequest('images/' + > PhotoArray[CurrPhoto].substring(0,PhotoArray[CurrPhoto].length-1)); > > > myWinLoader.contentLoaderInfo.addEventListener(Event.COMPLETE,GalleryLoaded); > myWinLoader.load(DayPicURLReq); > myWin.addChild(myWinLoader); > }else{ > DayPicURLReq = new URLRequest('images/' + > PhotoArray[CurrPhoto].substring(0,PhotoArray[CurrPhoto].length)); > > > myWinLoader.contentLoaderInfo.addEventListener(Event.COMPLETE,GalleryLoaded); > myWinLoader.load(DayPicURLReq); > myWin.addChild(myWinLoader); > } > } > } > private function GalleryLoaded(e:Event){ > if(CurrPhoto<PhotoArray.length-1){ > if(PhotoArray[CurrPhoto].indexOf('*') > -1){ > e.target.content.y = 0; > e.target.content.x = 68; > myCloseBtn.setSize(45,22); > myCloseBtn.label = 'close'; > myCloseBtn.move(310,0); > addChild(myCloseBtn); > > myCloseBtn.addEventListener(MouseEvent.MOUSE_UP,CloseGalleryWin); > myNextBtn.label = 'next'; > myNextBtn.setSize(50,22); > myNextBtn.move(260,0); > addChild(myNextBtn); > > myNextBtn.addEventListener(MouseEvent.MOUSE_UP,NextPicListener);//next in > gallery > }else{ > e.target.content.y = 60; > e.target.content.x = 0; > myCloseBtn.setSize(45,22); > myCloseBtn.label = 'close'; > myCloseBtn.move(376,60); > addChild(myCloseBtn); > > myCloseBtn.addEventListener(MouseEvent.MOUSE_UP,CloseGalleryWin); > myNextBtn.label = 'next'; > myNextBtn.setSize(50,22); > myNextBtn.move(325,60); > addChild(myNextBtn); > > myNextBtn.addEventListener(MouseEvent.MOUSE_UP,NextPicListener);//next in > gallery > } > }else{ > if(PhotoArray[CurrPhoto].indexOf('*') > -1){ > e.target.content.y = 0; > e.target.content.x = 68; > myCloseBtn.setSize(45,22); > myCloseBtn.label = 'close'; > myCloseBtn.move(310,0); > addChild(myCloseBtn); > > myCloseBtn.addEventListener(MouseEvent.MOUSE_UP,CloseGalleryWin); > //removeChild(myNextBtn); > }else{ > e.target.content.y = 60; > e.target.content.x = 0; > myCloseBtn.setSize(45,22); > myCloseBtn.label = 'close'; > myCloseBtn.move(376,60); > addChild(myCloseBtn); > > myCloseBtn.addEventListener(MouseEvent.MOUSE_UP,CloseGalleryWin); > //removeChild(myNextBtn); > } > } > } > private function CloseGalleryWin(e:Event){ > removeChild(myWin); > removeChild(myCloseBtn); > removeChild(myNextBtn); > } > private function NextPicListener(e:Object):void{ > removeChild(myCloseBtn); > removeChild(myNextBtn); > CurrPhoto++; > if(CurrPhoto<=PhotoArray.length-1){ > if(PhotoArray[CurrPhoto].indexOf('*') > -1){ > DayPicURLReq = new URLRequest('images/' + > PhotoArray[CurrPhoto].substring(0,PhotoArray[CurrPhoto].length-1)); > > > myWinLoader.contentLoaderInfo.addEventListener(Event.COMPLETE,GalleryLoaded); > myWinLoader.load(DayPicURLReq); > }else{ > DayPicURLReq = new URLRequest('images/' + > PhotoArray[CurrPhoto].substring(0,PhotoArray[CurrPhoto].length)); > > > myWinLoader.contentLoaderInfo.addEventListener(Event.COMPLETE,GalleryLoaded); > myWinLoader.load(DayPicURLReq); > } > } > } > } > } > > -- > J.C. Berry, M.A. > UI Developer > 619.306.1712(m) > [email protected] > _______________________________________________ > Flashcoders mailing list > [email protected] > http://chattyfig.figleaf.com/mailman/listinfo/flashcoders > _______________________________________________ Flashcoders mailing list [email protected] http://chattyfig.figleaf.com/mailman/listinfo/flashcoders

