Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import mx.transitions.*;
- import mx.transitions.easing.*;
- import flash.filters.BlurFilter;
- objectName = "object"; // this should reflect what you want your objects named (ie - object1, object2, etc.)
- objectMc = "objectMc"; // this should be the linkage identifier for your object movie clip
- //myXML = "objects.xml"; //path to your XML document
- //imageURL = "images/"; //path to image folder
- scaleFactor = 70; // higher number creates more range of scale
- blurFactor = 100; // higher numbers create more range of blur
- shiftIndex = 30; //This number controls the range of movement of the objects, *LOWER* numbers create MORE movement
- // the two values below control the center point
- // for which objects movement is based upon
- centerX = Stage.width/2;
- centerY = Stage.height/2;
- // you can customize this function to do whatever you wish your objects
- // to do when clicked on (after being brought to the front).
- function myFunction(){
- myAlert = attachMovie("alertBox","alertBox",1000,{_x:Stage.width/2,_y:Stage.height/2});
- myAlert.onRelease = function(){
- removeMovieClip(this);
- }
- }
- function getShiftValue(myDepth:Number):Object {
- var shiftObject:Object = new Object();
- shiftObject.X = ((_xmouse - centerX)/shiftIndex)*(myDepth+1);
- shiftObject.Y = ((_ymouse - centerY)/shiftIndex)*(myDepth+1);
- return shiftObject;
- }
- var index = 20;
- setup(index);
- var intervalId = setInterval(removeObjectMc,1000);
- function setup(total,i)
- {
- var objectHolder:MovieClip = this.createEmptyMovieClip("objectHolder"+i,100+i);
- object = xml.firstChild.nextSibling.childNodes;
- totalObjects = total;
- trace("Total objects: "+totalObjects);
- for(var i=0; i<12; i++){ setup(20, i);}
- {
- var objectMc:MovieClip = objectHolder.attachMovie(linkageID,objectName+i,i);
- objectMc.image = object[i].attributes.image;
- objectMc.id = i;
- objectMc.isClicked = false;
- objectMc.isFront = (i == totalObjects - 1);
- objectMc._x = Math.floor(object[i].attributes.x);
- objectMc._y = Math.floor(object[i].attributes.y);
- objectMc.xpos = objectMc._x;
- objectMc.ypos = objectMc._y;
- applyBlur(objectMc,i);
- applyScale(objectMc,i);
- var imageHolder:MovieClip = objectMc.createEmptyMovieClip("imageHolder",10);
- var myImgLoader:MovieClipLoader = new MovieClipLoader();
- var myImgListener:Object = new Object();
- myImgListener.onLoadInit=function(target_mc)
- {
- target_mc._x = (target_mc._parent._width - target_mc._width)/2
- target_mc._y = (target_mc._parent._height - target_mc._height)/2
- }
- myImgLoader.addListener(myImgListener);
- myImgLoader.loadClip(imageURL+objectMc.image,imageHolder);
- }
- }
- function removeObjectMc()
- {
- objectHolder[objectName+index].removeMovieClip();
- if(index==0)
- clearInterval(intervalId)
- else
- index--;
- }
- function depthBlurShift(){ //corrects depth for all profiles
- for(m=0;m<totalObjects;m++){
- myMc = eval("objectHolder."+objectName+m);
- myDepth = myMc.getDepth();
- applyBlur(myMc,myDepth);
- applyScale(myMc,myDepth);
- boundaryCheck(myMc);
- }
- }
- function getMcAtDepth(targetDepth:Number):MovieClip {
- for(d=0;d<totalObjects;d++){
- theObj = eval("objectHolder."+objectName+d);
- theDepth = theObj.getDepth();
- if(theDepth == targetDepth){
- return theObj;
- }
- }
- }
- function objectShift(){
- for(k=0;k<totalObjects;k++){
- myMc = eval("objectHolder."+objectName+k);
- if(!myMc.isClicked){
- depthVar = myMc.getDepth();
- shiftObj = getShiftValue(depthVar);
- myMc._x = Math.floor(myMc.xpos - shiftObj.X) ;
- myMc._y = Math.floor(myMc.ypos - shiftObj.Y) ;
- }
- }
- }
- function applyScale(theMc:MovieClip,myDepth:Number){
- //apply scale
- newXscale = 100-(((totalObjects-1)-myDepth)*scaleFactor/10);
- newYscale = 100-(((totalObjects-1)-myDepth)*scaleFactor/10);
- new Tween(theMc,"_xscale",mx.transitions.easing.Elastic.easeOut,theMc._xscale,newXscale,.5,true);
- new Tween(theMc,"_yscale",mx.transitions.easing.Elastic.easeOut,theMc._yscale,newYscale,.5,true);
- }
- function applyBlur(theMc:MovieClip,myDepth:Number){ //sets appropriate blur according to depth var
- //apply blur filter
- var blurX:Number = ((totalObjects-1)-myDepth)*(blurFactor/100);
- var blurY:Number = ((totalObjects-1)-myDepth)*(blurFactor/100);
- var quality:Number = 2;
- var filter:BlurFilter = new BlurFilter(blurX, blurY, quality);
- var filterArray:Array = new Array();
- filterArray.push(filter);
- theMc.filters = filterArray;
- }
- function boundaryCheck(theMc:MovieClip){
- // These conditionals keep all profiles reachable on the stage in case they are dragged too far.
- if(theMc.xpos < 0){
- theMc.xpos = 50;
- }
- if(theMc.xpos > Stage.width){
- theMc.xpos = Stage.width - 50;
- }
- if(theMc.ypos < 50){
- theMc.ypos = 100;
- }
- if(theMc.ypos > Stage.height){
- theMc.ypos = Stage.height - 50;
- }
- }
- attachMovie("randomBtn","randomBtn",201,{_x:150,_y:25});
- function randomize(){
- for(r=0;r<totalObjects;r++){
- myMc = eval("objectHolder."+objectName+r);
- newX = Math.floor((Math.random() * (Stage.width - 50)+100));
- newY = Math.floor((Math.random() * (Stage.height - 50)+100));
- mcDepth = myMc.getDepth();
- myShift = getShiftValue(mcDepth);
- myMc.xpos = newX + myShift.X;
- myMc.ypos = newY + myShift.Y;
- new Tween(myMc,"_x",mx.transitions.easing.Regular.easeOut,myMc._x,newX,.25,true);
- new Tween(myMc,"_y",mx.transitions.easing.Regular.easeOut,myMc._y,newY,.25,true);
- }
- }
- randomBtn.onRelease = function(){
- randomize();
- }
- var mouseListener:Object = new Object();
- Mouse.addListener(mouseListener);
- mouseListener.onMouseMove = function() {
- objectShift();
- };
- Stage.scaleMode = "noScale";
- attachMovie("fullScreenBtn","fullScreenBtn",200,{_x:25,_y:25});
- function buttonPosition(){
- fullScreenBtn._x = 10;
- fullScreenBtn._y = 10;
- randomBtn._x = 120;
- randomBtn._y = 10;
- }
- fullScreenBtn.onRelease = function(){
- if(Stage["displayState"] == "normal"){
- Stage["displayState"] = "fullScreen";
- }else{
- Stage["displayState"] = "normal";
- }
- }
- var stageListener:Object = {};
- stageListener.onFullScreen = function(isFullscreen:Boolean){
- if(isFullscreen){
- trace("entered full-screen mode");
- }else{
- trace("exited full-screen mode");
- }
- buttonPosition();
- }
- Stage.addListener(stageListener);
- var xml:XML = new XML();
- xml.ignoreWhite = true;
- xml.onLoad = function(success:Boolean){
- if(success){
- createObjects();
- trace("XML loaded successfully");
- } else {
- trace("XML error");
- }
- }
- xml.load(myXML);
Add Comment
Please, Sign In to add comment