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"});
}
}
}