User Tools

Site Tools


script_animation_shrink

====== Differences ====== This shows you the differences between two versions of the page.

Link to this comparison view

Next revision
Previous revision
script_animation_shrink [2014/05/18 17:36]
lm13 created
script_animation_shrink [2014/09/24 16:10] (current)
lm13 [About the script]
Line 1: Line 1:
 ====== About the script ====== ====== About the script ======
-  * Purpose : These scripts ​will give you a beautiful page transition animation and an optional horizontal & vertical page loop+  * Purpose : This script ​will give you a beautiful page transition animation and an optional horizontal & vertical page loop
   * Author : [[https://​plus.google.com/​+LukasMorawietz|LM13]]   * Author : [[https://​plus.google.com/​+LukasMorawietz|LM13]]
-  * Current Version : 1.0 +  * Current Version : 2.0 
-  * Link: ...+  * Link: https://​plus.google.com/​115366157037831519359/​posts/​QHC7KRy8tVg 
 +  * Video : https://​plus.google.com/​115366157037831519359/​posts/​4Ktw58WRMji 
 +  * Download avialable! (Check repository)
  
 ====== Changelog ====== ====== Changelog ======
   * Version 1.0 (18/​5/​2014):​ initial release in wiki   * Version 1.0 (18/​5/​2014):​ initial release in wiki
 +  * Version 2.0 (24/​7/​2014):​ standalone, reworked structure, fix for pre-scaled items
  
 ====== How to use the script ====== ====== How to use the script ======
-  * Set the main script to the positionchanged event of your container+  * Set the script to the positionchanged event of your container
   * enable infinte scrolling if you want a page loop, disable it if you don't want to loop through pages   * enable infinte scrolling if you want a page loop, disable it if you don't want to loop through pages
-  * in this container: create a shortcut to the toggle ​script ​and set up toggle sripts configuration+  * in this container: create a shortcut to the script
   * one click on the shortcut will enable the animation, clicking again will disable the animation. ​   * one click on the shortcut will enable the animation, clicking again will disable the animation. ​
   * BE SURE TO DISABLE THE ANIMATION BEFORE YOU EDIT, MOVE OR ADD ITEMS!   * BE SURE TO DISABLE THE ANIMATION BEFORE YOU EDIT, MOVE OR ADD ITEMS!
 +
 +====== Issues and Hints ======
 +  * 1-direction pinned items are not supported
  
 //please report all bugs in the g+ community!//​ //please report all bugs in the g+ community!//​
  
-====== ​Main Script ======+====== Script ====== 
 +<sxh javascript;>​var e=LL.getEvent();​ 
 +var d=e.getContainer();​ 
 +var cont=JSON.parse(d.getTag()||"​null"​);​ 
 +var items=d.getItems();​ 
 +var dwidth=d.getWidth();​ 
 +var dheight=d.getHeight();​ 
 + 
 +if(e.getSource()!="​C_POSITION_CHANGED"​) 
 +
 + if(cont==null)cont=new Object(); 
 + var box=d.getBoundingBox();​ 
 + cont.minx=box.getLeft();​ 
 + cont.maxx=box.getRight();​ 
 + cont.miny=box.getTop();​ 
 + cont.maxy=box.getBottom();​ 
 + var minpagex=Math.floor(cont.minx/​dwidth);​ 
 + var minpagey=Math.floor(cont.miny/​dheight);​ 
 + if(cont.setup!=true) 
 +
 + cont.pages=[];​ 
 + for(x=0;​x<​Math.ceil(cont.maxx/​dwidth)-minpagex;​x++) 
 +
 + cont.pages[x]=[];​ 
 + for(y=0;​y<​Math.ceil(cont.maxy/​dheight)-minpagey;​y++) 
 +
 + cont.pages[x][y]=[];​ 
 +
 +
 + for(x=0;​x<​items.length;​x++) 
 +
 + var i=items.getAt(x);​ 
 + var pinned=i.getProperties().getString("​i.pinMode"​);​ 
 + if(pinned=="​NONE"​) 
 +
 + var data=new Object(); 
 + data.posx=i.getPositionX();​ 
 + data.posy=i.getPositionY();​ 
 + data.rot=Math.abs(i.getRotation())==90;​ 
 + data.sx=data.rot?​i.getScaleX():​i.getScaleY();​ 
 + data.sy=data.rot?​i.getScaleY():​i.getScaleX();​ 
 + if(i.getProperties().getBoolean("​i.onGrid"​))data.onGrid=true;​ 
 + else data.onGrid=false;​ 
 + i.getProperties().edit().setBoolean("​i.onGrid",​false).commit();​ 
 + cont.pages[Math.floor(data.posx/​dwidth)-minpagex][Math.floor(data.posy/​dheight)-minpagey].push(i.getId());​ 
 + i.setTag(JSON.stringify(data));​ 
 +
 +
 + cont.setup=true;​ 
 + Android.makeNewToast("​Animation enabled",​true).show();​ 
 + LL.writeToLogFile(JSON.stringify(cont.pages),​false);​ 
 +
 + else 
 +
 + var cellw=d.getCellWidth();​ 
 + var cellh=d.getCellHeight();​ 
 + for(x=0;​x<​items.length;​x++) 
 +
 + var i=items.getAt(x);​ 
 + var data=JSON.parse(i.getTag());​ 
 + i.setScale(1,​1);​ 
 + if(data!=null&&​data.onGrid==true) 
 +
 + iwidth=i.getWidth();​ 
 + iheight=i.getHeight();​ 
 + i.getProperties().edit().setBoolean("​i.onGrid",​true).commit();​ 
 + i.setCell(Math.round(data.posx/​cellw),​Math.round(data.posy/​cellh),​Math.round((data.posx+iwidth)/​cellw),​Math.round((data.posy+iheight)/​cellh));​ 
 +
 +
 + cont.setup=false;​ 
 + Android.makeNewToast("​Animation disabled",​true).show();​ 
 +
 + d.setTag(JSON.stringify(cont));​ 
 +
 + 
 + 
 +if(cont==null||!cont.setup||d.getPositionScale()!=1)return;​ 
 +var dposx=d.getPositionX();​ 
 +var dposy=d.getPositionY();​ 
 +var currentx=Math.floor(dposx/​dwidth);​ 
 +var pageposx=currentx*dwidth;​ 
 +var percentx=(dposx-pageposx)/​dwidth;​ 
 +var currenty=Math.floor(dposy/​dheight);​ 
 +var pageposy=currenty*dheight;​ 
 +var percenty=(dposy-pageposy)/​dheight;​ 
 +var maxpagex=Math.floor((cont.maxx-dwidth)/​dwidth);​ 
 +var maxpagey=Math.floor((cont.maxy-dheight)/​dheight);​ 
 +var minpagex=Math.floor(cont.minx/​dwidth);​ 
 +var minpagey=Math.floor(cont.miny/​dheight);​ 
 +var percent=(Math.abs(0.5-percentx)<​Math.abs(0.5-percenty))?​percentx:​percenty;​ 
 + 
 +if(percent>​0.005&&​percent<​99.995&&​dposx>​cont.minx-dwidth&&​dposy>​cont.miny-dheight) 
 +
 + var scrollLimit=d.getProperties().getBoolean("​noScrollLimit"​);​ 
 + if(dposx>​cont.maxx-dwidth&&​scrollLimit) 
 + d.setPosition(cont.minx-dwidth,​dposy,​1,​false);​ 
 + else if(dposy>​cont.maxy-dheight&&​scrollLimit)d.setPosition(dposx,​cont.miny-dheight,​1,​false);​ 
 + if(dposx<​cont.minx&&​scrollLimit) 
 + cont.statex=true;​ 
 + if(dposy<​cont.miny&&​scrollLimit) 
 + cont.statey=true;​
  
-====== ​Toggle Script ​======+ var items0=(cont.pages[(cont.statex?​maxpagex:​currentx)-minpagex]||[])[(cont.statey?​maxpagey:​currenty)-minpagey];​ 
 + if(items0!=null) 
 +
 + for(z=0;​z<​items0.length;​z++) 
 +
 + var item=LL.getItemById(items0[z]);​ 
 + var data=JSON.parse(item.getTag());​ 
 + item.setScale((percent>​=0.5?​1:​1-percent*2)*data.sx,​(percent>​=0.5?​1:​1-percent*2)*data.sy);​ 
 + item.setPosition(dposx+((data.posx%dwidth+dwidth)%dwidth)+percent*(dwidth-((data.posx%dwidth+dwidth)%dwidth)*2),​dposy+((data.posy%dheight+dheight)%dheight)+percent*(dheight-((data.posy%dheight+dheight)%dheight)*2));​ 
 + item.setVisibility(percent<​0.5);​ 
 +
 +
 + if(percentx==percent) 
 +
 + var items=(cont.pages[currentx+1-minpagex]||[])[(cont.statey?​maxpagey:​currenty)-minpagey];​ 
 +
 + else 
 +
 + var items=(cont.pages[(cont.statex?​maxpagex:​currentx)-minpagex]||[])[currenty+1-minpagey];​ 
 +
 + if(items!=null) 
 +
 + for(z=0;​z<​items.length;​z++) 
 +
 + var item=LL.getItemById(items[z]);​ 
 + var data=JSON.parse(item.getTag());​ 
 + item.setScale((percent<​0.5?​1:​2*percent-1)*data.sx,​(percent<​0.5?​1:​2*percent-1)*data.sy);​ 
 + item.setPosition(dposx+dwidth/​2*(2-percent*2)+((data.posx%dwidth+dwidth)%dwidth)*(percent*2-1),​dposy+dheight/​2*(2-percent*2)+((data.posy%dheight+dheight)%dheight)*(percent*2-1));​ 
 + item.setVisibility(percent>​=0.5);​ 
 +
 +
 +
 +else 
 +
 + d.setPosition(dposx,​dposy);​ 
 + d.setPosition(dposx<​cont.minx?​cont.maxx-dwidth:​dposx,​dposy<​cont.miny?​cont.maxy-dheight:​dposy,​1,​false);​ 
 + cont.statex=false;​ 
 + cont.statey=false;​ 
 + for(i=0;​i<​items.length;​i++) 
 +
 + item=items.getAt(i);​ 
 + var data=JSON.parse(item.getTag());​ 
 + if(data!=null) 
 +
 + item.setScale(data.sx,​data.sy);​ 
 + item.setPosition(data.posx,​data.posy);​ 
 + item.setVisibility(true);​ 
 +
 +
 +
 +</​sxh>​
script_animation_shrink.1400434566.txt.gz · Last modified: 2014/05/18 17:36 by lm13