I guess I don't really understand why they were used in the a/v
extensions. I'll take Max's word for it that the mediastream
implementation does nothing and remove the mixin there.
On Jan 9, 2009, at 8:44 AM, P T Withington wrote:
Note that mixin's are a 'power feature'. I consider them to still
be experimental, which is why the documentation is scarce. I don't
want them to be public, because I am not ready to commit to
supporting them.
Also note that a <mixin> is very different from a `mixin`. That is,
the LZX version is quite different from the JS version. The JS
version is pretty much a standard implementation of what CS would
consider a mixin (which is in CS considered a dangerous power tool,
not to be used lightly -- it's why Java and C# don't have them).
The LZX version is even crazier, because _I_assume_ an LZX mixin
needs to know how to mix in child nodes, states, placement,
handlers, constraints, etc., etc., etc. which are not something you
have in a plain old O-O language.
Bottom line: mixins are an optimization and you should follow my
usual rules about optimization when considering them:
Rule 1: Don't use them.
Rule 2 (for experts only): Don't use them yet.
(paraphrased from M. A. Jackson)
On 2009-01-09, at 07:50EST, Max Carlson wrote:
Since that mixin isn't really doing anything, you should be able to
just get rid of it. See tests/mixin for an example of how to do
this in LZX, or http://jira.openlaszlo.org/jira/browse/LPP-2302 for
the gory details.
Once we get all the code converted back to LZX syntax, we might
want to add a mixin that implements the runtime-specific bits.
Sarah Allen wrote:
I'm refactoring the av mediastream component to be regular LZX,
but I'm not familiar with the mixin syntax and I can find
documentation about (no luck with google or the ref guide... maybe
I'm blind)
Here's the snippet that I want to write the "new" way...
<script when="immediate"><![CDATA[
mixin NewmediastreamShared {
function NewmediastreamShared ( parent:LzView? = null ,
attrs:Object? = null , children:Array? = null, instcall:Boolean =
false) {
super(parent, attrs, children, instcall);
}
}
]]></script-->
(Trying to avoid that nasty setter bug, which I think is at the
root of why recording is broken)
Sarah
--
Regards,
Max Carlson
OpenLaszlo.org