1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110
| package
{
import flash.net.URLRequest;
import flash.display.Loader;
import flash.events.Event;
import flash.events.ProgressEvent;
import flash.events.MouseEvent;
import flash.display.MovieClip;
import flash.display.Stage;
import flash.display.DisplayObject;
import flash.display.Sprite;
/**
* ...
* @author Victor Sabatier
*/
public class CreateAnim
{
/* attributs de la classe */
private var frameTo:Number; // numéro de la frame courante affichée
private var oldFrameNumber:Number; //la position dans le clip au moment du premier click
private var oldMouseXDown:Number; //la position de la souris quand elle clique
private var isMouseDown:Boolean;
private var clip360:MovieClip; // movieClip principal
private var nameSWF:String; // nom du swf loadé
private var mLoader:Loader;
private var mRequest:URLRequest;
private var monTableau:Array = ["file:///C:/Users/kujjuk/Desktop/pack-ouvert-320x320.jpg","file:///C:/Users/kujjuk/Desktop/imgres.jpg"];
/* constructeur de la classe */
public function CreateAnim(stage:Object,_frameTo:Number,_oldFrameNumber:Number,
_oldMouseXDown:Number,_isMouseDown:Boolean)
{
frameTo=_frameTo;
oldFrameNumber=_oldFrameNumber;
oldMouseXDown=_oldMouseXDown;
isMouseDown=_isMouseDown;
clip360 = new MovieClip();
stage.addChild(clip360);
}
public function startLoad(i:Number):void
{
mLoader = new Loader();
clip360.addChild(mLoader);
mRequest = new URLRequest(monTableau[i]);
mLoader.load(mRequest);
mLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, controlCLip);
}
public function controlCLip(event:Event):void
{
//trace("test")
clip360.addFrameScript(clip360.totalFrames - 1, stopFunc);
clip360.buttonMode = true;
trace(clip360.totalFrames);
clip360.useHandCursor = true;
clip360.addEventListener(Event.ENTER_FRAME, goTo);
clip360.addEventListener(MouseEvent.MOUSE_DOWN, onMouseDOWN);
clip360.addEventListener(MouseEvent.MOUSE_UP, onMouseUP);
}
//methode appelée dès que la souris est sur la fenêtre
private function goTo(e:Event):void
{
//check if the mouse is still inside the frame
if(!(clip360.mouseX < clip360.stage.stageWidth && clip360.mouseX > 0 && clip360.mouseY < clip360.stage.stageHeight && clip360.mouseY > 0)){
isMouseDown = false;
}
if(isMouseDown){
var percentageMoved:Number = (clip360.mouseX-oldMouseXDown)/clip360.stage.stageWidth;
frameTo = oldFrameNumber + (int)( -3 * percentageMoved * clip360.totalFrames);
trace(frameTo)
//check if frameTo is still in the bounds. Otherwise, start over to have a continous rolling effect :)
while(frameTo < 1){
frameTo = clip360.totalFrames + frameTo;
}
while(frameTo > clip360.totalFrames){
frameTo = frameTo - clip360.totalFrames;
}
clip360.gotoAndStop(frameTo);
}
}
private function onMouseDOWN(e:Event):void
{
trace("mouseDOWN");
oldMouseXDown = clip360.mouseX; //on la sauvegarde pour savoir de combien elle a bougé, ainsi calculer la nouvelle frame affichée
oldFrameNumber = clip360.currentFrame;
clip360.stop(); //when window appears, we do a first loop. If the user clicks before the end of the loop, we stop the loop
isMouseDown=true;
}
private function onMouseUP(e:Event):void
{
trace("mouseUP");
isMouseDown=false;
}
private function stopFunc():void{
clip360.gotoAndStop(1);
}
}
} |
Partager