You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
444 lines
12 KiB
444 lines
12 KiB
/**
|
|
* jQuery Generic Plugin Module
|
|
* Version 0.1
|
|
* Copyright (c) 2011 Cyntax Technologies - http://cyntaxtech.com
|
|
* Licensed under the Cyntax Open Technology License
|
|
* http://code.cyntax.com/licenses/cyntax-open-technology
|
|
* jacy modify for Zepto
|
|
*/
|
|
|
|
(function( $ ) {
|
|
$.jQueryPlugin = function( name ) {
|
|
$.fn[name] = function( options ) {
|
|
var args = Array.prototype.slice.call( arguments , 1 );
|
|
if( this.length ) {
|
|
return this.each( function() {
|
|
|
|
var instance = internalData( this , name ) || internalData( this , name , new cyntax.plugins[name]( this , options )._init() );
|
|
if( typeof options === "string" ){
|
|
options = options.replace( /^_/ , "" );
|
|
if( instance[options] ) {
|
|
instance[options].apply( instance , args );
|
|
}
|
|
}
|
|
|
|
});
|
|
}
|
|
};
|
|
};
|
|
})( Zepto );
|
|
|
|
var cyntax = {
|
|
plugins : {}
|
|
};
|
|
|
|
|
|
/**
|
|
* jQuery Timer Plugin
|
|
* Project page - http://code.cyntaxtech.com/plugins/jquery-timer
|
|
* Version 0.1.1
|
|
* Copyright (c) 2011 Cyntax Technologies - http://cyntaxtech.com
|
|
* dependencies: jquery.plugin.js
|
|
* Licensed under the Cyntax Open Technology License
|
|
* http://code.cyntax.com/licenses/cyntax-open-technology
|
|
* ------------------------------------
|
|
* For details, please visit:
|
|
* http://code.cyntaxtech.com/plugins/jquery-timer
|
|
*/
|
|
|
|
(function( $ ){
|
|
cyntax.plugins.timer = function( ele , options ){
|
|
this.$this = $( ele );
|
|
this.options = $.extend( {} , this.defaults , options );
|
|
this.timer_info = {id:null, index:null, state:0};
|
|
};
|
|
cyntax.plugins.timer.prototype = {
|
|
defaults : {
|
|
delay: 1000, // delay in milliseconds (optional)
|
|
repeat: false, // true to repeat the timer continuously, or a number for repeating this number of times (optional)
|
|
autostart: true, // timer starts as soon as it is created, set false to start manually
|
|
callback: null, // callback (optional)
|
|
url: '', // url to load content from (optional)
|
|
post: '' // post data (optional)
|
|
},
|
|
_init : function(){
|
|
if (this.options.autostart) {
|
|
this.timer_info.state = 1;
|
|
this.timer_info.id = setTimeout( $.proxy( this._timer_fn, this ) , this.options.delay);
|
|
}
|
|
return this;
|
|
},
|
|
_timer_fn : function() {
|
|
if (typeof this.options.callback == "function")
|
|
$.proxy( this.options.callback, this.$this ).call(this, ++this.timer_info.index);
|
|
else if (typeof this.options.url == "string") {
|
|
ajax_options = {
|
|
url: this.options.url,
|
|
context: this,
|
|
type: (typeof this.options.post == "string" && typeof this.options.post != "" == "" ? "POST": "GET"),
|
|
success: function(data, textStatus, jqXHR) {
|
|
this.$this.html(data);
|
|
}
|
|
};
|
|
if (typeof this.options.post == "string" && typeof this.options.post != "")
|
|
ajax_options.data = this.options.post;
|
|
$.ajax(ajax_options);
|
|
}
|
|
if ( this.options.repeat && this.timer_info.state == 1 &&
|
|
(typeof this.options.repeat == "boolean" || parseInt(this.options.repeat) > this.timer_info.index) )
|
|
this.timer_info.id = setTimeout( $.proxy( this._timer_fn, this ) , this.options.delay );
|
|
else
|
|
this.timer_id = null;
|
|
},
|
|
start : function() {
|
|
if (this.timer_info.state == 0) {
|
|
this.timer_info.index = 0;
|
|
this.timer_info.state = 1;
|
|
this.timer_id = setTimeout( $.proxy( this._timer_fn, this ) , this.options.delay);
|
|
}
|
|
},
|
|
|
|
stop : function(){
|
|
if ( this.timer_info.state == 1 && this.timer_info.id ) {
|
|
clearTimeout(this.timer_info.id);
|
|
this.timer_id = null;
|
|
}
|
|
this.timer_info.state = 0;
|
|
},
|
|
|
|
pause : function() {
|
|
if ( this.timer_info.state == 1 && this.timer_info.id )
|
|
clearTimeout(this.timer_info.id);
|
|
this.timer_info.state = 0;
|
|
},
|
|
|
|
resume : function() {
|
|
this.timer_info.state = 1;
|
|
this.timer_id = setTimeout( $.proxy( this._timer_fn, this ) , this.options.delay);
|
|
}
|
|
};
|
|
|
|
$.jQueryPlugin( "timer" );
|
|
|
|
})( Zepto );
|
|
|
|
|
|
|
|
/*!
|
|
* Pause jQuery plugin v0.1
|
|
*
|
|
* Copyright 2010 by Tobia Conforto <tobia.conforto@gmail.com>
|
|
*
|
|
* Based on Pause-resume-animation jQuery plugin by Joe Weitzel
|
|
*
|
|
* This program is free software; you can redistribute it and/or modify it
|
|
* under the terms of the GNU General Public License as published by the Free
|
|
* Software Foundation; either version 2 of the License, or(at your option)
|
|
* any later version.
|
|
*
|
|
* This program is distributed in the hope that it will be useful, but WITHOUT
|
|
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
|
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
|
|
* more details.
|
|
*
|
|
* You should have received a copy of the GNU General Public License along with
|
|
* this program; if not, write to the Free Software Foundation, Inc., 51
|
|
* Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
|
*/
|
|
/* Changelog:
|
|
*
|
|
* 0.1 2010-06-13 Initial release
|
|
*/
|
|
|
|
|
|
(function() {
|
|
var $ = Zepto,
|
|
pauseId = 'Zepto.pause',
|
|
uuid = 1,
|
|
oldAnimate = $.fn.animate,
|
|
anims = {};
|
|
|
|
function now() { return new Date().getTime(); }
|
|
|
|
$.fn.animate = function(prop, speed, easing, callback) {
|
|
var optall = $.speed(speed, easing, callback);
|
|
optall.complete = optall.old; // unwrap callback
|
|
return this.each(function() {
|
|
// check pauseId
|
|
if (! this[pauseId])
|
|
this[pauseId] = uuid++;
|
|
// start animation
|
|
var opt = $.extend({}, optall);
|
|
oldAnimate.apply($(this), [prop, $.extend({}, opt)]);
|
|
// store data
|
|
anims[this[pauseId]] = {
|
|
run: true,
|
|
prop: prop,
|
|
opt: opt,
|
|
start: now(),
|
|
done: 0
|
|
};
|
|
});
|
|
};
|
|
|
|
$.fn.pause = function() {
|
|
return this.each(function() {
|
|
// check pauseId
|
|
if (! this[pauseId])
|
|
this[pauseId] = uuid++;
|
|
// fetch data
|
|
var data = anims[this[pauseId]];
|
|
if (data && data.run) {
|
|
data.done += now() - data.start;
|
|
if (data.done > data.opt.duration) {
|
|
// remove stale entry
|
|
delete anims[this[pauseId]];
|
|
} else {
|
|
// pause animation
|
|
$(this).stop();
|
|
$(this).stop();
|
|
$(this).stop();
|
|
data.run = false;
|
|
}
|
|
}
|
|
});
|
|
};
|
|
|
|
$.fn.resume = function() {
|
|
return this.each(function() {
|
|
// check pauseId
|
|
if (! this[pauseId])
|
|
this[pauseId] = uuid++;
|
|
// fetch data
|
|
var data = anims[this[pauseId]];
|
|
if (data && ! data.run) {
|
|
// resume animation
|
|
data.opt.duration -= data.done;
|
|
data.done = 0;
|
|
data.run = true;
|
|
data.start = now();
|
|
oldAnimate.apply($(this), [data.prop, $.extend({}, data.opt)]);
|
|
}
|
|
});
|
|
};
|
|
})();
|
|
|
|
|
|
|
|
|
|
/*!
|
|
*弹幕引擎核心
|
|
*
|
|
* Copyright 2015 by Liyawei Of AcGit.cc
|
|
* @license MIT
|
|
*/
|
|
|
|
|
|
|
|
;(function( $ ){
|
|
|
|
|
|
var Danmu= function (element, options) {
|
|
this.$element = $(element);
|
|
this.options = options;
|
|
$(element).data("nowtime",0);
|
|
$(element).data("danmu_array",options.danmuss);
|
|
$(element).data("opacity",options.opacity);
|
|
$(element).data("paused",1);
|
|
$(element).data("topspace",0);
|
|
$(element).data("bottomspace",0);
|
|
|
|
|
|
this.$element .css({
|
|
"position":"absolute",
|
|
"left":this.options.left,
|
|
"top":this.options.top,
|
|
"width":this.options.width,
|
|
"height":this.options.height,
|
|
"z-index":this.options.zindex,
|
|
"color":options.default_font_color,
|
|
"font-family":"SimHei" ,
|
|
"font-size":options.font_size_big,
|
|
"overflow":"hidden"
|
|
});
|
|
var heig=this.$element.height();
|
|
var row_conut=parseInt(heig/options.font_size_big);
|
|
var rows_used=new Array();
|
|
|
|
$("<div class='timer71452'></div>").appendTo(this.$element );
|
|
this.$timer=$(".timer71452");
|
|
this.$timer.timer({
|
|
delay: 100,
|
|
repeat: options.sumtime,
|
|
autostart: false,
|
|
callback: function( index ) {
|
|
heig=$(element).height();
|
|
//row_conut=parseInt(heig/options.font_size_big);
|
|
if($(element).data("danmu_array")[$(element).data("nowtime")]){
|
|
var danmus=$(element).data("danmu_array")[$(element).data("nowtime")];
|
|
for(var i=0;i<danmus.length;i++){
|
|
var a_danmu="<div class='flying flying2' id='linshi'></div>";
|
|
$(element).append(a_danmu);
|
|
$("#linshi").text(danmus[i].text);
|
|
$("#linshi").css({
|
|
"color":danmus[i].color
|
|
,"text-shadow":" 0px 0px 2px #000000"
|
|
,"-moz-opacity":$(element).data("opacity")
|
|
,"opacity": $(element).data("opacity")
|
|
,"white-space":"nowrap"
|
|
,"font-weight":"bold"
|
|
});
|
|
if (danmus[i].color<"#777777")
|
|
$("#linshi").css({
|
|
"text-shadow":" 0px 0px 2px #FFFFFF"
|
|
});
|
|
if (danmus[i].hasOwnProperty('isnew')){
|
|
$("#linshi").css({"border":"2px solid "+danmus[i].color});
|
|
}
|
|
if( danmus[i].size == 0) $("#linshi").css("font-size",options.font_size_small);
|
|
if ( danmus[i].position == 0){
|
|
//var top_local=parseInt(30+(options.height-60)*Math.random());//随机高度
|
|
var row = parseInt(row_conut*Math.random());
|
|
while (rows_used.indexOf(row)>=0 ){
|
|
var row = parseInt(row_conut*Math.random());
|
|
}
|
|
rows_used.push(row);
|
|
//console.log(rows_used.length);
|
|
if (rows_used.length==row_conut){
|
|
rows_used =new Array();
|
|
row_conut=parseInt(heig/options.font_size_big);
|
|
}
|
|
var top_local=(row)*options.font_size_big;
|
|
|
|
$("#linshi").css({"position":"absolute"
|
|
,"top":top_local
|
|
,"left":options.width
|
|
});
|
|
var fly_tmp_name="fly"+parseInt(heig*Math.random()).toString();
|
|
$("#linshi").attr("id",fly_tmp_name);
|
|
$('#'+fly_tmp_name).animate({left:-$(this).width()*3,},options.speed
|
|
,function(){$(this).remove();}
|
|
);
|
|
}
|
|
else if ( danmus[i].position == 1){
|
|
var top_tmp_name="top"+parseInt(10000*Math.random()).toString();
|
|
$("#linshi").attr("id",top_tmp_name)
|
|
$('#'+top_tmp_name).css({
|
|
"width":options.width
|
|
,"text-align":"center"
|
|
,"position":"absolute"
|
|
,"top":(5+$(element).data("topspace"))
|
|
});
|
|
$(element).data("topspace",$(element).data("topspace")+options.font_size_big);
|
|
$('#'+top_tmp_name).fadeTo(options.top_botton_danmu_time,$(element).data("opacity"),function(){
|
|
$(this).remove();
|
|
$(element).data("topspace",$(element).data("topspace")-options.font_size_big);
|
|
}
|
|
);
|
|
}
|
|
else if ( danmus[i].position == 2){
|
|
var bottom_tmp_name="top"+parseInt(10000*Math.random()).toString();
|
|
$("#linshi").attr("id",bottom_tmp_name)
|
|
$('#'+bottom_tmp_name).css({
|
|
"width":options.width
|
|
,"text-align":"center"
|
|
,"position":"absolute"
|
|
,"bottom":0+$(element).data("bottomspace")
|
|
});
|
|
$(element).data("bottomspace",$(element).data("bottomspace")+options.font_size_big);
|
|
$('#'+bottom_tmp_name).fadeTo(options.top_botton_danmu_time,$(element).data("opacity"),function(){
|
|
$(this).remove();
|
|
$(element).data("bottomspace",$(element).data("bottomspace")-options.font_size_big)
|
|
}
|
|
);
|
|
|
|
} //else if
|
|
} // for in danmus
|
|
} //if (danmus)
|
|
$(element).data("nowtime",$(element).data("nowtime")+1);
|
|
|
|
|
|
}
|
|
});
|
|
};
|
|
|
|
|
|
Danmu.DEFAULTS = {
|
|
left: 0,
|
|
top: 0 ,
|
|
height: 360,
|
|
width: 640,
|
|
zindex :100,
|
|
speed:20000,
|
|
sumtime:65535 ,
|
|
danmuss:{},
|
|
default_font_color:"#FFFFFF",
|
|
font_size_small:16,
|
|
font_size_big:24,
|
|
opacity:"0.9",
|
|
top_botton_danmu_time:6000
|
|
}
|
|
|
|
|
|
|
|
Danmu.prototype.danmu_start = function(){
|
|
this.$timer.timer('start');
|
|
this.$element.data("paused",0);
|
|
};
|
|
|
|
Danmu.prototype.danmu_stop = function(){
|
|
this.$timer.timer('stop');
|
|
$('.flying').remove();
|
|
nowtime=0;
|
|
this.$element.data("paused",1);
|
|
this.$element.data("nowtime",0);
|
|
};
|
|
|
|
|
|
Danmu.prototype.danmu_pause = function(){
|
|
this.$timer.timer('pause');
|
|
$('.flying').pause();
|
|
this.$element.data("paused",1);
|
|
};
|
|
|
|
|
|
Danmu.prototype.danmu_resume = function(){
|
|
this.$timer.timer('resume');
|
|
$('.flying').resume();
|
|
this.$element.data("paused",0);
|
|
};
|
|
|
|
Danmu.prototype.danmu_hideall= function(){
|
|
$('.flying').remove();
|
|
|
|
};
|
|
|
|
Danmu.prototype.add_danmu = function(arg){
|
|
if(this.$element.data("danmu_array")[arg.time]){
|
|
this.$element.data("danmu_array")[arg.time].push(arg);
|
|
}
|
|
else{
|
|
this.$element.data("danmu_array")[arg.time]=new Array();
|
|
this.$element.data("danmu_array")[arg.time].push(arg);
|
|
}
|
|
|
|
};
|
|
|
|
|
|
function Plugin(option,arg) {
|
|
return this.each(function () {
|
|
var $this = $(this);
|
|
var options = $.extend({}, Danmu.DEFAULTS, typeof option == 'object' && option);
|
|
var data = $this.data('danmu');
|
|
var action = typeof option == 'string' ? option : NaN;
|
|
if (!data) $this.data('danmu', (data = new Danmu(this, options)))
|
|
if (action) data[action](arg);
|
|
})
|
|
};
|
|
|
|
|
|
$.fn.danmu = Plugin;
|
|
$.fn.danmu.Constructor = Danmu;
|
|
|
|
|
|
})(Zepto);
|