penguin.
|
Join Date: Jul 2004
Location: Berkeley, CA
Posts: 534
|
|
http://forums.graalonline.com/forums...ad.php?t=79671
Also with regards to chaining, I've been hanging on to this because I wanted to make it more extensible (like jQuery), but I've yet to devise an elegant solution. Anyway, you can check out the attachments. It includes some tweening functionality (specifically, linear and sinusiodal). Here's an example, the Zenkou message system.
PHP Code:
// Zenkou Messaging System (Growl Edition!)
// Styled after Growl (http://growl.info)
// v0.1
function onCreated() { this.join("boilerplate"); }
//#CLIENTSIDE
const PRE = "zen_messages_";
function getlock() {
if (this.lock) {
while (!waitfor(this.name, "onMessage" @ this.num));
this.num++;
}
this.lock = true;
return;
}
function release() {
if (this.lock) {
this.lock = false;
this.trigger("Message" @ this.num, NULL);
}
return;
}
function growl(stitle, text, icon, time) {
if (text > 0) { time = text; text = stitle; stitle = ""; icon = "alert"; }
if (icon > 0) { time = icon; icon = text; text = stitle; stitle = ""; }
if (time == 0) { time = 10; }
if (text == "") { text = stitle; stitle = ""; }
echo("[" @ int(timevar2) @ "] " @ stitle); echo(text);
temp.lines = wraptext2(238, 2/3, " -", "@verdana@@" @ text);
temp.ys = {};
temp.h = max(32, 18 * (temp.stitle != "") + 16 * temp.lines.size());
for (temp.i = 0; temp.i < temp.lines.size(); temp.i++)
temp.ys.add(6 + 16 * (temp.stitle != "") + 16 * temp.i);
for (temp.i = this.messages.size(); temp.i > -1; temp.i--) {
if (this.messages[temp.i].objecttype() == "TGraalVar")
this.messages.delete(temp.i);
else this.messages[temp.i].duplicate().set("y", "+=" @ (temp.h + 10));
}
temp.sw = screenwidth;
temp.bg = $()
.images(9, 200)
.set("image", PRE @ "blackbox.png")
.set("layer", 7)
.set("alpha", 1)
.set("mode", 1)
.set("zoom", 1)
.set("partx", { 0, 10, 20 })
.set("party", { 0, 0, 0, 10, 10, 10, 20, 20, 20 })
.set("partw", 10)
.set("parth" , 10)
.set("stretchx", { 1, 28, 1 })
.set("stretchy", { 1, 1, 1, temp.h/10-1, temp.h/10-1, temp.h/10-1, 1, 1, 1 })
.set("x", { temp.sw - 303, temp.sw - 158, temp.sw - 13 })
.set("y", { 4, 4, 4, 4+temp.h/2, 4+temp.h/2, 4+temp.h/2, 4+temp.h, 4+temp.h, 4+temp.h })
;
if ( stitle != "" ) {
temp.title = $()
.images(1, 200)
.set("text", stitle)
.set("zoom", 0.7)
.set("font", "verdana")
.set("style", "b")
.set("layer", 8)
.set("x", temp.sw - 251)
.set("y", 4)
;
}
temp.desc = $()
.images(temp.lines.size(), 200)
.set("text", temp.lines)
.set("zoom", 2/3)
.set("font", "verdana")
.set("layer", 8)
.set("x", temp.sw - 251)
.set("y", temp.ys)
;
temp.icon = $()
.images(1, 200)
.set("image", PRE @ "icon_" @ icon @ ".png")
.set("layer", 8)
.set("mode", 1)
.set("x", temp.sw - 294)
.set("y", temp.h/2 - 9)
;
(temp.merged = $());
temp.merged
.merge({ temp.bg, temp.title, temp.desc, temp.icon })
.wait(time)
.call(
this.clear_out = function (args) {
temp.q = args[0];
temp.h = args[1];
temp.on = false;
for (temp.i = this.messages.size()-1; temp.i > -1; temp.i--) {
temp.msg = this.messages[temp.i];
if (temp.msg.objecttype() == "TGraalVar") continue;
if (temp.msg == temp.q) temp.on = true;
elseif (temp.on) {
temp.msg
.duplicate()
.tween("y", "-=" @ (temp.h + 10), 1)
.wait(1)
;
}
}
}, { temp.merged, temp.h }
)
.tween("alpha", 0, 1)
.wait(1)
.end()
;
this.messages.add(temp.merged);
}
public function addmsg(title, desc, icon, dur) {
getlock();
growl(title, desc, icon, dur);
release();
}
Of course I was aiming for something a little more sophisticated than a series of chained set()s for image manipulation when I started writing it but meh. |
__________________
Killa Be: when i got that locker in 6th grade the only thing in it was a picture of a midget useing a firehose :/
|
|