--- Benoit Marchant <[EMAIL PROTECTED]> wrote: > Well, I would keep it. A problem I see in dynapi3 is > that the naming > conventions of the setter methods and their instance > variables isn't > consistent. It makes it harder to remember things, > particularly the > width and height. The instance variable are w and h, > but the methods > are setWidth/getWidth, so many time I found myself > using alayer.width. > I guess it's much more efficient in javascript to do > this.w = 0, the > this.setWidth(0), right ?
It's best to avoid writin to the properties of the objects. Please use the available functions when setting variables. Using the function setWidth() will perform certain checks on the w argument to ensure smooth running of the object. when reading values I could also suggested that you do the same. For example: the setCursor('hand') will cause a pointer to be displayed in ie, ns6+, and opera 7+. If you were to use lyr._cursor='hand' it will only work in ie but not in ns6,etc. Then same goes for getCursor(). If you were to use cur=lyr._cursor in ns6 after calling setCursor('hand') the value returned will be 'pointer' >Which means that for > performance reasons we > are (unfortunately) strongly encouraged to call as > less function as > possible ? > > Apart from the fact that it makes using the api a > little more > difficult, it makes it harder to automate setting a > value by a > dictionary that will be used by a function, like the > html property. The > method is setHTML, and the property is html. If they > were following a > consistent naming convention like > > property -> html > setter -> setHtml > > Then we could do something like the following: > > DynObject.prototype.takeValuesFromDictionary = > function(values) { > > for(var key in values) { > /* This would be a workaround when you want to call > a function without > relying of an existing naming convention: ex > aLayer.takeValuesFromDictionary({setHTML:'test'}); > if(typeof(this[key]) == "function") { > this[key](values[key]); > } > else { > */ > var setterName = 'set'+ > key.charAt(0).toUpperCase(); + > key.slice(1); > if(this[setterName] && > typeof(this[setterName] == > "function")) { > this[setterName](values[key]); > } > else > > this[key] = values[key]; > //} > } > } > > So the idea is that you first test if an setter > exists for this key, > and if it does, use it, otherwise affect the > instance variable directly. > The big win is on ease of use, and compact code, > which means less to > download. > > Related to this, I wonder what would be the > performance of using the > watch method on properties that need additional code > when set, like > html ? It would greatly reduce the use of functions. > Does anyone have > tried this from a performance point of view ? > > Benoit > > On Thursday, March 6, 2003, at 12:20 PM, Raymond > Irving wrote: > > > > > So would you suggest that we keep both methods or > just > > used the original method? > > > > Any other comments? > > > > -- > > Raymond Irving > > > > --- Benoit Marchant <[EMAIL PROTECTED]> wrote: > >> I ran the 2 versions in IE on the mac, creating > 2000 > >> layers with > >> speedtest.dynlayer-basic.html. And it looks like > the > >> regular method is > >> faster, but not all the time. I don't get > consistent > >> results each time. > >> > >> Benoit > >> > >> On Wednesday, March 5, 2003, at 09:20 AM, > Raymond > >> Irving wrote: > >> > >>> Hello, > >>> > >>> Benoit had originally suggested that we use a > >>> dictionary object (hash table) to pass > parameters > >> to > >>> DynLayers but that proved must slower than using > >>> html,x,y,w,h,color. 9I think I've found a way to > >> let > >>> the two co-exist: > >>> > >>> Old way - The original and fastest creation > >> method: > >>> > >>> DynLayer(html,x,y,w,h,bgcolor) > >>> > >>> New ways - slower but more flexible creation > >> methods: > >>> > >>> DynLayer({html:'Hello',x:100,y:100}); > >>> DynLayer({zIndex:2,w:100,h:100}); > >>> DynLayer({textSelectable:true}); > >>> > >> > > > DynLayer({anchor:{top:0,bottom:0},textSelectable:true}); > >>> DynLayer({textSelectable:false,html:'Cool!'}); > >>> DynLayer({x:100,y:100,w:10,h:10,visible:false}); > >>> > >>> inline layer - when id is set x,y,w,h,bgcolor,z > >> and > >>> html will be replaced with values from inline > div: > >>> > >>> DynLayer({id:'myinline'}); > >>> DynLayer({id:'boxer',anchor:{left:0:right:0}}); > >>> > >>> Optional arguments: > >>> x,y,w,h,html,bgColor,zIndex,textSelectable, > >>> anchor,visible,id > >>> > >>> > >>> Changes are inside the attached dynlayer_ie.js > >> file. > >>> Please perform all the speed test and > improvements > >> you > >>> can to see if the new creation method makes any > >> sense > >>> at all. > >>> > >>> > >>> -- > >>> Raymond Irving > >>> > >>> > >>> > >>> > __________________________________________________ > >>> Do you Yahoo!? > >>> Yahoo! Tax Center - forms, calculators, tips, > more > >>> http://taxes.yahoo.com/ > >>> > >>> > __________________________________________________ > >>> Do you Yahoo!? > >>> Yahoo! Tax Center - forms, calculators, tips, > more > >>> http://taxes.yahoo.com/<dynlayer_ie.zip> > >> > > > > > > __________________________________________________ > > Do you Yahoo!? > > Yahoo! Tax Center - forms, calculators, tips, more > > http://taxes.yahoo.com/ > > > > > > > ------------------------------------------------------- > > This SF.net email is sponsored by: Etnus, makers > of TotalView, The > > debugger > > for complex code. Debugging C/C++ programs can > leave you feeling lost > > and > > disoriented. TotalView can help you find your way. > Available on major > > UNIX > > and Linux platforms. Try it free. www.etnus.com > > _______________________________________________ > === message truncated === __________________________________________________ Do you Yahoo!? Yahoo! Tax Center - forms, calculators, tips, more http://taxes.yahoo.com/ ------------------------------------------------------- This SF.net email is sponsored by: Etnus, makers of TotalView, The debugger for complex code. Debugging C/C++ programs can leave you feeling lost and disoriented. TotalView can help you find your way. Available on major UNIX and Linux platforms. Try it free. www.etnus.com _______________________________________________ Dynapi-Dev mailing list [EMAIL PROTECTED] http://www.mail-archive.com/[EMAIL PROTECTED]/