Lively Kernel canvas
// this script is evaluated on world load
400)
this.error('Error in login/receive from stream. Message: ' + newText);
// newText can be a list of cr lf separated json messages
// call onLogin/onReceive just with one json obj at a time
var messages = newText.split('\r\n');
messages.pop(); // remove last empty string
messages.forEach(function(message) {
var json = lively.webcollab.parseJson(message);
if (reqTextPos === 0 || json.isLoginMessage /*FIXME under heavy load reqTextPos not 0 when login response arrives*/) {
this._isLoggedIn = json && json.isSuccess;
this.onLogin(req);
} else {
this.onReceive(json);
}
}, this);
}]]> 400) {
var json = JSON.unserialize(req.responseText);
this.error('Logout not successful ' + json.status);
}
this._isLoggedIn = false;
}]]> 400)
this.error('Error requesting active users');
var json = JSON.unserialize(req.responseText);
this.onGetActiveUsers(json.activeUsers);
}]]>= 400)
this.error('Failure issuing request. Status: ' + req.status + ' ' + req.responseText);
};
req.open(method, url, !sync);
req.send(content);
return req;
}]]>
ProgrammierenimWebmitLivelyKernel18null
savefalsenull
truenull
saveas...falsenullnull
null
10008.841560191637277e-7Wikicontroltrue
-HilfefürinteraktiveEntwicklung-alt+dführteineZeile/Bereichausalt+pführteineZeile/BereichausundfügtdasErgebnisindenTexteinEinenCodeBrowseröffnen:WorldMenu->Tools...->LocalcodeBrowserEinTextFensterzumprogrammieren:WorldMenu->ComplexMorphs...->TextWindowEinenMorphbenennen:RechtsklickaufMorph->Properties...->editname...EinenButtonbauen:ComplexMorphs...->ButtonMorph.DannRechtsklickaufButton->Editscript/EditlabelBenanntenMorphimTextreferenzieren:$morph('dieserTextMorph')EineneueKlasseoderbeimStartauszuführendenCodeanlegen:KontextmenüimLocalcodeBrowseröffnenundaddclassoderadddoitanklicken14 Tools... -> Local code Browser\nEin Text Fenster zum programmieren: World Menu -> Complex Morphs... -> Text Window\n\nEinen Morph benennen: Rechtsklick auf Morph -> Properties... -> edit name...\nEinen Button bauen: Complex Morphs... -> ButtonMorph. Dann Rechtsklick auf Button -> Edit script/Edit label\nBenannten Morph im Text referenzieren: $morph('dieserTextMorph')\n\nEine neue Klasse oder beim Start auszuführenden Code anlegen:\nKontextmenü im Local code Browser öffnen und add class oder add doit anklicken\n"]]>
-KleinerJavaScriptÜberblick-Dynamischgetypt3+47varx='EinString';vary=10;x+y;EinString10Arraysarray=[1,'String']SyntaxähnlichzuCfor(vari=0;i<10;i++){varmorph=Morph.makeCircle(pt(100+(i*40),100),20)morph.openInWorld();}undefinedObjektorientiertobjekt={x:1,y:'HalloWelt',toString:function(){returnthis.y+this.x}}objekt.toString()KlassenObject.subclass('MyNewClass',{einAttribut:5,eineMethode:function(){return'HalloWelt'+this.einAttribut}})instanz=newMyNewClass()instanz.eineMethode()KleinesBeispielprogrammgraph=Morph.makeLine([pt(0,0)],2,Color.black)graph.openInWorld()for(varx=0;x<2*Math.PI;x+=0.1){vary=Math.sin(x)*100+200;varpoint=pt(x*100,y);graph.shape.addPoint(point);}undefinedgraph.remove()1422
worldsavedtotest.xhtmlin1348ms16null
10002.4581573948703928Wikicontroltrue
Loginfalsenullfalsenull
ThisisaTextMorph
ThisisaTextMorph
Logoutfalsenullfalsenull
nullfalsetruenullfalse
lively.webcollab.WebChatClient:onLogoutfalsenullfalse
false
false
falsenullfalse
localrequirementsfalsetruefalse0false
initializerfalsetruefalse0false
lively.webcollab.WebChatClientfalsetruefalse0false
webcollabextensionsfalsetruefalse0false3102nullnulltruetruetrue
1true
null
null
null
nulltruetrue
isLoggedInfalsetruefalse0false
userfalsetruefalse0false
channelfalsetruefalse0false
initializefalsetruefalse0false
isLoggedInfalsetruefalse0false
setUserfalsetruefalse0false
setChannelfalsetruefalse0false
onLoginfalsetruefalse0false
onLogoutfalsetruefalse0false
onStreamClosefalsetruefalse0false
onReceivefalsetruefalse0false
onSentDonefalsetruefalse0false
onGetActiveUsersfalsetruefalse0false
errorfalsetruefalse0false
loginfalsetruefalse0false
logoutfalsetruefalse0false
broadcastfalsetruefalse0false
getActiveUsersfalsetruefalse0false
resetfalsetruefalse0false
setupTestStreamfalsetruefalse0false
getDocumentfalsetruefalse0false
deleteDocumentfalsetruefalse0false
privateOnLoginAndReceivefalsetruefalse0false
privateOnStreamClosefalsetruefalse0false
privateOnLogoutfalsetruefalse0false
privateOnGetActiveUsersfalsetruefalse0false
testStreamCloseCbfalsetruefalse0false
performActionfalsetruefalse0false
makeRequestfalsetruefalse0false3108nullnulltruefalsenullnulltruetrue
1true
null
null
null
nulltruetrue
onLogout:function(request){this.shouldBeLoggedIn=false;},2truetrue2000000truetrue
1truetruetrue
Browseworld...falsenullfalse
Pushchangesbackfalsenullfalse
Refreshfalsenullfalse
Evalonfalsenullfalse
Sortfalsenullfalse
truetruenullfalsenullnullnullnullfalse
ThisisaTextMorph1
Sendfalsenullfalsenull
nulltrueagent.broadcast({text:'HalloWelt',channel:'bwinf'})truetruefalsetruetruefalse
false1truefalsetruetruefalse
nullfalsetruenullfalse
falsenullfalse
false
false
falsenullfalsefalsenullnullnullnullfalse
null48