Using ObjectMap could be an option if you want both SWF and JS code to run,
but is not really warranted IMO if the main goal is to migrate away from
SWF, because the api is the same as Map, and is indirect use of the Map  -
so why add the extra overhead? Also if you can avoid switching the original
code to the new api in some cases, when all that is needed (for string
keys) is an object hash, so that's why I think that's a bit easier. After
porting 8 or 9 codebases now, this is simply the approach I have settled on
in these cases.

What I hope to do is get something similar to work, but for it to use the
original dynamic access that works for flash.utils.Dictionary for both
targets instead of switching both implementations to use the approach that
Map uses (get/set/delete methods). That's not possible simply using
javascript Proxy, but it will be possible using some compiler smarts and
internal use of WeakRef in js implementation in the case of weak keys.
Something for later...





On Sun, Nov 14, 2021 at 12:57 PM Edward Stangler <estang...@bradmark.com>
wrote:

>
> Why not use org.apache.royale.utils.ObjectMap?
>
>
>
> On 11/13/2021 3:24 PM, Greg Dove wrote:
> > Sure, if you want, Andrew. This is the way I do it currently, and in some
> > cases this has been done within the current framework code (e.g. in Crux
> > code there is some use of Map to replace Dictionary in js, iirc)
> >
> > I do expect to come up with an approach that works much closer to the
> > original flash Dictionary using a combination of compiler support,
> similar
> > to thej [RoyaleArrayLike] support and framework code (which would use the
> > relatively recent WeakRef support in js).
> > I also believe it will be possible to match flash event listener apis
> with
> > support for weak listeners (also using WeakRef - and I would add event
> > priority support at the same time).
> > But both of these updates would be opt-in and would only be for quite
> > modern browsers, but would allow for more unchanged code when porting
> > legacy apps. At the moment these are just ideas/vague plans, I need to
> find
> > the time for that.
> >
> >
> >
> >
> > On Sun, Nov 14, 2021 at 10:07 AM Andrew Wetmore wrote:
> >
> >> Greg, can I throw that into documentation as a workaround?
> >>
> >> On Sat., Nov. 13, 2021, 4:45 p.m. Greg Dove, wrote:
> >>
> >>> Hi Hugo,
> >>>
> >>> I might change this in the near future. But for now, here is the
> general
> >>> 'rule of thumb' that I use:
> >>>
> >>> If the instance only has string keys (or int/uint/Number/Boolean keys
> >>> should be ok too) then use a plain Object. All code can pretty much
> then
> >>> remain unchanged.
> >>>
> >>> If it is using object instances (any complex object like functions or
> >> class
> >>> instances, or generic object instances) as keys, then
> >>>
> >>> a) use native js Map if the original constructor argument does not have
> >>> weakKeys=true, or if it has weakKeys= true and there is any form of
> >>> iteration over keys (you cannot iterate over keys in a WeakMap in
> >>> javascript)
> >>>
> >>> b) otherwise use WeakMap.
> >>>
> >>> Both (a) and (b) require you to change code for get/set ([]
> >>> access/assignment in as3) or delete operator, and also code related to
> >>> iteration (use map.forEach in js).
> >>> see docs for those:
> >>>
> >>>
> >>
> https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map
> >>>
> >>
> https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WeakMap
> >>>
> >>>
> >>>
> >>> On Sun, Nov 14, 2021 at 9:34 AM Hugo Ferreira <hferreira...@gmail.com>
> >>> wrote:
> >>>
> >>>> Hi,
> >>>>
> >>>> I see that there is no Dictionary on Royale, probably because there is
> >> a
> >>>> better method.
> >>>> What the approach in Royale for a Dictionary ?
> >>>>
>
>

Reply via email to