{"id":13744917,"url":"https://github.com/rakuten/MovieSheet","last_synced_at":"2025-05-09T04:31:12.819Z","repository":{"id":18853541,"uuid":"22069938","full_name":"rakuten/MovieSheet","owner":"rakuten","description":"ActionScript 3.0 Bitmap Render Engine","archived":false,"fork":false,"pushed_at":"2016-07-12T05:47:06.000Z","size":36,"stargazers_count":12,"open_issues_count":0,"forks_count":8,"subscribers_count":6,"default_branch":"master","last_synced_at":"2024-11-15T16:41:51.937Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"ActionScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/rakuten.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2014-07-21T15:38:07.000Z","updated_at":"2021-01-18T23:11:25.000Z","dependencies_parsed_at":"2022-09-09T10:01:30.616Z","dependency_job_id":null,"html_url":"https://github.com/rakuten/MovieSheet","commit_stats":null,"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rakuten%2FMovieSheet","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rakuten%2FMovieSheet/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rakuten%2FMovieSheet/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rakuten%2FMovieSheet/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/rakuten","download_url":"https://codeload.github.com/rakuten/MovieSheet/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":253191767,"owners_count":21868804,"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":[],"created_at":"2024-08-03T05:01:18.433Z","updated_at":"2025-05-09T04:31:12.596Z","avatar_url":"https://github.com/rakuten.png","language":"ActionScript","funding_links":[],"categories":["Unsorted"],"sub_categories":["Other API"],"readme":"MovieSheet\n==========\n\nActionScript 3.0 Dynamic Convert MovieClip To Bitmap Render Engine\n\nMovieSheet是一款将MovieClip动态转换为Bitmap的引擎，整个库的大小为16k，设计初衷是为优化旧的纯矢量资源项目，以尽量少的修改工作量，来实现项目的性能优化，但实际使用下来发现，不单是旧项目可以进行性能优化，新项目的使用也绝对是游刃有余，只需修改半行代码(你没看错，只需半行....^^)，即可让你的矢量项目转变为位图项目，无需任何编辑器，无需预先导出序列帧，无需修改图形资源，甚至基本无需改原有代码，1秒让你的项目性能瞬间提升100倍!\n\n\nMovieSheet特点:\n--------------\n+ 支持缩放处理(再也不会因为缩放而出锯齿了!)\n+ 支持矢量资源的镜像，缩放，反转\n+ 自带生成位图时的分帧解析以优化生成Bitmap时的卡顿\n+ 自带资源释放管理\n+ 多实例共用同一BitmapData降低内存占用\n+ 支持透明区域点击判断\n+ 支持透明区域碰撞判断(hitTestPoint())\n+ 同屏1800个对象可维持在24帧速率(3000个对象可维持在10帧)\n+ 支持MovieClip的帧标签\n+ 完全兼容MovieClip所有接口(本身就是MovieClip子类)\n\n\n使用方法:\n----------\n**实例化**\n```actionscript\n\t\t//旧代码\n\t\tvar npc:MovieClip = new NpcAsset();\n\t\taddChild(npc);\n\t\t\n\t\t//使用MovieSheet，专用于多帧嵌套动画序列，如4或8方向角色MC\n\t\tvar npc:MovieClip = new MovieSheet (new NpcAsset());\n\t\taddChild(npc);\n\n\t\t//使用MovieTween，专用于纯补间动画\n\t\tvar sword:MovieClip = new MovieTween(new SwordAsset);\n\t\t\n\t\t//MovieSheet与MovieTween使用方法全完相同，仅为了处理不同类型资源的逻辑而区分开\n```\n\n**缩放**\n```actionscript\n\t\tnpc.scale = 1.2;\n\t\t//每次设置scale时都会重绘BitmapData，以达到消除锯齿的目地\n```\n\n**回收**\n```actionscript\n\t\tnpc.dispose();\n\t\t//ps:请为每个实例单独调用dispose()方法，\n\t\t//内部资源管理会在资源引用计数为0的情况下消毁BitmapData\n```\n\n**透明区域点击**\n```actionscript\n\t\tnpc.enableTransparentEvent = false;\n\t\t//如设置为false则性能会有些微的下降\n```\n\n**延迟绘制Bitmap**\n```actionscript\n\t\t//实例化时将第2个参数设置为flase\n\t\tvar npc:MovieClip = new MovieSheet (new NpcAsset(), false);\n\t\taddChild(npc);\n\t\t\n\t\t//然后在你想要绘制的地调用scale\n\t\tnpc.scale = 1;\n\t\t//当然，也可以设置为任何你想要的缩放比例\n\t\t//npc.scale = 0.5;\n\t\t//npc.scale = 1.75;\n```\n\n**判断绘制完成**\n```actionscript\n\t\tnpc.addEventListener(Event.COMPLETE, npc_drawCompleteHandler);\n\t\t//每次设置scale参数时，也都会触发此事件\n```\n\n**内存共享**\n```actionscript\n\t\t//仅需为原来的mc设置相同的name值，即可达到内存共享的目的\n\t\tvar npcMc:MoiveClip = new NpcAsset();\n\t\tnpcMc.name = \"npc\";\n\t\tvar npc:MoiveClip = new MovieSheet(npcMc);\n\t\taddChild(npc);\n\t\t\n\t\t//不管传入的npcMc是否为同一个实例，只要name值一样，即可进行内存共享\n\t\t//所有BitmpaData仅会在第一次传入后绘制生成，也就是说就算你像下面这样用\n\t\t//npc1和npc2也会显示出完全相同的内容\n\t\tvar npcMc1:MoiveClip = new NpcAsset();\n\t\tnpcMc1.name = \"npc\";\n\t\tvar npc1:MoiveClip = new MovieSheet(npcMc1);\n\t\taddChild(npc1);\n\t\t\n\t\tvar npcMc2:MoiveClip = new MovieClip();\n\t\tnpcMc2.name = \"npc\";\n\t\tvar npc2:MoiveClip = new MovieSheet(npcMc2);\n\t\taddChild(npc2);\n\t\t//但这样使用会造成npc2无法正常使用scale参数(因为使用的是一个空MC)\n\t\t//如果想正常使用scale进行缩放，\n\t\t//请在MovieSheet实例化时传入真实的NpcAsset实例\n```\n\nFAQ:\n----------------\n**使用MovieClip作为基类性能是否有影响?**\n\n经测试，同屏1800个对象可维持24帧的速率\n\n**缩放后有锯齿怎么办?**\n\n请使用MovieSheet.scale参数进行缩放\n\n**为什么使用scale进行缩放，而不是scaleX和scaleY?**\n\n为兼容旧项目考虑，某些旧项目会使用负数的scaleX和scaleY进行镜像\n\n**为什么不使用Worker进行进一步性能优化?**\n\n考虑到手机程序不支持多线程，所以未实现，但不排队以后实现的可能\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frakuten%2FMovieSheet","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frakuten%2FMovieSheet","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frakuten%2FMovieSheet/lists"}