Yeah I guess a state is a mixin, whose apply() method adds some views
and installs some constraints, and the remove() method removes them.
So we could implement that at compile time
I guess...
So, I should remove the warning for methods in states , right?
On Sun, Mar 16, 2008 at 9:52 AM, P T Withington <[EMAIL PROTECTED]> wrote:
> Yeah, but it seems we need to allow methods in states, as common
> subroutines. I think we just have to document that a method in a
> state is really just a method on the parent. We need to do this at
> compile time eventually, and warn you if you are trying to override a
> method on the parent... hey, maybe a state is really just a mix-in?
>
>
>
> On 2008-03-16, at 09:42 EDT, Henry Minsky wrote:
>
> > Oh, my check only warns when you use method in an instance that is a
> > descendant of state, not in a
> > class definition that extends state. I'll add that check.
> >
> >
> > On Sun, Mar 16, 2008 at 9:38 AM, Henry Minsky
> > <[EMAIL PROTECTED]> wrote:
> >> I'll check why the warning isn't getting generated.
> >>
> >>
> >>
> >> On Sun, Mar 16, 2008 at 8:51 AM, P T Withington <[EMAIL PROTECTED]>
> >> wrote:
> >>> We have a problem:
> >>>
> >>> dragstate has an internal method, __dragstate_get_newpos, that is
> >>> used
> >>> by the constraints that it installs. The constraints run in the
> >>> parent, so they expect that internal method of dragstate to be in
> >>> the
> >>> parent. It doesn't really need to be applied/removed; it just needs
> >>> to be there for when the constraints are applied.
> >>>
> >>> I thought I had updated to include your new warning, but I am not
> >>> getting a warning on this. It is used by the swf debugger, so
> >>> should
> >>> be triggering a warning, no?
> >>>
> >>> Anyways, we might have to re-think our policy about no methods in
> >>> states. Not that they can't have methods, but that any methods they
> >>> contain become methods on the parent, automatically.
> >>>
> >>>
> >>>
> >>> On 2008-03-15, at 16:45 EDT, Henry Minsky wrote:
> >>>
> >>>> in base/basewindow.lzx, I moved the setDragPos method to be
> >>>> outside of
> >>>> the state, given that we will
> >>>> be phasing out support for methods inside of states.
> >>>>
> >>>>
> >>>>
> >>>>
> >>>> <state name="_windowDrag">
> >>>> <attribute name="starty" value="$once{this.y}"/>
> >>>> <attribute name="startx" value="$once{this.x}"/>
> >>>> <attribute name="ydoffset" value="this.getMouse( 'y' )"
> >>>> when="once" />
> >>>> <attribute name="xdoffset" value="this.getMouse( 'x' )"
> >>>> when="once" />
> >>>> <attribute name="y"
> >>>> value="${setDragPos('y',
> >>>> this.immediateparent.getMouse( 'y' ))}"/>
> >>>> <attribute name="x"
> >>>> value="${setDragPos('x',
> >>>> this.immediateparent.getMouse( 'x' ))}"/>
> >>>> </state>
> >>>>
> >>>> <method name="setDragPos" args="xory, mousepos"> <![CDATA[
> >>>> var newpos = mousepos - this[xory + 'doffset'];
> >>>> var diff = this[xory] - this['start' + xory];
> >>>> if (Math.abs(diff) > 3) {
> >>>> setAttribute('state', 3);
> >>>> }
> >>>> return newpos;
> >>>> ]]>
> >>>> </method>
> >>>>
> >>>> --
> >>>> Henry Minsky
> >>>> Software Architect
> >>>> [EMAIL PROTECTED]
> >>>
> >>>
> >>
> >>
> >>
> >> --
> >> Henry Minsky
> >> Software Architect
> >> [EMAIL PROTECTED]
> >>
> >
> >
> >
> > --
> > Henry Minsky
> > Software Architect
> > [EMAIL PROTECTED]
>
>
--
Henry Minsky
Software Architect
[EMAIL PROTECTED]