A Flash Developer Resource Site

Results 1 to 2 of 2

Thread: Scrolling dynamic XML Gallery - AS3

Threaded View

  1. #2
    Junior Member
    Join Date
    Sep 2009
    Posts
    18

    Code

    var xmlLoader:URLLoader = new URLLoader();
    var xmlData:XML = new XML();
    xmlLoader.addEventListener(Event.COMPLETE, LoadXML);

    var xmlPath:String = "image-scroller.xml";
    xmlLoader.load(new URLRequest(xmlPath));
    trace("loading xml from: " + xmlPath);

    function LoadXML(e:Event):void {
    trace("xml loading complete");
    xmlData = new XML(e.target.data);
    trace(xmlData.image);
    buildScroller(xmlData.image);
    }


    var scroller:MovieClip = new MovieClip();
    scroller.y = 40;
    scroller.x = padding;
    var speed:Number;
    var padding:Number = 25;
    var thumbFadeOut:Number = .2;
    var thumbFadeIn:Number = 1;
    var thumbSmall:Number = 1;
    var thumbLarge:Number = 1.075;
    this.addChild(scroller);
    trace("Scroller");

    function buildScroller(imageList:XMLList):void{
    trace("build Scroller");
    for (var item:uint = 0; item < imageList.length(); item++ ) {
    var thisOne:MovieClip = new MovieClip();

    var blackBox:Sprite = new Sprite();
    blackBox.graphics.beginFill(0x000000);
    blackBox.graphics.drawRect( 45, 0, 50, 50);
    blackBox.alpha = thumbFadeOut;
    thisOne.addChild(blackBox);
    thisOne.blackBox = blackBox;

    thisOne.x = thisOne.myx = (50 + padding) * item;
    thisOne.y = 400;
    thisOne.itemNum = item;
    thisOne.title = imageList[item].attribute("title");
    thisOne.link = imageList[item].attribute("url");
    thisOne.src = imageList[item].attribute("src");

    var thisThumb:Sprite = new Sprite();
    var ldr:Loader = new Loader();
    var urlReq:URLRequest = new URLRequest(thisOne.src);
    trace("loading thumbnail "+item+" into Scroller: " + thisOne.src);
    ldr.load(urlReq);
    ldr.contentLoaderInfo.addEventListener(Event.COMPL ETE, completeHandler);
    ldr.contentLoaderInfo.addEventListener(IOErrorEven t.IO_ERROR, errorHandler);
    thisThumb.addChild(ldr);
    thisOne.addChild(thisThumb);
    thisOne.buttonMode = true;
    thisOne.addEventListener(MouseEvent.MOUSE_OVER, overScrollerItem);
    thisOne.addEventListener(MouseEvent.MOUSE_OUT, outScrollerItem);
    thisOne.addEventListener(MouseEvent.CLICK, clickScrollerItem);

    scroller.addChild(thisOne);
    }

    scroller.addEventListener(Event.ENTER_FRAME, moveScrollerThumbs);
    trace("termination of build scroller");
    }

    function overScrollerItem(e:MouseEvent):void {
    Tweener.addTween(e.currentTarget, { scaleX:thumbLarge, scaleY:thumbLarge, x:e.currentTarget.myx - e.currentTarget.width * Math.abs(thumbSmall - thumbLarge)/2,y:400,y: -e.currentTarget.width * Math.abs(thumbSmall - thumbLarge)/2, time:1 } );
    Tweener.addTween(e.currentTarget.blackBox, { alpha:thumbFadeIn, time: 1 } );
    }
    function outScrollerItem(e:MouseEvent):void {
    trace("out" + e.currentTarget.name);
    Tweener.addTween(e.currentTarget, { scaleX:thumbSmall, scaleY:thumbSmall, x:e.currentTarget.myx, y:0, time:1 } );
    Tweener.addTween(e.currentTarget.blackBox, { alpha:thumbFadeOut, time: 1 } );
    }
    function clickScrollerItem(e:MouseEvent):void {
    var urlRequest:URLRequest = new URLRequest(e.currentTarget.link);
    try {
    navigateToURL(urlRequest);
    }
    catch (e:Error) {
    trace(e);
    }
    }
    function completeHandler(e:Event):void {

    resizeMe(e.target.loader.parent, 140, 105, true, true, false);
    Tweener.addTween(e.target.loader.parent.parent, { alpha:1, time: .5 } );
    }
    function errorHandler(e:IOErrorEvent):void {
    trace("thumbnail error="+e);
    }



    function resizeMe(mcisplayObject, maxW:Number, maxH:Number=0, constrainProportions:Boolean=true, centerHor:Boolean=true, centerVert:Boolean=true):void{
    maxH = maxH == 0 ? maxW : maxH;
    mc.width = 50;
    mc.height = 50;
    if (constrainProportions) {
    mc.scaleX < mc.scaleY ? mc.scaleY = mc.scaleX : mc.scaleX = mc.scaleY;
    }
    if (centerHor) {
    mc.x = (maxW - mc.width) / 2;
    }
    if (centerVert){
    mc.y = (maxH - mc.height) / 2;
    }
    }

    function moveScrollerThumbs(e:Event):void {
    if ( mouseY > scroller.y && mouseY < scroller.y + scroller.height) {//vertically over scroller
    if (mouseX < stage.stageWidth/2 - padding*2 && mouseX > 0) {//left of stage explicitly
    speed = -(mouseX - (stage.stageWidth/2 - padding*2)) / 8;
    }
    else if (mouseX > stage.stageWidth/2 + padding*2 && mouseX < stage.stageWidth) {//right of stage explicitly
    speed = -(mouseX - (stage.stageWidth/2 + padding*2)) / 8;
    }
    else {
    speed = 0;
    }
    scroller.x += speed;

    //scroller limits
    if (scroller.x < -scroller.width + stage.stageWidth - padding) { //if scrolled too far left
    scroller.x = -scroller.width + stage.stageWidth - padding;
    }
    else if (scroller.x > padding) { //if scrolled to far right
    scroller.x = padding;
    }
    }
    }
    Last edited by Contact; 07-29-2011 at 05:08 PM.

Tags for this Thread

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  




Click Here to Expand Forum to Full Width

HTML5 Development Center