{"id":20078743,"url":"https://github.com/wpdas/physic_as3","last_synced_at":"2026-03-03T22:32:26.067Z","repository":{"id":77498440,"uuid":"64422341","full_name":"wpdas/Physic_AS3","owner":"wpdas","description":"Biblioteca de Física (Gravidade, Densidade, Resistência, Força, Impulsão e Colisão) - AS3","archived":false,"fork":false,"pushed_at":"2016-09-02T14:48:43.000Z","size":2131,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-03-02T13:14:46.521Z","etag":null,"topics":[],"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/wpdas.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,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2016-07-28T19:25:39.000Z","updated_at":"2016-07-29T06:16:34.000Z","dependencies_parsed_at":null,"dependency_job_id":"56c12370-eaa8-46d7-82ec-e7bc69d35249","html_url":"https://github.com/wpdas/Physic_AS3","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/wpdas/Physic_AS3","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wpdas%2FPhysic_AS3","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wpdas%2FPhysic_AS3/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wpdas%2FPhysic_AS3/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wpdas%2FPhysic_AS3/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/wpdas","download_url":"https://codeload.github.com/wpdas/Physic_AS3/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wpdas%2FPhysic_AS3/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30064327,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-03T18:21:05.932Z","status":"ssl_error","status_checked_at":"2026-03-03T18:20:59.341Z","response_time":61,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":[],"created_at":"2024-11-13T15:16:24.863Z","updated_at":"2026-03-03T22:32:26.034Z","avatar_url":"https://github.com/wpdas.png","language":"ActionScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"![alt tag](https://github.com/Wpdas/Physic_AS3/blob/master/docs/billard-gl.png)\n# Physic AS3 v1.2.0\n\u003eAuthor: Wenderson Pires - wpdas@yahoo.com.br\n\nPhysic é uma Framework para simulação de física. Foi construída para ser usada em jogos simples que necessitam de ações simples naturalizadas da física.\nÉ compatível com AIR Mobile (Android e iOS) e AIR Desktop.\n\n#### Principais Características:\n\n- Simular Gravidade;\n- Simular Resistência;\n- Simular Força;\n- Simular Força Resultante;\n- Simular Colisão;\n- Simular Impulsão;\n- Compatibilidade com Starling.\n\n#### Dados disponíveis para estudo:\n| Tipo | Descrição |\n| --- | --- |\n| Documentação | [Documentação completa da biblioteca v1.0.0](https://rawgit.com/Wpdas/Physic_AS3/master/docs/index.html). |\n| Arquivo de Exemplo | [Arquivos prontos para teste (projeto .fla) v1.0.0](https://github.com/Wpdas/Physic_AS3/tree/master/example). |\n\n## Como Usar\nBaixe este exemplo abaixo para ver o funcionamento: [Example Files v1.0.0](https://github.com/Wpdas/Physic_AS3/tree/master/example).\n\n```actionscript\npackage  {\n\t\n\timport com.physic.Gravity;\n\timport com.physic.body.RigidBody;\n\timport com.physic.body.StaticBody;\n\timport com.physic.display.SpritePhysic;\n\timport com.physic.event.BodyEvent;\n\timport com.physic.pivot.Pivot;\n\timport com.physic.plugin.native.gestouch.GestouchRecognize;\n\timport flash.display.Sprite;\n\timport flash.events.Event;\n\t\n\t/**\n\t* Exemplo de uso da biblioteca\n\t* @version 1.2.0\n\t*/\n\tpublic class Main extends Sprite {\n\t\t\n\t\t//Elemento estático comum\n\t\tprivate var background:Sprite;\n\t\t\n\t\t//Física\n\t\tprivate var gravity:Gravity;\n\t\tprivate var rocketBody:RigidBody;\n\t\tprivate var meteorBody:RigidBody;\n\t\tprivate var planetOneBody:RigidBody;\n\t\tprivate var planetTwoBody:RigidBody;\n\t\tprivate var groundStaticBody:StaticBody;\n\t\t\n\t\t//Elementos (Devem ser setados na base da biblioteca caso sejam instanciadas lá)\n\t\tprivate var rocket:SpritePhysic;\n\t\tprivate var meteor:SpritePhysic;\n\t\tprivate var planet1:SpritePhysic;\n\t\tprivate var planet2:SpritePhysic;\n\t\tprivate var ground:SpritePhysic;\n\t\t\n\t\t//Multitouch usando plugin GestouchRecognize\n\t\tprivate var mtRocket1:SpritePhysic;\n\t\tprivate var mtRocket2:SpritePhysic;\n\t\tprivate var mtRocket1Body:RigidBody;\n\t\tprivate var mtRocket2Body:RigidBody;\n\t\t\n\t\tpublic function Main() {\n\t\t\t\n\t\t\t//Cria elementos\n\t\t\tbackground = new Background();\n\t\t\tbackground.x = -16;\n\t\t\tbackground.y = 0;\n\t\t\taddChild(background);\n\t\t\t\n\t\t\tground = new Ground();\n\t\t\tground.updatePivot(Pivot.TOP_CENTER);\n\t\t\tground.x = 265;\n\t\t\tground.y = 729;\n\t\t\taddChild(ground);\n\t\t\t\n\t\t\trocket = new Rocket();\n\t\t\trocket.updatePivot(Pivot.CENTER); //Atualiza Pivot (Ponto de registro do objeto)\n\t\t\trocket.x = 636;\n\t\t\trocket.y = 623;\n\t\t\taddChild(rocket);\n\t\t\t\n\t\t\t//Elementos para multitoque\n\t\t\tmtRocket1 = new RocketMT();\n\t\t\tmtRocket1.updatePivot(Pivot.BOTTOM_CENTER);\n\t\t\tmtRocket1.x = 400;\n\t\t\tmtRocket1.y = 623;\n\t\t\taddChild(mtRocket1);\n\t\t\t\n\t\t\tmtRocket2 = new RocketMT();\n\t\t\tmtRocket2.updatePivot(Pivot.BOTTOM_CENTER);\n\t\t\tmtRocket2.x = 837;\n\t\t\tmtRocket2.y = 623;\n\t\t\taddChild(mtRocket2);\n\t\t\t\n\t\t\tplanet1 = new PlanetOne;\n\t\t\tplanet1.updatePivot(Pivot.CENTER);\n\t\t\tplanet1.x = 117;\n\t\t\tplanet1.y = 148;\n\t\t\taddChild(planet1);\n\t\t\t\n\t\t\tmeteor = new Meteor();\n\t\t\tmeteor.updatePivot(Pivot.MANUAL_POINT(meteor.width/2, 120));\n\t\t\tmeteor.x = 905.50;\n\t\t\tmeteor.y = 184.60;\n\t\t\taddChild(meteor);\n\t\t\t\n\t\t\tplanet2 = new PlanetTwo();\n\t\t\tplanet2.x = 1040;\n\t\t\tplanet2.y = 122;\n\t\t\taddChild(planet2);\n\t\t\t\n\t\t\t//Aplica fisica\n\t\t\t//Força da Física Gravitacional\n\t\t\tgravity = new Gravity(5);\n\t\t\t//gravity.gravity = 15; //(!) pode ser alterada a força de atração gravitacional\n\t\t\t\n\t\t\t//Elementos a qual a Física gravitacional interage\n\t\t\tgroundStaticBody = new StaticBody(ground);\n\t\t\tgravity.insertBody(groundStaticBody);\n\t\t\t\n\t\t\trocketBody = new RigidBody(rocket, 1);\n\t\t\trocketBody.isDown = false;\n\t\t\trocketBody.addEventListener(BodyEvent.ON_TAP_CLICK, ignition); //Aciona ignicao no foguete\n\t\t\trocketBody.addEventListener(BodyEvent.ON_MOVE_UP, onRocketMoveUp);\n\t\t\trocketBody.addEventListener(BodyEvent.ON_BODY_STOP, onRocketMoveUp);\n\t\t\trocketBody.addEventListener(BodyEvent.ON_MOVE_DOWN, onRocketMoveDown);\n\t\t\tgravity.insertBody(rocketBody);\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t//Elementos de multitouch usando plugin Gestouch\n\t\t\tmtRocket1Body = new RigidBody(mtRocket1, 1);\n\t\t\tmtRocket1Body.isDown = false;\n\t\t\tmtRocket1Body.addPlugin(GestouchRecognize);\n\t\t\tmtRocket1Body.addEventListener(BodyEvent.ON_TAP_CLICK, onTapMultitouchGestouchRecognize);\n\t\t\tgravity.insertBody(mtRocket1Body);\n\t\t\t\n\t\t\tmtRocket2Body = new RigidBody(mtRocket2, 1);\n\t\t\tmtRocket2Body.isDown = false;\n\t\t\tmtRocket2Body.addPlugin(GestouchRecognize);\n\t\t\tmtRocket2Body.addEventListener(BodyEvent.ON_TAP_CLICK, onTapMultitouchGestouchRecognize);\n\t\t\tgravity.insertBody(mtRocket2Body);\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\tplanetOneBody = new RigidBody(planet1, 3, true);\n\t\t\tgravity.insertBody(planetOneBody);\n\t\t\tplanetOneBody.addHorizontalForce(10);\n\t\t\t\n\t\t\tplanetTwoBody = new RigidBody(planet2, 1);\n\t\t\tgravity.insertBody(planetTwoBody);\n\t\t\t\n\t\t\tmeteorBody = new RigidBody(meteor, 2);\n\t\t\tgravity.insertBody(meteorBody);\n\t\t\t\n\t\t\t\n\t\t\t//Ativa renderizador\n\t\t\taddEventListener(Event.ENTER_FRAME, render);\n\t\t}\n\t\t\n\t\t/**\n\t\t * Quando tocar num elemento que usa o Plugin GestouchRecognize para multtoque (somente para display sensiveis a toque)\n\t\t * @param\te\n\t\t */\n\t\tprivate function onTapMultitouchGestouchRecognize(e:BodyEvent):void \n\t\t{\n\t\t\t//Insere força vertical\n\t\t\t(e.target as RigidBody).addVerticalForce( -15);\n\t\t}\n\n\t\t//Altera escala do Foguete\n\t\tprivate function onRocketMoveUp(e:BodyEvent):void {\n\t\t\t\n\t\t\trocketBody.body.pivot.scaleY = 1;\n\t\t}\n\t\t\n\t\t//Altera escala do Foguete\n\t\tprivate function onRocketMoveDown(e:BodyEvent):void {\n\t\t\t\n\t\t\trocketBody.body.pivot.scaleY = -1;\n\t\t}\n\t\t\n\t\t//Aciona ignição no foguete\n\t\tprivate function ignition(e:BodyEvent):void {\n\t\t\t\n\t\t\t//e.target.addVerticalForce(-15); (!) Também funciona\n\t\t\trocketBody.addVerticalForce(-15);\n\t\t\t\n\t\t\t//Remove corpo da força gravitacional\n\t\t\tgravity.removeBody(planetOneBody);\n\t\t}\n\t\t\n\t\tprivate function render(e:Event):void {\n\t\t\t\n\t\t\tgravity.render();\n\t\t}\n\t}\n\t\n}\n\n\n```\n\nLog de Alterações (changelog)\n-----\n####version 1.2.0 - 2016-09-02\n- Inserido a possibilidade de criar Plugins\n- Primeiro plugin nativo criado \"GestouchRecognize\". Este plugin é usado para transformar o disparador de evento de toque em multitoque/Multitouch usando a biblioteca Gestouch.\n- Implementação em Body.as (Somente Body normal). Ainda não está disponível esta implementação para uso com Starling.\n\n####version 1.1.4 - 2016-08-14\n- Novo detector de evento\n- BodyEvent.ON_INTERSECTS usado para detectar quando um objeto entrar dentro do outro\n\n####version 1.1.3 - 2016-08-08\n- Novo detector de evento\n- BodyEvent.ON_COLLISION usado para detectar quando um objeto colidir com outro\n\n####version 1.1.2 - 2016-08-01\n- Implementação aprimorada de colisão de objetos Starling\n\n####version 1.1.1 - 2016-08-01\n- Inserção de compatibilidade com Starling\n- Correção estrutural do método \"removeBody()\" do elemento Gravity\n\n####version 1.0.0 - 2016-07-28\n- Primeira versão publicada\n\n\nLicense\n----\n\nMIT\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwpdas%2Fphysic_as3","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fwpdas%2Fphysic_as3","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwpdas%2Fphysic_as3/lists"}