Thread: PhotoNavigator
View Single Post

  #49 (permalink)  
Old 28-07-08, 13:34
dadoge dadoge is offline
Member
 
Join Date: Jul 2008
Posts: 30
Rep Power: 0
dadoge is on a distinguished road
Re: PhotoNavigator

come non detto risolto il problema (comincio a gestirmela decentemente)...allego sorgente...

in pratica ho aggiunto un

preview_mc.addEventListener(Event.ENTER_FRAME,draw Rectangle);

subito dopo il CreatePreview ed in tale funzione aggiungo un offset per spostare il rettangolino

preview_mc.x=offset_posx+thumb_mc.x;
preview_mc.y=offset_posy+thumb_mc.y;

avendo prima dichiarato la posizione su cui voglio spostarmi

private var offset_posx:Number=110;
private var offset_posy:Number=70;


...e come d'incanto all'avvio dell'animazione si sposta rettangolino e immagine zoommata...

Ciao

Code:
 
/*
 *************************************
 * PhotoNavigator    
 * Flash CS3 Blog con Tutorial e risorse per Flash cs3 e Actionscript 3.0         
 * © Author: Filippo Lughi           
 * version 1.0                       
 *************************************
 */
package org.flepstudio
{
 import flash.display.*;
 import flash.events.*;
 import flash.net.*;
 import flash.geom.Rectangle;
 import caurina.transitions.Tweener;
 
 public class PhotoNavigator extends MovieClip
 {
  private var pic_path:String;
 
  private var request:URLRequest;
 
  private var loader:Loader;
 
  private var father:MovieClip;
  private var mask_mc:MovieClip;
  private var thumb_mc:MovieClip;
  private var preview_mc:MovieClip;
 
  private var thumb_map:BitmapData;
 
  private var ratio:Number=12;
  private var offsetX:Number;
  private var offsetY:Number;
 
  private var offset_posx:Number=110;
  private var offset_posy:Number=70;
 
 
  public function PhotoNavigator(s:String)
  {
   pic_path=s;
   addEventListener(Event.ADDED_TO_STAGE,init);
  }
 
  private function init(evt:Event):void
  {
   removeEventListener(Event.ADDED_TO_STAGE,init);
 
   father=parent as MovieClip;
 
   stage.frameRate=31;
 
   loadPicture();
  }
 
  private function loadPicture():void
  {
   request=new URLRequest();
   request.url=pic_path;
 
   loader=new Loader();
   loader.contentLoaderInfo.addEventListener(Event.OPEN,setOpen);
   loader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS,setProg);
   loader.contentLoaderInfo.addEventListener(Event.COMPLETE,setComplete);
   loader.load(request);
  }
 
  private function setOpen(evt:Event):void
  {
 
  }
 
  private function setProg(evt:ProgressEvent):void
  {
   var percent:uint=(evt.bytesLoaded/evt.bytesTotal)*100;
   father.preloader_mc.loader_txt.text=percent.toString()+' %';
  }
 
  private function setComplete(evt:Event):void
  {
   father.preloader_mc.stop();
   father.removeChild(father.preloader_mc);
 
   var bitmap:Bitmap=loader.content as Bitmap;
   bitmap.smoothing=true;
 
   createThumb();
   createMask();
   addAll();
   createPreview();
   preview_mc.addEventListener(Event.ENTER_FRAME,drawRectangle);
 
 
 
   addListeners();
  }
 
  private function createThumb():void
  {
   thumb_map=new BitmapData(loader.width,loader.height,true,0xFFFFFFFF);
   thumb_map.draw(loader);
 
   var thumb:Bitmap=new Bitmap(thumb_map);
   thumb_mc=new MovieClip();
   thumb_mc.addChild(thumb);
   thumb_mc.width=loader.width/ratio;
   thumb_mc.height=loader.height/ratio;
  }
 
  private function createMask():void
  {
   mask_mc=new MovieClip();
   mask_mc.graphics.beginFill(0x33FFFF,.3);
   mask_mc.graphics.drawRect(0,0,(loader.width/ratio)*2,(loader.height/ratio)*2);
   mask_mc.graphics.endFill();
  }
 
  private function addAll():void
  {
   mask_mc.x=20;
   mask_mc.y=20;
 
   offsetX=mask_mc.x;
   offsetY=mask_mc.y;
 
   loader.x=mask_mc.x;
   loader.y=mask_mc.y;
   thumb_mc.x=mask_mc.x+mask_mc.width+20;
   thumb_mc.y=20;
 
   addChild(thumb_mc);
   addChild(loader);
   addChild(mask_mc);
   loader.mask=mask_mc;
  }
 
  private function createPreview():void
  {
   preview_mc=new Preview;
   preview_mc.width=Math.round(thumb_mc.width/ratio)*2;
   preview_mc.height=Math.round(thumb_mc.height/ratio)*2;
//   preview_mc.x=thumb_mc.x;
//   preview_mc.y=thumb_mc.y;
 
   preview_mc.x=offset_posx+thumb_mc.x;
   preview_mc.y=offset_posy+thumb_mc.y;
 
   addChild(preview_mc);
  }
 
  private function addListeners():void
  {
   preview_mc.mouseChildren=false;
   preview_mc.buttonMode=true;
   preview_mc.addEventListener(MouseEvent.MOUSE_DOWN,setThumbOver);
   preview_mc.addEventListener(MouseEvent.MOUSE_UP,setThumbOut);
   stage.addEventListener(MouseEvent.MOUSE_UP,setThumbOut);
  }
 
  private function setThumbOver(evt:MouseEvent):void
  {
   var rect:Rectangle=new Rectangle(thumb_mc.x,thumb_mc.y,thumb_mc.width-preview_mc.width,thumb_mc.height-preview_mc.height)
   evt.target.startDrag(false,rect);
   evt.target.addEventListener(Event.ENTER_FRAME,drawRectangle);
  }
 
  private function setThumbOut(evt:MouseEvent):void
  {
   preview_mc.stopDrag();
   preview_mc.removeEventListener(Event.ENTER_FRAME,drawRectangle);
  }
 
  private function drawRectangle(evt:Event):void
  {
   var t:Number=thumb_mc.width-evt.target.width;
   var p:Number=evt.target.x-thumb_mc.x;
   var percentage:Number=Math.ceil((p/t)*100);
   var movingX:Number=offsetX+(percentage/100)*(mask_mc.width-loader.width);
   Tweener.addTween(loader,{x:movingX,time:.2,transition:"linear"});
 
   var t2:Number=thumb_mc.height-evt.target.height;
   var p2:Number=evt.target.y-thumb_mc.y;
   var percentage2:Number=Math.ceil((p2/t2)*100);
   var movingY:Number=offsetY+(percentage2/100)*(mask_mc.height-loader.height);
   Tweener.addTween(loader,{y:movingY,time:.2,transition:"linear"});
 
  }
 }
}
Reply With Quote