hallo,
ich habe ein problem in svg. es ixistiert eine vielazhl von objekten, denen ich verschiedene animationen zuordnen möchte. im genauen sidn es räume eines gebäudes, die blinken sollen. dazu kann ich ein element <animate> nutzen.
mit der folgenden funktion sendata() wähle ich den index aus einem menü aus, dies ist die id der zimmernummer, die dann blinken soll:
function SendData() {
var theSelIdx = document.form1.TheSel.options[document.form1.TheSel.options.selectedIndex].value;
var theSelName = document.form1.TheSel.options[document.form1.TheSel.options.selectedIndex].text;
//checken der Eingaben
if (theSelIdx < 0) {
alert(unescape("Keine Auswahl getroffen%21"));
} else {
document.cookie = "TheRoom = " + theSelIdx;
document.cookie = "TheUser = " + theSelName;
var TheSVGE = document.getElementById('TheHouse').getSVGDocument().getElementById(theSelIdx);
var svgdoc = TheSVGE.getOwnerDocument();
var ich = document.getElementById('TheHouse').getSVGDocument().getElementById('tempus');
if (ich != null) {
alert('object leider immernoch da');
var theToDelMother = ich.getParentNode();
theToDelMother.removeChild(ich);
}
anineu=svgdoc.createElement("animate");
anineu.setAttribute("id","tempus");
anineu.setAttribute("attributeName","fill-opacity");
anineu.setAttribute("attributeType","CSS");
anineu.setAttribute("begin","0s");
anineu.setAttribute("dur","0.5s");
anineu.setAttribute("fill","freeze");
anineu.setAttribute("from","0.6");
anineu.setAttribute("to","0.1");
anineu.setAttribute("repeatCount","20");
anineu.setAttribute("calcMode", "discrete");
anineu.setAttribute("onend", "bla()");
TheSVGE.appendChild(anineu);
}
}
function bla() {
alert('bla');
}
das funktionniert klasse, danach soll aber der user ein anderes zimmer auswählen, d.h. die animation soll gelöscht werden und an ein anderes objekt (raum) anhgehangen werden. das geht irgendwie nicht, denn ich bekomme die animation nicht mehr weg. nur beim ersten mal geht alles gut. dann dachte ich ich kann mit
anineu.setAttribute("onend", "bla()");
erreichen, daß am ende der animation die funktion bla() ausgeführt wird. aber irgendwie wird das ignoriert. aus disem grunde die lösung mit:
if (ich != null) {
alert('object leider immernoch da');
var theToDelMother = ich.getParentNode();
theToDelMother.removeChild(ich);
}
aber das geht irgendwie nicht so recht.
hoffe, mir kann jetzt jemand weiterhelfen, denn ich bin mit meinem svg-latein am ende... wie also kann ich die animation wieder entfernen und an einem anderen objekt anhängen...
michael