Hi,
Im starting to make the change from AS2.0 to AS3.0 I make most of my stuff OOP so I thought I would breeze throught it I thought I understood the basics of the display list so I started making an XML driven gallery I have everything displaying and working fine.
My problem is when there is a section already open how to remove the hodler clip ‘myImageGalleryContainer’ so that the thumb nails disappear and you can then open another section. Well thats the way I would do it in AS2.0.
Im pretty sure that the code is messy and ugly and any advice would be much appreciated as would any help you can give.
package {
import flash.net.URLLoader;
import flash.display.*;
import flash.net.URLRequest;
import flash.events.*;
import flash.events.Event;
import flash.events.ProgressEvent;
import flash.events.MouseEvent;
import flash.display.MovieClip;
import flash.display.DisplayObject;
import flash.display.Stage;
import flash.text.TextField;
import flash.text.TextFieldAutoSize;
import flash.text.TextFormat;
import flash.net.FileReference;
dynamic public class mainApp extends MovieClip {;
public static var xmlData:XML = new XML;
public static var myURL:String = "galleryXML.xml";
public static var mySection:Number=0;
public static var myContainer:container = new container();
public static var mySectionNumber:Number;
public static var sectionNum:String;
public static var myImage:Number;
public static var myPreLoaderClip;
public static var myImageButton;
public static var stephensHelper;
public static var pictureClip;
public static var imageGalleryIsOpen:Boolean = false;
trace('doing stuff');
function mainApp() {
getXML();
addChild(myContainer);
}
public static function getXML() {
var xmlLoader:URLLoader = new URLLoader();
xmlLoader.addEventListener(Event.COMPLETE,loadXML);
xmlLoader.load(new URLRequest(myURL));
}
public static function loadXML(e:Event) {
xmlData = new XML(e.target.data);
var myMenuSection:MovieClip = new MovieClip();
myContainer.addChild(myMenuSection);
var menuItems:Number=xmlData.*.length();
for (var m:Number = 0; m<menuItems; m++) {
var myMainButton:mainButton = new mainButton();
myMainButton.name = 'menuItem'+m;
myMenuSection.addChild(myMainButton);
myMenuSection.getChildByName('menuItem'+m).y = m*(30)+5;
var myLabelPosMov = myMenuSection.getChildByName('menuItem'+m);
var myLabel:TextField = new TextField();
myMenuSection.addChild(myLabel);
myLabel.text=xmlData.section[m].@name;
myLabel.y = myMenuSection.getChildByName('menuItem'+m).y;
myLabel.x = myMenuSection.getChildByName('menuItem'+m).x+3;
myLabel.selectable = false;
myLabel.mouseEnabled= false;
myMenuSection.y = 400-myMenuSection.height;
myMainButton.addEventListener(MouseEvent.CLICK, imageButton);
}
}
public static function imageButton(e:Event) {
if (myImageGalleryContainer!=null) {
myContainer.removeChild(myImageGalleryContainer);
trace('REMOVE');
} else {
}
var myImageGalleryContainer:MovieClip = new MovieClip();
myImageGalleryContainer.name='myImageHolder';
var imageButtonCounter:Number = 0;
var Ycounter:Number = 0;
var Xcounter:Number = 0;
trace('Have we been here before: '+(myImageGalleryContainer.numChildren));
trace('e: '+e.target.name);
var sectionNumText:String = e.target.name;
sectionNum = String(sectionNumText.substring(8, 9));
trace('sectionNum: ' + sectionNum);
myContainer.addChild(myImageGalleryContainer);
trace(myContainer.getChildByName('myImageHolder'));
var mySectionLength:Number = xmlData.section[sectionNum].*.length();
for (var i:Number =0; i <mySectionLength; i++) {
var imageBtn:image_btn = new image_btn();
var pictLdr:Loader = new Loader();
var pictURL:String =xmlData.section.image*.thumb;
var pictURLReq:URLRequest = new URLRequest(pictURL);
pictLdr.load(pictURLReq);
myImageButton = myImageGalleryContainer.getChildByName('myButton'+i);
var myTest:MovieClip = new MovieClip();
myTest.addChild(pictLdr);
myImageGalleryContainer.addChild(imageBtn);
imageBtn.addChild(myTest);
imageBtn.name='myButton'+i;
myImageGalleryContainer.getChildByName('myButton'+i).x = Xcounter*40;
myImageGalleryContainer.getChildByName('myButton'+i).y = Ycounter*40;
imageButtonCounter++;
Xcounter++;
myImageGalleryContainer.y = 50;
if (imageButtonCounter==4) {
imageButtonCounter=0;
Xcounter=0;
Ycounter++;
}
stephensHelper = myImageGalleryContainer.getChildByName('myButton'+i);
trace('how many children? '+myContainer.removeChild(myContainer.getChildByName('imageHolder')));
myContainer.removeChild(myContainer.getChildByName('imageHolder'));
//myContainer.removeChild(myContainer.getChildByName('imageHolder'))
imageBtn.addEventListener(MouseEvent.CLICK,myImageButtonPressed);
}
}
public static function myImageButtonPressed(e:Event) {
var picLoader:Loader= new Loader();
var preLoaderHolder:MovieClip = new MovieClip();
preLoaderHolder.name='preLoaderHolder';
myContainer.addChild(preLoaderHolder);
var myPreloader:preLoader = new preLoader();
myPreloader.name='picPreLoader';
preLoaderHolder.x = ((myContainer.stage.stageWidth)/2)-(preLoaderHolder.width/2)-200;
preLoaderHolder.y = ((myContainer.stage.stageHeight)/2);
trace('preLoaderHolder.x: '+preLoaderHolder.x);
preLoaderHolder.addChild(myPreloader);
//trace('!"!"!"!"!: ' + preLoaderHolder.getChildAt(0));
myPreLoaderClip = preLoaderHolder.getChildAt(0);
var picture:MovieClip = new MovieClip();
picLoader.load(new URLRequest('myPic1.jpg'));
picLoader.contentLoaderInfo.addEventListener(Event.COMPLETE,picLoaded);
picLoader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS,showProgress);
}
public static function showProgress(evt:Event) {
//trace('LOADING...'+evt.target.bytesLoaded);
var loadPercent:Number = (evt.target.bytesLoaded/evt.target.bytesTotal);
var what:DisplayObject = myContainer.getChildByName('preLoaderHolder');
//trace('loader: '+ myContainer.preLoaderHolder.getChildByName('picPreLoader'));
trace('loader: '+ myPreLoaderClip.scaleX);
myPreLoaderClip.scaleX = loadPercent;
//myPreloaderHolder.scaleX = 0.15;
trace('%: '+loadPercent);
}
public static function picLoaded(evt:Event) {
var pictureHolder:MovieClip= new MovieClip();
myContainer.addChild(pictureHolder);
pictureHolder.addChild(evt.target.content);
pictureClip = pictureHolder;
repositionImage();
}
public static function repositionImage() {
trace('asdfa: ' + pictureClip.height);
pictureClip.y = (myContainer.stage.stageHeight/2)-(pictureClip.height/2);
pictureClip.x = ((myContainer.stage.stageWidth-200)/2)-(pictureClip.width/2)+200;
}
}
}