www

;(function(global) {
    // 通用工具
    var util = {
        addListener : function(dom, eventName, callback, options) {
            options = options || {};
            if (dom.attachEvent) {
                dom.attachEvent('on' + eventName, callback);
            } else {
                dom.addEventListener(eventName, callback, options.capture || false);
            }
        }
    };
    // ReelingCam class
    var ReelingCam = function(options) {
        // 保证了构造函数的强制调用
        if (!(this instanceof arguments.callee)) {
            return new arguments.callee(options);
        }
        this.options = options;
        this.reelup = options.reelup;
        this.reeldown = options.reeldown;
        this.reelplay2 = options.reelplay2;
        // 可以自定义滚动图片源,也可以使用默认的data-images值
        this.pageList = options.pageList || this.reelplay2.getAttribute('data-images').split(',');
        // 缓存图片个数
        this.pagelen = this.pageList.length;
        // 默认起始页
        this.startpage = parseInt(this.reelplay2.getAttribute('data-frames')) || this.pagelen;
        // 定时任务
        this.task = null;
        //
        this.callback = null;

    }
    ReelingCam.prototype = {
        constructor : ReelingCam,
        _pagedown : function() {
            this.startpage = (this.startpage + 1) % this.pagelen;
            this.reelplay2.setAttribute('src', this.pageList[this.startpage]);
            if (this.startpage == this.pagelen - 1) {
                clearInterval(this.task);
                this.task = null;
                this.callback();
            }

        },
        _pageup : function() {
            this.startpage = (this.startpage + this.pagelen - 1) % this.pagelen;
            this.reelplay2.setAttribute('src', this.pageList[this.startpage]);
            if (this.startpage == 0) {
                clearInterval(this.task);
                this.task = null;
                this.callback();
            }

        },
        doReel : function(direction, callback) {
            var me = this;
            me.callback = callback;
            if (direction == 'up') {
                me.task = setInterval(function() {
                    me._pageup();
                }, 50);
            } else if (direction == 'down') {
                me.task = setInterval(function() {
                    me._pagedown();
                }, 50);
            }
        },
        bindEvent : function() {
            var me = this;
            util.addListener(me.reelup, 'click', function() {
                me.reelup.style.display = 'none';
                me.doReel('up', function() {
                    me.reeldown.style.display = '';
                })
            })
            util.addListener(me.reeldown, 'click', function() {
                me.reeldown.style.display = 'none';
                me.doReel('down', function() {
                    me.reelup.style.display = '';
                })
            });
        }
    }

    var reelingCam = ReelingCam({
        reelup : document.getElementById('reelup'),
        reeldown : document.getElementById('reeldown'),
        reelplay2 : document.getElementById('reelplay2')
    });
    reelingCam.bindEvent();

})(window);

 

posted @ 2014-03-05 18:53  无与hebe  阅读(1711)  评论(0编辑  收藏  举报