Bugs item #425789, was updated on 2001-05-20 19:21
You can respond by visiting:
http://sourceforge.net/tracker/?func=detail&atid=105757&aid=425789&group_id=5757
Category: DynAPI 2 Events
Group: None
Status: Open
Resolution: None
Priority: 5
Submitted By: a.joannou (conan1)
Assigned to: (dodoron)
Summary: Events Fire On All Objects (same subcls)
Initial Comment:
On objects made from other objects which in turn are made from the DynLayer
(e.g.
scrollPane), eventListeners placed on one object, fire on ALL of them as outlined in
the following
example. Why is this? Is there a solution?
This problem is apparent on any objects created in the same way (e.g. if I
create an
object 'A' based on DynLayer, and then create an object 'B' based on object 'A', the
same problem
occurs).
This makes programming of complex objects IMPOSSIBLE.
Looking forward to your prompt reply.
Deli.
PS. Below is a simple Scrollpane example (example#1) outlining the problem.
Scrollpane#1 and Scrollpane#2 are created, but only Scrollpane#1 is given an
eventlistener to
listen for the 'create' event.
The problem is that the event fires ALSO when the Scrollpane#2 is created, when REALLY
I haven't
asked it to.
This does NOT happen if the example was made with DynLayers (example#2).
example#1
<html>
<head>
<title>CoreLib example</title>
</head>
<script language="Javascript" src="../src/dynapi.js"></script>
<script language="Javascript">
DynAPI.setLibraryPath('../src/lib/')
DynAPI.include('dynapi.api.*');
DynAPI.include('dynapi.event.*')
DynAPI.include('dynapi.util.thread.js');
DynAPI.include('dynapi.util.pathanim.js');
DynAPI.include('dynapi.gui.dynimage.js');
DynAPI.include('dynapi.gui.button.js');
DynAPI.include('dynapi.gui.scrollbar.js');
DynAPI.include('dynapi.gui.viewport.js');
DynAPI.include('dynapi.gui.scrollpane.js');
DynAPI.include('dynapi.gui.label.js');
//#################################################################
###########################
DynAPI.onLoad=function() {
label1 = new Label('<table border=1><tr><td width=160 height=160>label 1 alk
jskj slkj k
dkjkj dk skslkdjf lskd f</td></tr></table>')
label1.setWrap(false)
label1.setPadding(5)
label1.setBgColor('cyan')
label1.setSize(160,160)
label2 = new Label('<table border=1><tr><td width=160 height=160>label 1 alk
jskj slkj k
dkjkj dk skslkdjf lskd f</td></tr></table>')
label2.setWrap(false)
label2.setPadding(5)
label2.setBgColor('cyan')
label2.setSize(160,160)
//#################################################################
##########################//
//SCROLLPANE#1
//#################################################################
##########################//
var scrollpane1 = new ScrollPane(label1);
scrollpane1.setSize(150,150)
scrollpane1.moveTo(250,50)
scrollpane1.setBgColor('#c0c0c0')
//#################################################################
###########
//EVENT LISTENERS
//#################################################################
###########
var EListener1 = new EventListener();
//#################################################################
###########
EListener1.oncreate = function(e) {
var o=e.getSource();
alert("from SP1: "+o.id);
};
scrollpane1.addEventListener(EListener1);
DynAPI.document.addChild(scrollpane1);
//#################################################################
##########################//
//SCROLLPANE#2
//#################################################################
##########################//
var scrollpane2 = new ScrollPane(label2);
scrollpane2.setSize(150,150)
scrollpane2.moveTo(250,300)
scrollpane2.setBgColor('#c0c0c0')
DynAPI.document.addChild(scrollpane2);
}
</script>
<body bgcolor="#ffffff">
</body>
</html>
Below is the DynLayer example in which THIS effect does NOT happen.
The code has not been changed apart from the declarations of the objects ( new
ScrollPane(label2) -> new DynLayer() )
example#2
<html>
<head>
<title>CoreLib example</title>
</head>
<script language="Javascript" src="../src/dynapi.js"></script>
<script language="Javascript">
DynAPI.setLibraryPath('../src/lib/')
DynAPI.include('dynapi.api.*');
DynAPI.include('dynapi.event.*')
DynAPI.include('dynapi.util.thread.js');
DynAPI.include('dynapi.util.pathanim.js');
DynAPI.include('dynapi.gui.dynimage.js');
DynAPI.include('dynapi.gui.button.js');
DynAPI.include('dynapi.gui.scrollbar.js');
DynAPI.include('dynapi.gui.viewport.js');
DynAPI.include('dynapi.gui.scrollpane.js');
DynAPI.include('dynapi.gui.label.js');
//#################################################################
###########################
DynAPI.onLoad=function() {
label1 = new Label('<table border=1><tr><td width=160 height=160>label 1 alk
jskj slkj k
dkjkj dk skslkdjf lskd f</td></tr></table>')
label1.setWrap(false)
label1.setPadding(5)
label1.setBgColor('cyan')
label1.setSize(160,160)
label2 = new Label('<table border=1><tr><td width=160 height=160>label 1 alk
jskj slkj k
dkjkj dk skslkdjf lskd f</td></tr></table>')
label2.setWrap(false)
label2.setPadding(5)
label2.setBgColor('cyan')
label2.setSize(160,160)
//#################################################################
##########################//
//SCROLLPANE#1
//#################################################################
##########################//
var scrollpane1 = new DynLayer();
scrollpane1.setSize(150,150)
scrollpane1.moveTo(250,50)
scrollpane1.setBgColor('#c0c0c0')
//#################################################################
###########
//EVENT LISTENERS
//#################################################################
###########
var EListener1 = new EventListener();
//#################################################################
###########
EListener1.oncreate = function(e) {
var o=e.getSource();
alert("from SP1: "+o.id);
};
scrollpane1.addEventListener(EListener1);
DynAPI.document.addChild(scrollpane1);
//#################################################################
##########################//
//SCROLLPANE#2
//#################################################################
##########################//
var scrollpane2 = new DynLayer();
scrollpane2.setSize(150,150)
scrollpane2.moveTo(250,300)
scrollpane2.setBgColor('#c0c0c0')
DynAPI.document.addChild(scrollpane2);
}
</script>
<body bgcolor="#ffffff">
</body>
</html>
----------------------------------------------------------------------
You can respond by visiting:
http://sourceforge.net/tracker/?func=detail&atid=105757&aid=425789&group_id=5757
_______________________________________________
Dynapi-Dev mailing list
[EMAIL PROTECTED]
http://lists.sourceforge.net/lists/listinfo/dynapi-dev