import mx.transitions.Tween; import mx.transitions.easing.*; import flash.filters.DropShadowFilter; import flash.filters.GlowFilter; //---------------------------------------------------------------+ pagetext._alpha = 0; leftarrow._alpha = 0; rightarrow._alpha = 0; wrapper1.idno = 1; wrapper2.idno = 2; wrapper3.idno = 3; wrapper4.idno = 4; wrapper5.idno = 5; wrapper6.idno = 6; wrapper1.thumb1_mc._alpha = 0; wrapper2.thumb2_mc._alpha = 0; wrapper3.thumb3_mc._alpha = 0; wrapper4.thumb4_mc._alpha = 0; wrapper5.thumb5_mc._alpha = 0; wrapper6.thumb6_mc._alpha = 0; scanningtext._alpha = 0; returnButton._alpha = 0; prevnextButton._alpha = 0; loadingThumbs._alpha = 0; //---------------------------------------------------------------+ // vars and other utility things var gallery_xml = new XML(); var URLArray:Array = new Array(); var picThumbArray:Array = new Array(); var picURLArray:Array = new Array(); var eventThumbURL; gallery_xml.ignoreWhite = true; var gallery; var eventArray; var timelineObj:MovieClip = this; var eventThumbsArray:Array = new Array(); var pages:Number; var currpage:Number = 1; leftarrow.arrowText._alpha = 0; rightarrow.arrowText._alpha = 0; var pageNumberGlow:GlowFilter = new GlowFilter(0xFFFFFF, 35, 20, 20, 7, 3); var elabelGlow:GlowFilter = new GlowFilter(0xFFFFFF, 15, 15, 25, 3, 2); var gf:GlowFilter = new GlowFilter(0xFFFFFF, .2, 10, 10, 2, 2, true); pagetext.filters = [pageNumberGlow]; leftarrow.filters = [pageNumberGlow]; rightarrow.filters = [pageNumberGlow]; // MCL and methods for event display var mcl_mcl = new MovieClipLoader(); mcl_mcl.onLoadProgress = function (targetMC, loadedBytes, totalBytes) { var id = targetMC._parent.idno; // var percentloaded = Math.ceil((loadedBytes / totalBytes) * 100); eval("elabel" + id).text = "Loading"; } mcl_mcl.onLoadStart = function (targetMC) { eval("elabel"+id)._visible = true; eval("elabel"+id)._alpha = 100; var id = targetMC._parent.idno; if (id >= 4) { eval("elabel" + id)._y = targetMC._parent._y + 113 + 3; } else { eval("elabel" + id)._y = targetMC._parent._y - 20; } } mcl_mcl.onLoadInit = function (targetMC) { var gfBX:Tween = new Tween(gf, "blurX", Elastic.easeOut, 10, 10, 1, true); var gfBY:Tween = new Tween(gf, "blurY", Elastic.easeOut, 5, 5, 1, true); var id = targetMC._parent.idno; eval("elabel" + id).filters = [elabelGlow]; eval("elabel" + id).text = eval("elabel" + id).nameProperty; gfBX.onMotionChanged = function() { targetMC._parent.filters = [gf]; } targetMC._parent.onRollOver = function() { gfBX.continueTo(20, 2); gfBY.continueTo(5, 2); } targetMC._parent.onRollOut = function() { gfBX.continueTo(10, 2); gfBY.continueTo(5, 2); } eval("elabel" + id)._alpha = 0; var label_tween:Tween = new Tween(eval("elabel" + id), "_x", Regular.easeOut, targetMC._parent._x + 150, targetMC._parent._x + 53, 20, false); var labelalpha_tween:Tween = new Tween(eval("elabel" + id), "_alpha", Strong.easeOut, 0, 100, 200, false); var alpha_tween:Tween = new Tween(targetMC, "_alpha", Regular.easeOut, 0, 100, 50, false); } mcl_mcl.onLoadError = function (targetMC, errorCode) { var id = targetMC._parent.idno; eval("elabel" + id)._alpha = 100; eval("text" + id).text = errorCode; } generateArrayofEventURLs = function() { for (i = 0; i < eventArray.length; i++) { URLArray[i] = eventArray[i].attributes.url; } } generateArrayofEventThumbs = function() { for (i = 0; i < eventArray.length; i++) { eventThumbsArray[i] = eventArray[i].attributes.thumb; } } flushContainers = function() { for (i = 1; i < 7; i++) { wrapper = timelineObj["wrapper" + i]; mcl_mcl.unloadClip(wrapper["thumb"+i+"_mc"]); trace(wrapper['thumb'+i+'_mc']); } } flushLabels = function() { for (i = 1; i < 7; i++) { timelineObj["elabel" + i].text = ""; } } displayPageNumber = function() { var currAlpha = pagetext._alpha; var currArrowsAlpha = leftarrow._alpha; var leftarrowalpha:Tween = new Tween(leftarrow, "_alpha", Regular.easeOut, 0, 100, 32, false); var rightarrow:Tween = new Tween(rightarrow, "_alpha", Regular.easeOut, 0, 100, 32, false); var pagetween:Tween = new Tween(pagetext, "_alpha", Regular.easeOut, currAlpha, 0, 16, false); pagetween.onMotionFinished = function() { pagetext.text = currpage; var pagetween:Tween = new Tween(pagetext, "_alpha", Regular.easeOut, 0, 100, 16, false); } } leftarrow.onRelease = function() { if (currpage != 1) { currpage--; loadPage(currpage); } } rightarrow.onRelease = function() { if (currpage < pages) { currpage++; loadPage(currpage); } } loadPage = function(page:Number) { flushContainers(); flushLabels(); var endIndex = (5 * page) + (page - 1); var beginningIndex = endIndex - 5; for (i = beginningIndex; i <= endIndex; i++) { if (i < eventArray.length) { var containerNumber = i%6+1; eval("elabel" + containerNumber).nameProperty = eventArray[i].attributes.name; wrapper = timelineObj["wrapper" + containerNumber]; mcl_mcl.loadClip(eventThumbsArray[i], wrapper["thumb"+containerNumber+"_mc"]); wrapper.eventNumber = i; wrapper.onRelease = function() { trace('starting to load pictures for an event, event#: ' + this.eventNumber); generateArrayofPictureThumbs(this.eventNumber); generateArrayofPictureURLs(this.eventNumber); generatePictureDisplay(this.eventNumber); } } } displayPageNumber(); } /* *************** METHODS FOR PICTURE STACK DISPLAY *************** ***************************************************************** */ // drop shadow var dropShadow:DropShadowFilter = new DropShadowFilter(3, 45, 0x000000, .15, 5, 5, 52, 3); // loads the thumbnails var thumb_mcl = new MovieClipLoader(); var stackMoveEnabled:Boolean = true; generatePictureDisplay = function(eventNo:Number) { // clear the stage clearStage(); // create the holder MC called imageStack timelineObj.createEmptyMovieClip("imageStack_mc", timelineObj.getNextHighestDepth()); // increase the alpha of the return button var returnTextFadeInWooo:Tween = new Tween(returnButton, "_alpha", Strong.easeOut, 0, 100, 128, false); // create the container MCs trace('loading these pictures: ' + picThumbArray); thumbInit(); for (var i = 0; i < picThumbArray.length; i++) { // created # of containers is okay - krilnon imageStack_mc.createEmptyMovieClip("picContainer"+i, i); imageStack_mc["picContainer"+i]._alpha = 0; thumb_mcl.loadClip(picThumbArray[i],imageStack_mc["picContainer"+i]); // picThumbArray[i] represents the relative URL of the image } // position the MCs imageStack_mc._x = 805; imageStack_mc._y = 255 - (83*picThumbArray.length)/2; imageStack_mc.picContainer0._y = 0; for (var i = 1; i < picThumbArray.length; i++) { imageStack_mc["picContainer"+i]._y = imageStack_mc["picContainer"+(i-1)]._y + 75 + 8; } } var count = 0; // this count lets the callback functions know when the first begins loading and when the last one is done loading thumbInit(); function thumbInit():void { thumb_mcl = new MovieClipLoader(); count = 0; thumb_mcl.onLoadStart = function (targetMC) { if (count == 0) { var loadTextFadeIn:Tween = new Tween(loadingThumbs, "_alpha", Strong.easeOut, 0, 100, 32, false); } } thumb_mcl.onLoadInit = function (targetMC) { if (count == picThumbArray.length - 1) { var loadTextFadeOut:Tween = new Tween(loadingThumbs, "_alpha", Strong.easeOut, 100, 0, 32, false); loadTextFadeOut.onMotionFinished = function() { // set the mask imageStack_mc.setMask(thumbMask_mc); for (var i = 0; i < picThumbArray.length; i++) { imageStack_mc["picContainer"+i].filters = [dropShadow]; imageStack_mc["picContainer"+i].urlindex = i; var thumbsFadeIn:Tween = new Tween(imageStack_mc["picContainer"+i], "_alpha", Strong.easeOut, 0, 100, 128, false); // ********************************************************************************************** // IF I ENABLE THIS, THE STACK APPEARS, BUT IT HAS THE OLD STACK ON IT! ITS LIKE // THE DELETE COMMAND DIDN'T WORK AT ALL. //*********************************************************************************************** var stackFadeIn:Tween = new Tween(imageStack_mc, "_alpha", Strong.easeOut, 0, 100, 128, false); //*********************************************************************************************** imageStack_mc["picContainer"+i].onRelease = function() { if (!currentlyTransitioning) { loadBigPicture(this); } } } } } count++; } } // move the stack based on mouse's position // create the listener and add it to Mouse var mouseListener:Object = new Object(); Mouse.addListener(mouseListener); // define function onEnterFrame = function() { if (stackMoveEnabled) { someConstant = 30; lastIndex = picThumbArray.length - 1; lastImage = imageStack_mc["picContainer"+lastIndex]; firstImage = imageStack_mc.picContainer0; if (_xmouse > 750 && _xmouse < 950) { if (_ymouse < 100) { imageStack_mc._y += (45 - imageStack_mc._y) / someConstant; } else if (_ymouse > 400) { var target = (540 - (83 * picThumbArray.length + 75)); imageStack_mc._y += (target - imageStack_mc._y) / someConstant; } } } } clearStage = function() { var cleanup:Tween; var cleanup5:Tween; var cleanup2:Tween = new Tween(leftarrow, "_alpha", Strong.easeOut, 100, 0, 32, false); var cleanup3:Tween = new Tween(rightarrow, "_alpha", Strong.easeOut, 100, 0, 32, false); var cleanup4:Tween = new Tween(pagetext, "_alpha", Strong.easeOut, 100, 0, 32, false); for (var i = 1; i <= 6; i++) { wrapper = timelineObj["wrapper"+i]; cleanup1 = new Tween(wrapper, "_alpha", Strong.easeOut, 100, 0, 32, false); cleanup5 = new Tween(eval("elabel"+i), "_alpha", Strong.easeOut, 100, 0, 32, false); } cleanup1.onMotionFinished = function() { for (var i = 1; i <= 6; i++) { wrapper = timelineObj["wrapper"+i]; mcl_mcl.unloadClip(wrapper["thumb"+i+"_mc"]); eval("elabel"+i)._visible = false; // #$^%$^@$$&**)(*&%^%$#$%^&*(*&^%$#$%^&*(*&^REMEMBER TO MAKE THEM VISIBLE AGAIN.****888 } } } generateArrayofPictureThumbs = function(eventNo:Number) { var pics = eventArray[eventNo].childNodes; picThumbArray = new Array(); for (i = 0; i < pics.length; i++) { picThumbArray[i] = URLArray[eventNo] + pics[i].attributes.thumb; } } generateArrayofPictureURLs = function(eventNo:Number) { var pics = eventArray[eventNo].childNodes; for ( i = 0; i < pics.length; i++) { picURLArray[i] = URLArray[eventNo] + pics[i].attributes.url; } } //************************************************************************ // These methods are for the loading of the BIG images. //************************************************************************ var bigPicture_mcl = new MovieClipLoader(); var currentlyTransitioning = false; var currthumb; var oldstackY; var oldPositionX; var oldPositionY; var finalY; loadBigPicture = function(thumbnail:MovieClip) { //undoPreviousLoad(); currthumb = thumbnail; stackMoveEnabled = false; oldstackY = imageStack_mc._y; oldPositionX = thumbnail._x; oldPositionY = thumbnail._y; finalY = (83 * picThumbArray.length) / 2 - 28; finalStackY = 250 - (83 * picThumbArray.length) / 2; var customTweenThing1:Tween = new Tween(imageStack_mc, "_y", Back.easeOut, oldstackY, finalStackY, 128, false); currentlyTransitioning = true; customTweenThing1.onMotionFinished = function() { thumbnail.swapDepths(imageStack_mc.getNextHighestDepth()); var customTweenThing2:Tween = new Tween(thumbnail, "_y", Strong.easeOut, oldPositionY, finalY, 64, false); var customTweenThing3:Tween = new Tween(thumbnail, "_x", Back.easeOut, oldPositionX, -40, 64, false); customTweenThing3.onMotionFinished = function() { bigPicture_mcl.loadClip(picURLArray[thumbnail.urlindex], bigContainer); } } } // move the thumb back, then re-enable clicking and scrolling of the stack moveThumbBack = function() { var fadeOutScanningText:Tween = new Tween(scanningtext, "_alpha", Regular.easeOut, 100, 0, 32, false); var moveThumbBackTweenX:Tween = new Tween(currthumb, "_x", Regular.easeOut, -40, oldPositionX, 32, false); var moveThumbBackTweenY:Tween = new Tween(currthumb, "_y", Regular.easeOut, finalY, oldPositionY, 32, false); moveThumbBackTweenY.onMotionFinished = function() { currentlyTransitioning = false; stackMoveEnabled = true; } } undoPreviousLoad = function() { currBigAlpha = bigContainer._alpha; var BigPicFadeOut:Tween = new Tween(bigContainer, "_alpha", Strong.easeOut, 100, 0, 32, false); } var idunno = true; var backforth:Tween; var count; var bigPicLoaded; var interval2; bigPicture_mcl.onLoadStart = function() { count = 0; scanner.swapDepths(timelineObj.getNextHighestDepth()); var fadeInScanningText:Tween = new Tween(scanningtext, "_alpha", Regular.easeOut, 0, 100, 32, false); scanningtext.swapDepths(timelineObj.getNextHighestDepth()); bigPicLoaded = false; interval2 = setInterval(backAndForth, 64*25); } backAndForth = function() { if (bigPicLoaded && count >= 2) { var currthumbx = currthumb._x; clearInterval(interval2); var backforth2:Tween = new Tween(currthumb, "_x", Strong.easeOut, currthumbx, -40, 3, true); backforth2.onMotionFinished = function() { displayBigPic(); moveThumbBack(); } } else { if (idunno) { backforth = new Tween(currthumb, "_x", Strong.easeOut, -40, -200, 3, true); idunno = false; } else { backforth = new Tween(currthumb, "_x", Strong.easeOut, -200, -40, 3, true); idunno = true; } count++; } } displayBigPic = function() { var BigPicFadeIn:Tween = new Tween(bigContainer, "_alpha", Strong.easeOut, 0, 100, 32, false); } bigPicture_mcl.onLoadInit = function() { bigPicLoaded = true; } //************************************************************************ // These methods are for returning to the events display. //************************************************************************ returnButton.onRelease = function() { undoPreviousLoad(); currloadingthumbs = loadingThumbs._alpha; currscanning = scanningtext._alpha; var cleanTween1:Tween = new Tween(imageStack_mc, "_alpha", Strong.easeOut, 100, 0, 128, false); var cleanTween2:Tween = new Tween(scanningtext, "_alpha", Strong.easeOut, currscanning, 0, 128, false); var cleanTween3:Tween = new Tween(loadingThumbs, "_alpha", Strong.easeOut, currloadingthumbs, 0, 128, false); var cleanTween4:Tween = new Tween(returnButton, "_alpha", Strong.easeOut, 100, 0, 128, false); cleanTween1.onMotionFinished = function() { for (var i = 0; i < picThumbArray.length; i++) { imageStack_mc["picContainer"+i].removeMovieClip(); delete imageStack_mc["picContainer"+i]; } imageStack_mc.removeMovieClip(); delete imageStack_mc; trace(imageStack_mc); wrapper1._alpha = 100; wrapper2._alpha = 100; wrapper3._alpha = 100; wrapper4._alpha = 100; wrapper5._alpha = 100; wrapper6._alpha = 100; for (var i = 1; i <= 6; i++) { eval("elabel"+i)._visible = true; } loadPage(1); } } //************************************************************************ // This is what happens in the beginning =) //************************************************************************ gallery_xml.onLoad = function(success){ if (success) { gallery = gallery_xml.firstChild; eventArray = gallery.childNodes; generateArrayofEventThumbs(); generateArrayofEventURLs(); pages = Math.ceil(eventArray.length / 6); loadPage(1); } else { text1.text = "XML Load Failed"; text2.text = "XML Load Failed"; text3.text = "XML Load Failed"; text4.text = "XML Load Failed"; text5.text = "XML Load Failed"; text6.text = "XML Load Failed"; } } gallery_xml.load("piclist.xml");