Search code examples
actionscript-3frameworkscomponentsapache-royale

What's difference between all Button classes on Apache Royale, which are the more efficient?


Please could you clarify my comprehension of the packages having similar component ? For exemple let's take a Button.

(update: Looking at sources, I guess that Royale is a set of several projects. The list is in apache-royale-0.9.6-bin-js\royale-asjs\frameworks\projects folder. Some projects are about same componant like Button that is in basic project, Jewel project, MDL project, HTML project, HTML5 project etc...)

I have the choice of :

1) mx.controls.Button => Ok I read that's for emulated component. I beleve not the most efficient but easy to use it for Flex to Apache Royale code migration

2) org.apache.royale.html.Button => I'm not very familiar with HTLM but I beleve it's the HTML Button tag (<BUTTON>)

3) org.apache.royale.html5.Button => well, what difference with 2) ?

4) org.apache.royale.jewel.Button => it's the Button component of Jewel. Has some specifics properties, near of a "Flex Button", can show "mouse hand" pointer when hovering it, etc... I beleve I must use this one.(update: well not sure, I have difficult to skin it, basic's Button seems easy to skin, I'm not sure but I think I must override IBeadView: ClassReference("org.apache.royale.jewel.beads.views.ButtonView") to set my own skin)

5) org.apache.royale.mdl.Button => what is this ?Looking at source code, it's Material Design Lite components

6) spark.components.Button => I beleve like 1) but for spark components and not mx ?

7) what's difference between <js:HGroup> (basic package) an <j:HGroup> (jewel package) ? Is it same thing or has more advanced options and/or beads usables for <j:HGroup> ?

Best regards


Solution

  • Royale is a framework that does not attempt to impose a single set of components or close the paths to different codes. Unlike Apache Flex, where we only had the MX and SPARK components, in Royale we have several, and we hope others will create other sets based on Royale foundations, to target different needs.

    1) MX Button. Correct, the goal is to migrate from Flex. MXRoyale is a library that uses Basic one below. The objective is to find the minimum recoding when moving from Flex to Royale. At the moment the main problem is at the level of look and feel the appearance is very basic (at least for the moment), in fact is based on Basic ;), that is the a set that creates a set with the minimum needs (this is PAYG - Pay As You Go that is a core concept in Royale).

    2) HTML Button. Correct, it is simply a class that ultimately creates an HTML button, really nothing of more value here, since you can have a JS Button directly in Royale, but since we have an HTML library, is must have represented all HTML tags.

    3) HTML5 Button. In principle use the HTML5 specification, nothing more, but the same as 2).

    4) Jewel Button: Jewel is a set of components with predefined themes and styles and that creates a structure for them so that it is easy to create other themes and switch between them. Jewel is maybe the most developed set in Royale right now to work as close as Flex did, but as well targeting modern concepts not present in Flex like responsivity, mobile devices,... can be a good option if you migrate from Flex but wants to redo the visual parts to match modern apps with components like Drawers, badges, TopAppBars or Snackbars...

    5) MDL Button, is a port of Material Design Lite. It's about proving that Royale can wrap other JS libraries so that we can use them with AS3 and MXML easily. If you look for MDL is ok, but if you want to change look and feel at some time, you'll be tied to MDL. For that reason other options like Jewel could be better, since make switch themes more easy.

    6) SPARK Button, right, as you said.

    7) Basic/Jewel HGroup. The main differences between the layouts of Basic and those of Jewel, is that in Basic they are more based on JS. Jewel tries to use more the advantages of CSS, so it delegates many things to CSS styles when possible.