{"id":13742700,"url":"https://github.com/HendrixString/Falcon","last_synced_at":"2025-05-09T00:31:39.260Z","repository":{"id":27509594,"uuid":"30990186","full_name":"HendrixString/Falcon","owner":"HendrixString","description":"Responsive/Flexible UI controls for Feathers-UI","archived":false,"fork":false,"pushed_at":"2016-02-22T08:01:05.000Z","size":32570,"stargazers_count":21,"open_issues_count":0,"forks_count":4,"subscribers_count":6,"default_branch":"master","last_synced_at":"2024-11-15T13:39:35.047Z","etag":null,"topics":["actionscript","adobe-air","feathers","flash","starling-framework"],"latest_commit_sha":null,"homepage":"","language":"ActionScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/HendrixString.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2015-02-18T22:20:03.000Z","updated_at":"2023-04-05T21:49:11.000Z","dependencies_parsed_at":"2022-09-02T09:11:12.417Z","dependency_job_id":null,"html_url":"https://github.com/HendrixString/Falcon","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/HendrixString%2FFalcon","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/HendrixString%2FFalcon/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/HendrixString%2FFalcon/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/HendrixString%2FFalcon/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/HendrixString","download_url":"https://codeload.github.com/HendrixString/Falcon/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":253170982,"owners_count":21865273,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["actionscript","adobe-air","feathers","flash","starling-framework"],"created_at":"2024-08-03T05:00:35.156Z","updated_at":"2025-05-09T00:31:37.352Z","avatar_url":"https://github.com/HendrixString.png","language":"ActionScript","readme":"# Falcon \n a Feather/Starling extension of responsive/flexible ui controls and general mobile\n framework.\n \n## How to use\nsimply fork or download the project, you can also download the binary itself and link it\nto your project, or import to your IDE of choice such as `Flash Builder 4.7`. We support\n`Starling 1.6` and `Feathers 2` and at least version 15 of `Adobe AIR SDK` is recommended.\n\n## Features\n- flexible ui components will save you tons of code for layout purposes.\n- packed with `Hendrix GfxManager` and a content manager for managing assets packages. seamless texture\nreliazation through factory classes.\n- packed with `Hendrix Collection` for standard data structures.\n- support for `Bidirectional Bitmap fonts`.\n- packed with a vast amount of tested code in realife projects.\n- completely free for use\n\n### Introduction\n\nEvery component is a `FlexComp` object, every flexible component has the following\nproperties:\n* `percentWidth` - the width percentage of the control based on it's parent( or `relativeCalcWidthParent`) \n* `percentHeight` - the height percentage of the control based on it's parent( or `relativeCalcHeightParent`) \n* `top, bottom, left, right` - the margin in exact pixels\n* `topPercentHeight, bottomPercentHeight` - the margin based on percentages of parent height \n* `leftPercentWidth, rightPercentWidth` - the margin based on percentages of parent width\n* `horizontalCenter` - how far is the control from being centered horizontally\n* `verticalCenter` - how far is the control from being centered vertically\n* `relativeCalcWidthParent` - you can change the parent on which percentage based layout\n* `relativeCalcHeightParent` - you can change the parent on which percentage based layout\n* `horizontalAlign`, `verticalAlign` - layout property for children layout alignment\n* `isSensitiveToParent` - should the control be sensitive to his parent changes\n* `id` - identifier\n* `backgroundSkin` - a skin for background\n\n##### Examples\n1. a drawer with two number pickers. the layout is done automatically. saves ton of\nlayout code that usually goes into `draw()` method\n```actionscript\noverride protected function initialize():void\n{\n  var hgTimer:    HGroup                            = new HGroup();\n  var nPicker1:   NumberPicker                      = new NumberPicker();\n  var nPicker2:   NumberPicker                      = new NumberPicker();\n  var img:        FlexImage                         = new FlexImage();\n  var drawerTime: PullDrawer                        = new PullDrawer();\n\n  hgTimer.gapPercentWidth                           = 0;\n  hgTimer.percentWidth                              = 99;\n  hgTimer.percentHeight                             = 20;\n  hgTimer.horizontalCenter                          = 0;\n  hgTimer.horizontalAlign                           = HorizontalLayout.HORIZONTAL_ALIGN_CENTER;\n  hgTimer.verticalAlign                             = VerticalLayout.VERTICAL_ALIGN_MIDDLE;\n\n  nPicker1.buttonMinus                              = CompsFactory.newButton(SColors.PURPLE, SColors.PURPLE, null, null, null,false,\"main::ssMain.icon_minus\",true,\"center\",true) as FlexButton;\n  nPicker1.buttonPlus                               = CompsFactory.newButton(SColors.PURPLE, SColors.PURPLE, null, null, null,false,\"main::ssMain.icon_Add\",true,\"center\",true) as FlexButton;\n  nPicker1.buttonPercentHeight                      = 0.25;\n  nPicker1.maxRange                                 = 24;\n  nPicker1.onChange                                 = numberPicker_onChange;\n\n  nPicker2.buttonMinus                              = CompsFactory.newButton(SColors.PURPLE, SColors.PURPLE, null, null, null,false,\"main::ssMain.icon_minus\",true,\"center\",true) as FlexButton;\n  nPicker2.buttonPlus                               = CompsFactory.newButton(SColors.PURPLE, SColors.PURPLE, null, null, null,false,\"main::ssMain.icon_Add\",true,\"center\",true) as FlexButton;\n  nPicker2.buttonPercentHeight                      = 0.25;\n  nPicker2.maxRange                                 = 60;\n  nPicker2.onChange                                 = numberPicker_onChange;\n\n  img.source                                        = \"main::ssMain.icon_:\";\n  img.percentHeight                                 = 50;\n  img.scaleMode                                     = FlexImage.SCALEMODE_LETTERBOX;\n\n  hgTimer.addChild(nPicker1);\n  hgTimer.addChild(img);\n  hgTimer.addChild(nPicker2);\n\n  // Drawer Timer\n\n  drawerTime.mainContent                            = new Quad(1,1,SColors.TILE_GREY,false);\n  drawerTime.drawerContent                          = hgTimer;\n  drawerTime.horizontalAlign                        = HorizontalLayout.HORIZONTAL_ALIGN_CENTER;\n  drawerTime.drawerContentPercentWidth              = 100;\n\n  drawerTime.toggleDrawer()\n\n  addChild(drawerTime)\n}\n```\n\n2. loading packages.\nfor complete usage learning of the `GfxManager`, consult it's own repository, or the source\n\n```actionscript\nprivate function loadGfxPacks():void\n{\n  gfxManager                                     = GfxManager.instance;\n\n  var mrpMain:  GfxPackage                        = gfxManager.addOrGetContentPackage(\"main\") as GfxPackage;\n  \n  mrpMain.loadTexturesAutomatically               = true;\n  mrpMain.enqueue(\"assets/packages/general/spinner.png\",  \"spinner\",    LocalResource.TYPE_BITMAP);\n  // texture atlas\n  mrpMain.enqueue(\"assets/packages/main/ssMain.png\",      \"ssMain\",     LocalResource.TYPE_BITMAP);\n  mrpMain.enqueue(\"assets/packages/main/ssMain.xml\",      \"ssMainXML\",  LocalResource.TYPE_XML);\n  // texture atlas\n  mrpMain.enqueue(\"assets/packages/main/quickIcons.png\",  \"quickIcons\");\n  mrpMain.enqueue(\"assets/packages/main/quickIcons.xml\",  \"quickIconsXML\");\n  \n  var mrpAvatarSelect:GfxPackage                  = gfxManager.addOrGetContentPackage(\"avatar\") as GfxPackage;\n  \n  mrpAvatarSelect.loadTexturesAutomatically       = true;\n  mrpAvatarSelect.enqueue(\"assets/packages/avatarSelection/sprite.png\", \"sprite\");\n  mrpAvatarSelect.enqueue(\"assets/packages/avatarSelection/sprite.xml\", \"spriteXML\");\n\n  gfxManager.loadPackages(\"*\", onGfxLoaded);\n}\n\nprivate function onGfxLoaded($obj:Object = null):void\n{\n  ready();\n  \n  var img:FlexImage  = new FlexImage();\n  img.source         = \"main::ssMain.icon_love\";\n  \n  var btn:FlexButton = CompsFactory.newButton(\"avatar::sprite.btn_down\", \"avatar::sprite.btn_up\", btnDate_onTriggered, null, null, false, null, true) as FlexButton;      \n}\n\n```\n\n3. Splash Screen. based on flash Sprite and not on Stage3D, since it is inited before stage3d\n\n```actionscript\npublic function startSplash(flashSpriteParent:flash.display.DisplayObjectContainer):void\n{\n  _appSplash              = new BitmapLayersComposer(flashSpriteParent);\n\n  _appSplash.dataProvider = Vector.\u003cObject\u003e([\n    {id:\"1\",  src: SEmbeddedAssets.bm_splash_BG_,     percentWidth: 100,  percentHeight: 100, scaleMode: BitmapLayersComposer.SCALEMODE_STRECTH,    bottom: NaN, top:NaN, left:NaN ,right:NaN, horizontalCenter:0, verticalCenter:0},\n    {id:\"2\",  src: \"app/logos/bm_splash_logo1.png\",   percentWidth: 75,   percentHeight: 100, scaleMode: BitmapLayersComposer.SCALEMODE_LETTERBOX,  bottom: NaN, top:NaN, left:NaN ,right:NaN, horizontalCenter:0, verticalCenter:-40},\n    {id:\"3\",  src: \"app/logos/bm_splash_logo2.png\",   percentWidth: 60,   percentHeight: NaN, scaleMode: BitmapLayersComposer.SCALEMODE_LETTERBOX,  bottom: 44, top:NaN,  left:NaN ,right:NaN, horizontalCenter:0, verticalCenter:NaN}\n  ]);\n\n  _appSplash.start();\n}\n\n```\n\n### UI Breakdown\n\n- a full set of core flexible components\n  * `FlexLabel` resizes font size according to width/height.\n  * `FlexImage` supports three scale modes *STRECTH, LETTERBOX, ZOOM*\n  * `FlexButton` resizes both default icon and font's size.\n  * `FlexQuad` - flex version of Quad\n  * `FlexList` - flex version of List\n  * `FlexTextInput` - flex version of TextInput\n  * `DynamicTextInput` - a realtime dynamic font sizing textinput to fit text in a frame\n\n- a set of layout flexible components\n  * `ActionBar` a very lite Action Bar component packed with flex features\n  * `HGroup` robust horizontal layout\n  * `VGroup` robust vertical layout\n  * `FlexTabBar` a tab bar\n  * `FlexTabBarC` another version of tab bar\n\n- a set of dialog flexible components\n  * `DatePickerDialog` date picker dialog\n  * `TimePickerDialog` time picker dialog\n  * `DateAndTimePickerDialog` date and time picker dialog\n  * `Dialog` general dialog with provided content\n  * `WarningDialog` a warning dialog\n  * `PopupLoader` a dialog with loader animation\n\n- a set of extended flexible components\n  * `PullDrawer` - a drawer component\n  * `DatePicker` a date picker component\n  * `TimePicker` a time picker component\n  * `ZoomContainer` a zoomable sprite\n  * `NumberPicker` a number picker component\n  * `AnimatedControl` a copntainer that can perform vertical toggle aniamtion\n  * `FlexPageIndicator` flex page indication\n  * `SnapList` a list that snaps its closest item to the center\n  * `LabelList` a vertical snap list of numbers\n  * `MagnifyList` a horizontal snap list that magnifies it's content\n  * `LazyList` lazy image list\n  * `MainWindow` a main window with navigator\n  * `HamMainWindow` a main window with hamburger drawer\n  * `AudioNote` an audio recording component\n  * `BitmapLayersComposer` flash based image composer, works with a data provider with\nlayout options. great for dynamic splash screens\n  * `BidiTextField` Bidirectional Text field with *bitmap fonts*. based on another repository i have published\n  * `TLFLabel` Bidirectional Image text label based on `Adobe TLF`.\n  * `HitButton` a flex button with a definable Polygon hit area.\n  * `DragHitButton` a draggable button with ability to register objects for drop on and events.\n  * `MovieClipButton` a flex button with `MovieClip` skin and sound and events.\n\n- a set of widgets\n  * `ListUpdateWidget` - a widget that hooks to a list to augment it with pull to refresh feature. \n  * `SimpleLoader` - a simple rotating image\n\n### Data\n* data tech\n\n  * `ImageStreamer` - use HTTP to ask for images, cache them, and get notified when they arrive\n  * `SQLSerialData` - a humble SQL lite ORM wrapper over serialized data structure\n\n* utilities\n  * Serialization, Bitmap, Calendar and more utilities\n\n### Demo\n\n\u003ca href=\"http://www.youtube.com/watch?feature=player_embedded\u0026v=MCp_mLN_W94\n\" target=\"_blank\"\u003e\u003cimg src=\"http://img.youtube.com/vi/MCp_mLN_W94/0.jpg\" \nalt=\"IMAGE ALT TEXT HERE\" width=\"240\" height=\"180\" border=\"10\" /\u003e\u003c/a\u003e\n\n### Dependencies\n* [`Starling-Framework`](https://github.com/Gamua/Starling-Framework)\n* [`Feathers`](https://github.com/joshtynjala/feathers)\n\n### Terms\n* completely free source code. [Apache License, Version 2.0.](http://www.apache.org/licenses/LICENSE-2.0)\n* if you like it -\u003e star or share it with others\n\n### Contact Author\n* [tomer.shalev@gmail.com](tomer.shalev@gmail.com)\n* [Google+ TomershalevMan](https://plus.google.com/+TomershalevMan/about)\n* [Facebook - HendrixString](https://www.facebook.com/HendrixString)\n","funding_links":[],"categories":["User Interface"],"sub_categories":["Flex Components"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FHendrixString%2FFalcon","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FHendrixString%2FFalcon","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FHendrixString%2FFalcon/lists"}