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