출처: http://channy.creation.net/blog/519
정말 좋네요^^
이런식으로 외부에 있는 데이타를 읽어서 처리할 수 있는거군요..... 감사합니다...
게다가 라이센스도 BSDL..
Channy 님의 말씀을 인용하면
참고로 BSDL은 제가 고쳐 다른 영역을 추가 배포해도 되는 가장 자유로운 오픈 소스 라이센스이고 법적으로도 문제가 없습니다. 라이센스 표기와 자신의 제품을 결합해서 사용 가능하고 필요하면 소스 코드를 공개할 필요도 없고 GNU의 그 흔한 copyleft 조항조차도 없지요.
라고 하심.
정말 감사합니다.
/*
* Buffered Text-fade Effect - v3.0
* - Copyright 2008 - Licenced for free distribution under the BSDL
* - http://www.opensource.org/licenses/bsd-license.php
*
* This program is licenced under the BSDL and may be distributed far
* and wide, anywhere on the planet and beyond (maybe!) If you happen
* to get a kick out of this script, please drop me a note at:
* wyvern@greywyvern.com and tell me where you gave it a good home and
* plenty of bytes to eat, hmmm? :) I'd be eternally grateful.
*/
function fadeObject(id, c1, c2, s1, s2) {
var self = this;
this.id = id;
this.elem = false;
this.colour = {
stt: [parseInt(c1.substr(0, 2), 16), parseInt(c1.substr(2, 2), 16), parseInt(c1.substr(4, 2), 16)],
end: [parseInt(c2.substr(0, 2), 16), parseInt(c2.substr(2, 2), 16), parseInt(c2.substr(4, 2), 16)],
now: [parseInt(c1.substr(0, 2), 16), parseInt(c1.substr(2, 2), 16), parseInt(c1.substr(4, 2), 16)]
};
this.steps = [s1, s2];
this.dir = false;
this.active = false;
this.queue = [];
this.msg = [];
this.message = 0;
function d2h(num) {
num = Math.round(num);
return ((num < 16) ? "0" : "") + num.toString(16);
}
this.fade = function(message, direction) {
this.elem = this.elem || document.getElementById(this.id);
this.queue.push([message, direction]);
for (var x = 0; x < this.queue.length; x++) {
for (var y = x + 1; y < this.queue.length; y++) {
if (this.queue[x][0] == this.queue[y][0] && this.queue[x][1] != this.queue[y][1]) {
this.queue.splice(x, 1);
this.queue.splice(y - 1, 1);
}
}
}
if (!this.active) setTimeout(function() { self.fadeLoop(); }, 0);
};
this.fadeLoop = function() {
if (!this.active && this.queue.length) {
if (this.dir && this.message != this.queue[0][0]) this.queue.unshift([this.message, false]);
var msg = this.queue.shift();
if (this.msg[msg[0]]) {
this.active = true;
this.elem.innerHTML = this.msg[this.message = msg[0]];
this.dir = msg[1];
}
}
if (this.dir) {
var c1 = this.colour.stt, c2 = this.colour.end, s = this.steps[0];
} else var c1 = this.colour.end, c2 = this.colour.stt, s = this.steps[1];
for (var x = 0, cnow = "", inc = 0; x < 3; x++) {
this.colour.now[x] += inc = (c2[x] - c1[x]) / s;
cnow += this.colour.now[x] = (inc < 0) ? Math.max(this.colour.now[x], c2[x]) : Math.min(this.colour.now[x], c2[x]);
} this.elem.style.color = "#" + d2h(this.colour.now[0]) + d2h(this.colour.now[1]) + d2h(this.colour.now[2]);
if (cnow == c2.join("")) {
this.active = false;
if (!this.queue.length) {
if (!this.dir) {
if (this.msg[0]) {
this.queue.push([0, true]);
setTimeout(function() { self.fadeLoop(); }, 0);
} else this.elem.innerHTML = " ";
}
} else setTimeout(function() { self.fadeLoop(); }, 0);
} else setTimeout(function() { self.fadeLoop(); }, 0);
};
if (window.addEventListener) {
window.addEventListener('load', function() { self.fade(0, true); }, false);
} else if (window.attachEvent)
window.attachEvent('onload', function() { self.fade(0, true); });
}
var fader = new Array();
var hash = new Array();
function throb(item) {
if (!hash[item]) hash[item] = 2;
fader[item].fade(Math.floor(hash[item] / 2), !(hash[item] % 2));
setTimeout(function() { throb(item); }, (hash[item] % 2) ? 100 : 5000);
if (++hash[item]>fader[item].msg.length * 2 - 1) hash[item] = 2;
}
/* get me2day posts
* - Copyright 2008 - Licenced for free distribution under the BSDL
* - http://www.opensource.org/licenses/bsd-license.php
*
* This program is licenced under the BSDL and as following code is
* connected with "Buffered Text-fade Effect - v3.0" by channy yun.
*/
var me2fade = {
init : function(me2id) {
me2fade.getme2day(me2id);
setTimeout(function() { throb(2); }, 1000);
}, getme2day : function(me2id) {
me2fade.s = document.createElement('script');
me2fade.s.type ='text/javascript';
me2fade.s.charset ='utf-8';
me2fade.s.src = 'http://me2day.net/api/get_latests/'+me2id+'.json?callback=me2fade.makearray';
document.getElementsByTagName('head')[0].appendChild(me2fade.s);
}, makearray : function(z) {
fader[2] = new fadeObject('me2fade', 'aaaaaa', 'ffffff', 10, 60);
for (var i=0; i<z.length; i++) {
var tags="";
for(var j=0; j<z[i].tags.length; j++) {
tags+= z[i].tags[j].name + " ";
}
var stripstring = z[i].body.replace(/(<([^>]+)>)/ig,"");
//alert(stripstring.length + stripstring);
if (stripstring.length <= 44) {
fader[2].msg[i+1]='<div class="large">'+ z[i].body + " <div class='me2tags'><a href='" + z[i].permalink + "'>"+tags+'</a></a></div></div>';
} else if (stripstring.length >= 80) {
fader[2].msg[i+1]='<div class="small">'+ z[i].body + " <div class='me2tags'><a href='" + z[i].permalink + "'>"+tags+'</a></div></div>';
} else {
fader[2].msg[i+1]='<div class="medium">'+ z[i].body + " <div class='me2tags'><a href='" + z[i].permalink + "'>"+tags+'</a></div></div>';
}
}
}
};
function addLoadEvent(func) {
var oldonload = window.onload;
if (typeof window.onload != 'function') {
window.onload = func;
} else {
window.onload = function() {
oldonload();
func();
}
}
}
댓글