Difference between revisions of "Logo.as"
From Organic Design wiki
m |
m |
||
(97 intermediate revisions by 3 users not shown) | |||
Line 1: | Line 1: | ||
− | + | {{legacy}} | |
− | background = parseInt( background, 16 ); | + | <source lang="js"> |
− | bg_r = ( background & 0xff0000 ) >> 16; | + | // This is the script which compiles the logo with dynamic changes behind it |
− | bg_g = ( background & 0x00ff00 ) >> 8; | + | // - compiles [[[[Logo_Test|here]]]] |
− | bg_b = ( background & 0x0000ff ); | + | // - the info it renders is obtained from [[[[Special:Recentchanges]]]] and is generated by [[[[transform-changes.php]]]] |
+ | #include "box-model.as" | ||
+ | |||
+ | // Constants | ||
+ | background = parseInt(background,16); | ||
+ | bg_r = (background & 0xff0000)>>16; | ||
+ | bg_g = (background & 0x00ff00)>>8; | ||
+ | bg_b = (background & 0x0000ff); | ||
fw = 20; // width of fades | fw = 20; // width of fades | ||
id0 = 1; | id0 = 1; | ||
changes = []; | changes = []; | ||
change = false; | change = false; | ||
− | |||
offset = -200; | offset = -200; | ||
+ | stripes = (width >= 200); | ||
+ | lineHeight = height/nchanges; // NOTE: don't use rects for stripes, use multiples positioned textboxes | ||
// Set up async connection with server | // Set up async connection with server | ||
server = new LoadVars(); | server = new LoadVars(); | ||
− | server.title = ' | + | recv = new LoadVars(); |
− | + | server.title = 'Special:Recentchanges'; // wiki page to request | |
+ | recv.onLoad = function(success) { | ||
if (success) { | if (success) { | ||
− | for ( | + | for (i = 0; i<nchanges; i++) { |
− | + | row = recv['item'+i].split(','); | |
− | + | id = row.shift(); | |
− | |||
if ( ( i == 0 ) && ( id != id0 ) ) { | if ( ( i == 0 ) && ( id != id0 ) ) { | ||
if ( id0 ) offset = -20; | if ( id0 ) offset = -20; | ||
id0 = id; | id0 = id; | ||
} | } | ||
− | + | time = row.shift(); | |
− | + | author = row.shift(); | |
− | + | title = row.shift(); | |
− | + | textcol = row.shift(); | |
− | + | comment = row.join(','); | |
− | + | if (comment != '') title = comment; | |
− | + | changes[i] = '<font size="9" face="arial, helvetica" color="'+textcol+'">'+time+': (<u><font color="#217A28">'+author+'</font></u>) '; | |
− | changes[i] = '<font face="arial, helvetica" color="'+textcol+'">< | + | changes[i] += title+'</font><font face="arial" size="10"> </font><br>'; |
− | changes[i] += title+' | ||
} | } | ||
rc.htmlText = changes.join(''); | rc.htmlText = changes.join(''); | ||
+ | // Get info if any returned | ||
+ | if (recv.user) _root.user = recv.user; | ||
} | } | ||
}; | }; | ||
− | // Textbox | + | // Textbox for changes-text |
− | createTextField( 'rc', 1, | + | createTextField('rc', 1, 3, 0, width, height); |
with (rc) { | with (rc) { | ||
+ | autosize = 'left'; | ||
selectable = false; | selectable = false; | ||
_quality = 'BEST'; | _quality = 'BEST'; | ||
Line 49: | Line 59: | ||
} | } | ||
− | // | + | if (stripes) { |
− | + | // Striped background | |
− | col = new Color( | + | createEmptyMovieClip('bg',0); |
− | col.setTransform( { rb: | + | for (i = 0; i<nchanges; i++) { |
− | + | createSymbol(bg,'rect','bg'+i,i); | |
− | + | var bgi = bg['bg'+i]; | |
− | + | col = new Color(bgi); | |
− | + | col.setTransform({rb:0xd4,gb:0xd4,bb:0xd4}); | |
− | + | bgi._width = width; | |
+ | bgi._height = lineHeight; | ||
+ | bgi._x = 0; | ||
+ | bgi._y = i*lineHeight; | ||
+ | if (i%2) bgi._visible = false; | ||
+ | } | ||
+ | bg._x = width/2; | ||
+ | bg._width = width; | ||
+ | bg._height = height; | ||
+ | } | ||
+ | else { | ||
− | // | + | // Logo in background (specified for inclusion in XML properties article) |
− | + | attachMovie('xmlwiki','bg',0); | |
− | + | with (bg) { | |
− | + | _xscale = _yscale = 75; | |
− | + | _x = (width-_width)/2; | |
− | + | _y = (height-_height)/2; | |
− | + | _alpha = 0; | |
− | + | } | |
− | + | } | |
− | |||
− | |||
− | attachMovie( ' | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
// Per-frame function | // Per-frame function | ||
Line 88: | Line 95: | ||
if ( offset < 0 ) offset++; | if ( offset < 0 ) offset++; | ||
rc._y = offset; | rc._y = offset; | ||
+ | if (stripes) bg._y = offset+500; | ||
// Make request on some regular cycle which seems about right | // Make request on some regular cycle which seems about right | ||
+ | // todo: move to socket.onData | ||
if ( ++_root.ctr%400 == 1 ) { | if ( ++_root.ctr%400 == 1 ) { | ||
server.SWF = id0; | server.SWF = id0; | ||
− | server.sendAndLoad( '/wiki/index.php', | + | server.INFO = 1; // request info if user unknown |
+ | server.sendAndLoad( '/wiki/index.php', recv, 'GET' ); | ||
} | } | ||
} | } | ||
+ | </source> |
Latest revision as of 13:17, 6 August 2024
// This is the script which compiles the logo with dynamic changes behind it
// - compiles [[[[Logo_Test|here]]]]
// - the info it renders is obtained from [[[[Special:Recentchanges]]]] and is generated by [[[[transform-changes.php]]]]
#include "box-model.as"
// Constants
background = parseInt(background,16);
bg_r = (background & 0xff0000)>>16;
bg_g = (background & 0x00ff00)>>8;
bg_b = (background & 0x0000ff);
fw = 20; // width of fades
id0 = 1;
changes = [];
change = false;
offset = -200;
stripes = (width >= 200);
lineHeight = height/nchanges; // NOTE: don't use rects for stripes, use multiples positioned textboxes
// Set up async connection with server
server = new LoadVars();
recv = new LoadVars();
server.title = 'Special:Recentchanges'; // wiki page to request
recv.onLoad = function(success) {
if (success) {
for (i = 0; i<nchanges; i++) {
row = recv['item'+i].split(',');
id = row.shift();
if ( ( i == 0 ) && ( id != id0 ) ) {
if ( id0 ) offset = -20;
id0 = id;
}
time = row.shift();
author = row.shift();
title = row.shift();
textcol = row.shift();
comment = row.join(',');
if (comment != '') title = comment;
changes[i] = '<font size="9" face="arial, helvetica" color="'+textcol+'">'+time+': (<u><font color="#217A28">'+author+'</font></u>) ';
changes[i] += title+'</font><font face="arial" size="10"> </font><br>';
}
rc.htmlText = changes.join('');
// Get info if any returned
if (recv.user) _root.user = recv.user;
}
};
// Textbox for changes-text
createTextField('rc', 1, 3, 0, width, height);
with (rc) {
autosize = 'left';
selectable = false;
_quality = 'BEST';
border = false;
multiline = true;
wordWrap = false;
html = true;
}
if (stripes) {
// Striped background
createEmptyMovieClip('bg',0);
for (i = 0; i<nchanges; i++) {
createSymbol(bg,'rect','bg'+i,i);
var bgi = bg['bg'+i];
col = new Color(bgi);
col.setTransform({rb:0xd4,gb:0xd4,bb:0xd4});
bgi._width = width;
bgi._height = lineHeight;
bgi._x = 0;
bgi._y = i*lineHeight;
if (i%2) bgi._visible = false;
}
bg._x = width/2;
bg._width = width;
bg._height = height;
}
else {
// Logo in background (specified for inclusion in XML properties article)
attachMovie('xmlwiki','bg',0);
with (bg) {
_xscale = _yscale = 75;
_x = (width-_width)/2;
_y = (height-_height)/2;
_alpha = 0;
}
}
// Per-frame function
function reduce() {
// Scrolling
if ( offset < 0 ) offset++;
rc._y = offset;
if (stripes) bg._y = offset+500;
// Make request on some regular cycle which seems about right
// todo: move to socket.onData
if ( ++_root.ctr%400 == 1 ) {
server.SWF = id0;
server.INFO = 1; // request info if user unknown
server.sendAndLoad( '/wiki/index.php', recv, 'GET' );
}
}