|
From: Michele M. <m....@ly...> - 2001-01-22 16:24:31
|
Hi all,
I'm trying to use DynAPI to built my personal widgets, but I found some
misteriuos crashing when resizing NS (4.72) on NT 4.0 (NS 4.72 on Linux
RedHat 6.2 works fine; also with IE 5.5 works fine).
I didn't understand your answers very well on this arguments ...
Try resizing this example ("lxbutton.js" is my widget rollover button) for
about 10 times and you'll see the crashing:
(Note I dont' re-create the widget in l.oncrerate() event!)
--- code of "lxbutton.js" -----------
function lxbutton(x,y,w,h,caption,color,bdc1,bdc2,rollOver) {
this.superClass=DynLayer
this.superClass()
this.id="lxbutton"+(lxbutton.Count++)
this.moveTo(x||0,y||0)
this.setSize(w||128,h||36)
this.caption=caption||''
var l=new EventListener(this)
l.oncreate=function(e) {
if (this.created) return
o=e.getTarget()
o.setBgColor(color)
c1=color
c2=color
if (!rollOver) {
c1=bdc1
c2=bdc2
}
o.BorderL=new DynLayer(null,0,0,1,o.h,c1)
o.BorderT=new DynLayer(null,0,0,o.w,1,c1)
o.BorderR=new DynLayer(null,o.w-1,1,1,o.h-1,c2)
o.BorderB=new DynLayer(null,1,o.h-1,o.w-1,1,c2)
o.addChild(o.BorderL)
o.addChild(o.BorderT)
o.addChild(o.BorderR)
o.addChild(o.BorderB)
x1=6
x2=6
if (!rollOver) {
x1=5
x2=5
}
o.dyncaption=new DynLayer(null,x1,x2,o.w-6,o.h-6)
o.dyncaption.setHTML(o.caption)
o.addChild(o.dyncaption)
if (!is.ns) o.dyncaption.addEventListener(o.events)
o.dynevents = new DynLayer(null,0,0,o.w,o.h)
if (!is.ns) o.dynevents.addEventListener(o.events)
o.addChild(o.dynevents)
o.setVisible(true)
this.created=true
}
this.addEventListener(l)
this.events=new EventListener(this)
this.events.onmousedown=function(e)
o=e.getTarget()
o.BorderL.setBgColor(bdc2)
o.BorderR.setBgColor(bdc1)
o.BorderT.setBgColor(bdc2)
o.BorderB.setBgColor(bdc1)
o.dyncaption.moveTo(6,6)
}
this.events.onmouseup=function(e) {
o=e.getTarget()
o.BorderL.setBgColor(bdc1)
o.BorderR.setBgColor(bdc2)
o.BorderT.setBgColor(bdc1)
o.BorderB.setBgColor(bdc2)
o.invokeEvent("click")
o.dyncaption.moveTo(5,5)
}
if (rollOver)
this.events.onmouseover=function(e){
o=e.getTarget()
o.BorderL.setBgColor(bdc1)
o.BorderR.setBgColor(bdc2)
o.BorderT.setBgColor(bdc1)
o.BorderB.setBgColor(bdc2)
o.dyncaption.moveTo(5,5)
}
this.events.onmouseout=function(e){
o=e.getTarget()
o.BorderL.setBgColor(color)
o.BorderR.setBgColor(color)
o.BorderT.setBgColor(color)
o.BorderB.setBgColor(color)
o.dyncaption.moveTo(6,6)
}
}
if (is.ns) this.addEventListener(this.events)
return this
}
lxbutton.Count=0
lxbutton.prototype=new DynLayer()
lxbutton.prototype.getSubClass=function() { return lxbutton }
------ code of "test.html" --------
<html>
<head><title>DynAPI2 tutor - button widget</title>
<Script language="Javascript" src="./js/dynapi.js"></script>
<Script language="Javascript">
DynAPI.setLibraryPath('./js/lib/')
DynAPI.include('dynapi.api.*')
</script>
<Script language="Javascript" src="./lxbutton.js">
</script>
<Script language="Javascript">
DynAPI.onLoad=function() {
// a no-rollover button
myButton=new lxbutton(50,50,220,60,'<img src="logo.gif">Click
Me','#c0c0c0','#f0f0f0','#808080',false)
DynAPI.document.addChild(myButton)
// 3 rollover buttons
layer=new DynLayer(null,280,20,350,400,'#b21104')
DynAPI.document.addChild(layer)
myLxButton0=new lxbutton(50,50,260,60,'<img src="logo.gif">Click and Over
Me','#b21104','#ffffff','#808080',true)
layer.addChild(myLxButton0)
myLxButton1=new lxbutton(50,120,260,60,'<img src="logo.gif">Click and Over
Me','#b21104','#ffffff','#808080',true)
layer.addChild(myLxButton1)
myLxButton2=new lxbutton(50,190,260,60,'<img src="logo.gif">Click and Over
Me','#b21104','#ffffff','#808080',true)
layer.addChild(myLxButton2)
}
</script>
</head>
<body>
</body>
</html>
So, what is my error?
Thanx in advance.
Michele Muner.
|