Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- (function() {
- app.ui.createImageScroller = function(params) {
- var yCenter = 160;
- var xCenter = 160;
- var scrollCenter = {x:xCenter,y:yCenter};
- var scrollDuration = 100;
- var centerThreshold = 20;
- var imageScroller = Ti.UI.createView({
- height:params.height,
- width:960,
- backgroundColor:params.backgroundColor,
- center:{x:xCenter,y:yCenter}
- });
- var index = 0;
- var imageViews = [];
- var images = [];
- for (var i = 0; i < 3; i++) {
- var imageView = Ti.UI.createImageView({
- defaultImage:params.loadingImage,
- height:params.height,
- width:320,
- left:(i * 320)
- });
- imageViews.push(imageView);
- imageScroller.add(imageView);
- }
- var dif = 0;
- imageScroller.addEventListener('touchstart', function(e) {
- dif = e.globalPoint.x - imageScroller.center.x;
- });
- imageScroller.addEventListener('touchmove', function(e) {
- imageScroller.setCenter({x:e.globalPoint.x - dif,y:yCenter});
- });
- imageScroller.addEventListener('touchend', function(e) {
- if (imageScroller.center.x < (xCenter - centerThreshold) && canNext()) {
- imageScroller.next();
- } else if (imageScroller.center.x > (xCenter + centerThreshold) && canPrevious()) {
- imageScroller.previous();
- } else {
- imageScroller.animate({center:scrollCenter,duration:scrollDuration});
- }
- });
- imageScroller.goto = function(imageIndex) {
- if (imageIndex < images.length) {
- index = imageIndex;
- updateImages();
- fireScrollEvent();
- }
- }
- function updateImages() {
- updateCurrent();
- updateNext();
- updatePrevious();
- }
- function canNext() {
- return (index + 1) < images.length;
- }
- function canPrevious() {
- return index - 1 >= 0;
- }
- function updateCurrent() {
- imageViews[1].image = images[index].url;
- images[index].hasViewed = true;
- }
- function updateNext() {
- imageViews[2].image = canNext() ? (images[index + 1].hasViewed ? images[index + 1].url : params.loadingImage) : null;
- }
- function updatePrevious() {
- imageViews[0].image = canPrevious() ? (images[index - 1].hasViewed ? images[index - 1].url : params.loadingImage) : null;
- }
- function fireScrollEvent() {
- imageScroller.fireEvent('scroll', {index:index});
- }
- imageScroller.next = function() {
- if (canNext()) {
- imageScroller.animate({center:{x:-160,y:yCenter},duration:scrollDuration}, function() {
- imageViews[2].left = 320;
- imageScroller.center = scrollCenter;
- imageViews[1].left = 0;
- imageViews[0].left = 640;
- imageViews = [imageViews[1],imageViews[2],imageViews[0]];
- imageScroller.goto(index + 1);
- });
- }
- }
- imageScroller.previous = function() {
- if (canPrevious()) {
- imageScroller.animate({center:{x:480,y:yCenter},duration:scrollDuration}, function() {
- imageViews[0].left = 320;
- imageScroller.center = scrollCenter;
- imageViews[1].left = 640;
- imageViews[2].left = 0;
- imageViews = [imageViews[2],imageViews[0],imageViews[1]];
- imageScroller.goto(index - 1);
- });
- }
- }
- imageScroller.appendUrls = function(urls) {
- for (var i = 0,count = urls.length; i < count; i++) {
- images.push({url:urls[i],hasViewed:false});
- }
- };
- imageScroller.updateUrls = function(urls) {
- images = [];
- imageScroller.appendUrls(urls);
- updateImages();
- };
- imageScroller.count = function() {
- return images.length;
- }
- return imageScroller;
- }
- })();
Add Comment
Please, Sign In to add comment