1.Storybook vue2组件库搭建到 npm 发布【入门篇】
2.vueVue3中使用函数调用组件内函数和创建组件超详细+源码
3.GitLab ARM64源码在信创统信UOS下的源码搭建
4.ç»ä»¶çå
·ä½å建
5.FUTU六语言秒合约交易所源码详细搭建教程
6.UGUI 源码笔记(一)文件结构和部分组件使用
Storybook vue2组件库搭建到 npm 发布【入门篇】
Storybook 是一个强大的前端开发工具,专为组件管理和测试设计。组件它帮助开发者以交互方式构建、搭建测试和展示组件,操作提供独立的源码页面,便于快速展示和调试。组件推广管理系统 源码以下是搭建使用Storybook进行组件库搭建到npm发布的基本步骤:1. 安装和初始化项目
使用Node ..0和npm 8..4,可通过`npx -p @storybook/cli sb init --type vue`快速创建Vue 2版本的操作项目。然后,源码使用Vue CLI创建`vue2-storybook-module`。组件2. 启动和打包组件
进入项目,搭建关联git仓库,操作安装Storybook。源码接下来,组件封装组件并注册,搭建官网示例可以直接使用。记得修改`package.json`以配置打包,生成的`my-storybook-ui`文件夹存放打包后的组件。3. 发布到npm
在`my-storybook-ui`目录下,初始化`package.json`,并切换到npm官方源。如果已有账号,通过命令行发布,检查包名是否冲突。发布成功后,可在npm官网上查看你的包。4. 在项目中使用组件
在`main.js`中全局注册组件,启动项目后,其他开发者即可通过npm安装和使用你的组件库。 源码及更多详细信息可在以下链接找到:源码:github.com/you-hei-mi/v...
组件地址:my-storybook-ui - npm (npmjs.com)
组件文档:Configure your project - Docs ⋅ Storybook
vueVue3中使用函数调用组件内函数和创建组件超详细+源码
在uniapp项目中,结合vue3和typescript,你可能会遇到不想频繁在视图层引入组件的困扰。传统的通达信优化副图源码组件应用方式需要每次使用时都进行应用,即使不使用也需引入。为了解决这个问题,你可能尝试通过函数调用直接创建和操作组件。
首先,你可能会查阅到使用`createApp`方法,创建组件实例并传递参数,就像父组件传递数据给子组件。例如:
然而,直接在`createApp`中调用组件方法可能并不直接有效。此时,你可以考虑转向函数式组件(h)和`render`函数。将组件的方法挂载到vue原型链上,以便在外部函数中调用。例如在`toast.ts`中:
typescript
// toast.ts
Vue.prototype.$toast = function(message) {
// 实现 toast 方法...
};
然后在项目中这样使用:
显示提示
最后,记得分享你的发现,关注个人博客和开源项目,加入技术交流群组,与他人交流学习,共同进步。如果你在过程中遇到问题,欢迎留言,大家会一起探讨解答。
GitLab ARM源码在信创统信UOS下的搭建
GitLab是一个基于Ruby on Rails语言开发的开源应用,提供私有化的Git项目仓库,可通过Web界面进行访问和管理。GitLab官方提供了多种安装方式,包括通过操作系统软件源安装、Docker容器部署以及源代码自编译安装。然而,GitLab官方构建的软件包和镜像主要针对X架构,并未提供针对ARMv8的版本。UOS操作系统支持多种CPU架构(AMD、汇智知了堂和源码时代ARM、MIPS、SW)和六种国产CPU平台(鲲鹏、龙芯、申威、海光、兆芯、飞腾)以及Intel/AMD的主流CPU,UOSV基于Debian stable,内核为4.,支持多种架构。由于GitLab官方Omnibus安装包并未支持arm架构,因此需要通过源码编译来安装GitLab-ce .1-stable在UOSV arm架构上。
在部署GitLab-ce .1-stable之前,首先需要搭建编译环境,包括Ruby 2.7.4、redis 6.2.4、git 2..0、Go:.、Postgres: 、Node: .x、Nginx:1..1。编译过程较为平顺,但安装Ruby、Node和Go时需要注意选择国内镜像源以确保顺利编译。GitLab-ce:-1-stable版本要求Git2..x或以上版本,推荐使用Gitaly提供的git版本。UOSV 版本若选择调试工具包,则系统自带的git版本不符合要求,需要手动安装Gitaly所提供的git版本,确保版本满足GitLab要求。安装完成后,神奇波段顶底指标公式源码系统会显示版本为2..0,满足要求。此外,还需安装GraphicsMagick支持GitLab引入的自定义图标功能,以及安装Postfix邮件服务器和exiftool以支持GitLab Workhorse功能。Ruby的安装也非常重要,更换国内Ruby Gem源能够提高编译过程的稳定性。
在完成编译环境搭建后,需为GitLab创建一个名为git的用户。GitLab .1及以后版本仅支持PostgreSQL数据库,GitLab-ce .1-stable需要PostgreSQL 或以上版本,并且需要pg_trgm扩展和btree_gist扩展。GitLab .0及以后版本要求Redis版本4.0或以上,推荐使用6.0或以上版本。部署GitLab-ce .1-stable需要编译三个部分:gitLab核心代码、gitlab-shell和GitLab-Workhorse。编译完成后,主要目录结构会根据部署环境进行相应调整。
配置GitLab的各个组件时,需要将源码配置调整为已搭建环境的配置。主要修改数据库配置为已安装的PostgreSQL 版本。安装过程中可能会遇到一些小问题,如使用sudo执行某些命令时的超时错误。解决这类问题通常需要检查和调整环境变量,确保git账号的环境变量能够正常工作。例如,通过修改/etc/sudoers文件,确保在执行sudo命令时保留所需的环境变量,如GOPROXY。安装完成后,GitLab及其环境应已正确配置,系统架构识别为arm,友情链接自动收录程序源码GitLab版本为.1,redis版本未读取但不影响使用。至此,GitLab在UOSV arm架构上成功部署完毕。
ç»ä»¶çå ·ä½å建
ç®ä»å建ç»ä»¶å°±æ¯èªè¡è®¾è®¡å¶ä½åºæ°çç»ä»¶ã ã设计ç»ä»¶æ¯ä¸é¡¹ç¹éçå·¥ä½ãèªè¡å¼åç»ä»¶ä¸ä½¿ç¨ç»ä»¶è¿è¡å¯è§åç¨åºå¼ååå¨çæ大çä¸åï¼è¦æ±ç¨åºåçç¥åæçVCLç±»åºç»æï¼ç²¾éé¢å对象ç¨åºè®¾è®¡ã设计ç»ä»¶æ¯ä¸é¡¹è°è¦çå·¥ä½ã对äºç»ä»¶çå¼åè ï¼ç»ä»¶æ¯çº¯ç²¹ç代ç ãç»ä»¶çå¼åä¸æ¯ä¸ä¸ªå¯è§åçå¼åè¿ç¨ï¼èæ¯ç¨C++æObject Pascalä¸¥æ ¼ç¼å¶ä»£ç çå·¥ä½ãå®é ä¸ï¼å建æ°ç»ä»¶ä½¿æ们åå°ä¼ ç»å¼åå·¥å ·çæ¶ä»£ãè½ç¶è¿æ¯ä¸ä¸ªå¤æçè¿ç¨ï¼ä½ä¹æ¯ä¸ä¸ªä¸å³æ°¸é¸çè¿ç¨ãå建ç»ä»¶çæ大æä¹å¨äºå°è£ éå¤çå·¥ä½ï¼å ¶æ¬¡æ¯å¯ä»¥æ©å ç°æç»ä»¶çåè½ãç»ä»¶å建è¿ç¨å æ¬è®¾è®¡ãå¼åãè°è¯ï¼å°±æ¯æè°ç3D'sï¼å·¥ä½ï¼ç¶åæ¯ç»ä»¶ç使ç¨ãç»ä»¶å¼åè åºè¯¥ææ¡çä¸é¡¹ä¸»è¦å 容æ¯ï¼å±æ§ãäºä»¶åæ¹æ³ã
ç»ä»¶æºæ件
ç»ä»¶é¢æ¿ä¸æä¾çç»ä»¶é½æ¯é¢ç¼è¯è¿ç SWC åªè¾ãåæ¶è¿æä¾äºæº Flash ææ¡£ (FLA)ï¼å ¶ä¸å æ¬çæ¯è¿äºç»ä»¶çå¾å½¢ï¼åæº ActionScript ç±»æ件(AS)ï¼å ¶ä¸å å«çæ¯è¿äºç»ä»¶ç代ç ï¼ï¼ä»¥ä¾¿äºæ¨å¨å建èªå·²çèªå®ä¹ç»ä»¶æ¶ä½¿ç¨ã第 2 çç»ä»¶çæºæ件é Macromedia Flash ä¸èµ·å®è£ ãå¨æ建èªå·±çç»ä»¶ä¹åï¼æå¼å¹¶æ¥çå ¶ä¸é¨åæ件ï¼å°è¯å»äºè§£è¿äºæ件çç»æï¼ä¼å¯¹æ¨ææ帮å©ãRadioButton ç»ä»¶å°±æ¯è¾ä¸ºç®åçç»ä»¶ç示ä¾ï¼æ¨å¯è½åºé¦å ç 究该ç»ä»¶ãStandardComponents.fla çåºä¸çææç»ä»¶é½æ¯å 件ãæ¯ä¸ªå 件é½é¾æ¥å°ä¸ä¸ª ActionScript ç±»ãå®ä»¬çä½ç½®å¦ä¸ï¼
FLAæ件æºä»£ç å¨ Windows ä¸ï¼C:Program FilesMacromediaFlash 8è¯è¨ConfigurationComponentFLAStandardComponents.flaã å¨ Macintosh ä¸ï¼HD/Applications/Macromedia Flash 8/Configuration/ComponentFLA/StandardComponents.fla ActionScript ç±»æä»¶å¨ Windows ä¸ï¼C:Program FilesMacromediaFlash 8è¯è¨First RunClassesmx å¨ Macintosh ä¸ï¼HD/Applications/Macromedia Flash 8/First Run/Classes/mx
ç»ä»¶ç»ææ¦è¿°
ç»ä»¶ç± Flash (FLA)æ件å ActionScript (AS)æ件ç»æãæ¨å¯ä»¥éæ©åå»ºå ¶å®æ件ï¼ä¾å¦ï¼å¾æ å .swd è°è¯æ件ï¼ï¼å¹¶å°å ¶ä¸ç»ä»¶ä¸èµ·æå ï¼ä½ææç»ä»¶é½éè¦ä¸ä¸ª FLA æ件åä¸ä¸ª ActionScript æ件ãå®æç»ä»¶å¼ååï¼éè¦å°å®å¯¼åºä¸º SWC æ件ã
Flash (FLA)æ件ãActionScript (AS) æ件å SWC æ件FLAæ件å å«ä¸ä¸ªå½±çåªè¾å 件ï¼è¯¥å ä»¶å¿ é¡»å¨é¾æ¥å±æ§åç»ä»¶å®ä¹å¯¹è¯æ¡ä¸é¾æ¥å° AS æ件ã
å½±çåªè¾å 件æ两个帧å两个å¾å±ã第ä¸ä¸ªå¾å±æ¯ Actions å¾å±ï¼å®ç第ä¸å¸§ä¸æä¸ä¸ª stop()å ¨å±å½æ°ã第äºä¸ªå¾å±æ¯ Assets å¾å±ï¼å®æä¸¤ä¸ªå ³é®å¸§ï¼ç¬¬ä¸å¸§å å«ä¸ä¸ªè¾¹æ¡ï¼ç¬¬äºå¸§å å«ææå ¶å®èµæºï¼å ¶ä¸å æ¬ç»ä»¶ä½¿ç¨çå¾å½¢ååºç±»ã
æå®ç»ä»¶çå±æ§åæ¹æ³ç ActionScript 代ç ä½äºåç¬ç ActionScript ç±»æ件ä¸ãæ¤ç±»æ件è¿å£°æç»ä»¶çæ©å±çç±»ï¼å¦ææï¼ãAS ç±»æ件çå称为ç»ä»¶çå称å ä¸.asæ©å±åãä¾å¦ï¼MyComponent å å« MyComponent ç»ä»¶çæºä»£ç ã
æ好å°ç»ä»¶ç FLA å ASæ件ä¿åå¨åä¸æ件夹并å°è¿ä¸¤ä¸ªæ件æå®ä¸ºç¸åçå称ãå¦æå° ASæ件ä¿åå¨å ¶å®æ件夹ä¸ï¼åå¿ é¡»ç¡®è®¤è¯¥æ件夹å¨ç±»è·¯å¾ä¸ï¼ä»¥ä¾¿ FLA æ件è½å¤æ¾å°å®ãæå ³ç±»è·¯å¾ç详ç»ä¿¡æ¯ï¼è¯·åé å¦ä¹ Flash ä¸ç ActionScript 2.0ä¸çç±»ã
æ建第ä¸ä¸ªç»ä»¶
å¨æ¬èä¸ï¼å°æ建ä¸ä¸ª Dial ç»ä»¶ãå·²å®æçç»ä»¶æ件Dial.flaãDial å DialAssets.fla ä½äºè®¡ç®æºä¸ç以ä¸ç¤ºä¾æ件夹ä¸ï¼
å¨ Windows ä¸ï¼C:Program FilesMacromediaFlash 8Samples and TutorialsSamplesComponentsDialComponentæ件夹ã
å¨ Macintosh ä¸ï¼HD/Applications/Macromedia Flash 8/Samples and Tutorials/Samples/Components/DialComponentæ件夹ã
Dial ç»ä»¶æ¯ä¸ä¸ªçµä½è®¡ï¼ç±»ä¼¼äºæµéçµåå·®ççµä½è®¡ãç¨æ·å¯ä»¥åå»å¹¶æå¨æéæ¥æ´æ¹æéä½ç½®ãDial ç»ä»¶ç API å ·æä¸ä¸ª value å±æ§ï¼å¯ç¨æ¥è·åå设置æéçä½ç½®ã
éæ©ç¶ç±»
å建ç»ä»¶æ¶ï¼é¦å è¦ç¡®å®æ¯å¦æ©å±æ个第 2 çç±»ãå¦æéæ©æ©å±æ个第 2 çç±»ï¼åå¯ä»¥æ©å±æ个ç»ä»¶ç±»ï¼ä¾å¦ï¼ButtonãCheckBoxãComboBoxãList çï¼ææ个åºç±»ï¼UIObject æ UIComponentï¼ãé¤ Media ç»ä»¶ä¹å¤ï¼ææå ¶å®ç»ä»¶ç±»é½æ©å±åºç±»ï¼å¦ææ©å±ç»ä»¶ç±»ï¼è¯¥ç±»ä¹ä¼èªå¨ä»åºç±»ç»§æ¿ã
两个åºç±»ä¸ºç»ä»¶æä¾äºå¸¸è§åè½ãéè¿æ©å±è¿äºç±»ï¼ç»ä»¶ä¸å¼å§å³å ·å¤ä¸ç»åºæ¬çæ¹æ³ãå±æ§åäºä»¶ã
å¨ç¬¬ 2 çæ¡æ¶ä¸ï¼æ¨æ éå建 UIObject åç±»ãUIComponent åç±»æä»»ä½å ¶å®ç±»ãå³ä½¿ç»ä»¶ç±»ç´æ¥ç»§æ¿èª MovieClip ç±»ï¼ä¹å¯ä»¥ä½¿ç¨è®¸å¤å¼ºå¤§çç»ä»¶åè½ï¼å¯¼åºå° SWCæ件æç¼è¯åªè¾ã使ç¨å ç½®å®æ¶é¢è§ãæ¥çå¯æ£æ¥å±æ§ççãä½æ¯ï¼å¦æè¦å°ç»ä»¶ç¨äº Macromedia 第 2 çç»ä»¶ï¼å¹¶è¦ä½¿ç¨ç®¡çå¨ç±»ï¼å°±éè¦æ©å± UIObject æ UIComponentã
ä¸è¡¨ç®è¦è¯´æ第 2 çåºç±»ï¼ åºç±» æ©å± 说æ mx.core.UIObject MovieClip UIObject æ¯ææå¾å½¢å¯¹è±¡çåºç±»ã mx.core.UIComponent UIObject UIComponent æ¯ææç»ä»¶çåºç±»ã äºè§£ UIObject ç±»
åºäº Macromedia ComponentArchitecture第 2 ççç»ä»¶æºèª UIObject ç±»ï¼è¯¥ç±»æ¯ MovieClip ç±»çåç±»ãMovieClip ç±»æ¯ Flash ä¸å¯ä»¥å¨å±å¹ä¸è¡¨ç¤ºå¯è§å¯¹è±¡çææç±»çåºç±»ã
UIObject æ·»å ç¨äºå¤çæ ·å¼åäºä»¶çæ¹æ³ãå®å¨å è½½åå¸è½½æ¶ï¼load å unloadï¼ãå¸å±æ´æ¹æ¶ï¼moveãresizeï¼ä»¥åéèææ¾ç¤ºæ¶ï¼hideå revealï¼ï¼é½ä¼å¨ç»å¶ï¼draw äºä»¶çæäº MovieClip.onEnterFrame äºä»¶ï¼ä¹åå°äºä»¶åéå°å®ç侦å¬å¨ã
UIObject å¦å¤æä¾åªè¯»åéæ¥ç¡®å®ç»ä»¶çä½ç½®å大å°ï¼widthãheightãxãyï¼ï¼å¹¶æä¾ move() å setSize() æ¹æ³æ¥æ¹å对象çä½ç½®å大å°ã
UIObject ç±»å®ç°ä»¥ä¸åè½ï¼
æ ·å¼
äºä»¶
æ缩æ¾æ¯ä¾è°æ´å¤§å°
äºè§£ UIComponent ç±»
UIComponent ç±»æ¯ UIObject çåç±»ï¼è¯·åé ç»ä»¶è¯è¨åèä¸çUIComponent ç±»ï¼ãå®æ¯å¤çç¨æ·äº¤äºï¼é¼ æ åé®çè¾å ¥ï¼çææç»ä»¶çåºç±»ãUIComponent ç±»å 许ç»ä»¶æ§è¡ä»¥ä¸æä½ï¼
æ¥æ¶ç¦ç¹åé®çè¾å ¥
å¯ç¨åç¦ç¨ç»ä»¶
æå¸å±è°æ´å¤§å°
å ³äºæ©å±å ¶å®ç¬¬ 2 çç±»
为äºè½å¤æ´æ¹ä¾¿å°æé ç»ä»¶ï¼å¯ä»¥æ©å±ä»»ä½ç±»çåç±»ï¼è¿æ ·ä¹å°±ä¸éè¦ç´æ¥æ©å± UIObject æ UIComponent ç±»ãå¦ææ©å±ä»»ä½å ¶å®ç¬¬ 2 çç»ä»¶ç±»ï¼Media ç»ä»¶é¤å¤ï¼ï¼é»è®¤æ åµä¸ä¹ä¼æ©å± UIObject å UIComponentãæ¨å¯ä»¥éè¿æ©å±ç»ä»¶åå ¸ä¸ååºçä»»ä½ç»ä»¶ç±»æ¥å建æ°ç»ä»¶ç±»ã
ä¾å¦ï¼å¦æè¦å建ä¸ä¸ªç»ä»¶ï¼å ¶è¡ä¸ºä¸ Button ç»ä»¶çè¡ä¸ºå ä¹ç¸åï¼å°±å¯ä»¥æ©å± Button ç±»ï¼èä¸å¿ ä»åºç±»éæ°å建 Button ç±»çææåè½ã
ä¸å¾æ¾ç¤ºäºç¬¬ 2 çç»ä»¶çå±æ¬¡ç»æï¼
æ¤æ件ç FlashPaper çæ¬å¯å¨ Flashå®è£ ç®å½ç以ä¸ä½ç½®æ¾å°ï¼Flash 8Samples and TutorialsSamplesComponentsarch_diagram.swfã
å ³äºæ©å± MovieClip ç±»
æ¨å¯ä»¥éæ©ä¸æ©å±ç¬¬ 2 çç±»ï¼è让ç»ä»¶ç´æ¥ç»§æ¿ ActionScript MovieClip ç±»ãä½æ¯ï¼å¦æéè¦ UIObject å UIComponent çä»»ä½åè½ï¼åå¿ é¡»äº²èªæ建ãæ¨å¯ä»¥æå¼ UIObject å UIComponent ç±» (First Run/Classes/mx/core) æ¥æ£æ¥å®ä»¬çæé æ¹å¼ã
å建ç»ä»¶å½±çåªè¾
è¥è¦å建ä¸ä¸ªç»ä»¶ï¼å¿ é¡»å建ä¸ä¸ªå½±çåªè¾å 件并å°å®é¾æ¥å°è¯¥ç»ä»¶çç±»æ件ã
å½±çåªè¾æ两个帧å两个å¾å±ã第ä¸ä¸ªå¾å±æ¯ Actions å¾å±ï¼å®ç第ä¸å¸§ä¸æä¸ä¸ª stop() å ¨å±å½æ°ã第äºä¸ªå¾å±æ¯ Assets å¾å±ï¼å®æä¸¤ä¸ªå ³é®å¸§ã第ä¸å¸§å å«ä¸ä¸ªè¾¹æ¡æå å½æç»å¾ççå ä½ç¬¦çä»»æå¾å½¢ã第äºå¸§å å«ææå ¶å®èµæºï¼å æ¬ç»ä»¶ä½¿ç¨çå¾å½¢ååºç±»ã
æå ¥æ°çå½±çåªè¾å 件
ææç»ä»¶é½æ¯ MovieClip 对象ãè¦å建æ°ç»ä»¶ï¼é¦å å¿ é¡»å°æ°å 件æå ¥æ°ç FLA æ件ä¸ã
æ·»å æ°ç»ä»¶å 件ï¼
å¨ Flash ä¸ï¼å建空ç½ç Flash ææ¡£ã
éæ©æå ¥>æ°å»ºå 件ã
æ¾ç¤ºå建æ°å 件对è¯æ¡ã
è¾å ¥å 件å称ã为ç»ä»¶å½åï¼æ¹æ³æ¯å°ç»ä»¶ä¸æ¯ä¸ªåè¯ç第ä¸ä¸ªåæ¯æ´æ¹ä¸ºå¤§ååæ¯ï¼ä¾å¦ MyComponentï¼ã
éæ©å½±çåªè¾è¡ä¸ºã
åå»é«çº§æé®æ¾ç¤ºé«çº§è®¾ç½®ã
éæ©ä¸º ActionScript 导åºï¼åæ¶éæ©å¨ç¬¬ä¸å¸§å¯¼åºã
è¾å ¥é¾æ¥æ è¯ç¬¦ã
å¨AS 2.0 ç±»ææ¬æ¡ä¸ï¼è¾å ¥ ActionScript 2.0 ç±»çå®å ¨éå®è·¯å¾ã
ç±»å称åºä¸æ¾ç¤ºå¨ç»ä»¶é¢æ¿ä¸çç»ä»¶å称ç¸åãä¾å¦ï¼Button ç»ä»¶ç类为 mx.controls.Buttonã
注æ
ä¸è¦å å«æ件æ©å±åï¼AS 2.0 ç±»ææ¬æ¡æåç±»çæå ä½ç½®ï¼èä¸æ¯è¯¥æ件çæ件系ç»å称ã
å¦æ ActionScriptæ件ä½äºå å ï¼å¿ é¡»å å«è¯¥å çå称ãæ¤å¼å¯ä»¥æ¯ç±»è·¯å¾çç¸å¯¹è·¯å¾ï¼ä¹å¯ä»¥æ¯å çç»å¯¹è·¯å¾ï¼ä¾å¦ mypackage.MyComponentï¼ã
大å¤æ°æ åµä¸ï¼åºåæ¶éä¸å¨ç¬¬ä¸å¸§å¯¼åºï¼é»è®¤éä¸è¯¥é项ï¼ãæå ³è¯¦ç»ä¿¡æ¯ï¼è¯·åé ç»ä»¶å¼åæ£æ¥å表ã
åå»ç¡®å®ã
Flash å°å 件添å å°åºä¸ï¼ç¶ååæ¢å°å 件ç¼è¾æ¨¡å¼ãå¨æ¤æ¨¡å¼ä¸ï¼å 件çå称æ¾ç¤ºäºèå°å·¦ä¸è§çä¸æ¹ï¼å¹¶ä¸æä¸ä¸ªåå线表æ该å 件ç注åç¹ã
æ¨ç°å¨å°±å¯ä»¥ç¼è¾è¯¥å 件以å建ä¸ä¸ªç»ä»¶ã请åé ç¼è¾å½±çåªè¾ã
ç¼è¾å½±çåªè¾
å¨å建æ°å ä»¶å¹¶ä¸ºå ¶å®ä¹é¾æ¥åï¼å³å¯å¨è¯¥å 件çæ¶é´è½´ä¸å®ä¹ç»ä»¶çèµæºã
ç»ä»¶çå 件åºæ两个å¾å±ãæ¬è说æåºè¯¥æå ¥åªäºå¾å±ï¼åºè¯¥å¨è¿äºå¾å±ä¸æ·»å åªäºå 容ã
è¥è¦ç¼è¾å½±çåªè¾ï¼è¯·æ§è¡ä»¥ä¸æä½ï¼
å°å¾å±1 éå½å为å¨ä½ï¼ç¶åéæ©ç¬¬ä¸å¸§ã
æå¼å¨ä½é¢æ¿ï¼ç¶åæ·»å stop() å½æ°ï¼å¦ä¸æç¤ºï¼ stop();
ä¸è¦åæ¤å¸§æ·»å ä»»ä½å¾å½¢èµæºã
æ·»å ä¸ä¸ªå为 Assets çå¾å±ã
å¨ Assetså¾å±ä¸ï¼éæ©ç¬¬äºå¸§å¹¶æå ¥ä¸ä¸ªç©ºç½å ³é®å¸§ã
ç°å¨è¯¥å¾å±ä¸æ两个空ç½å ³é®å¸§ã
请æ§è¡ä»¥ä¸æä½ä¹ä¸ï¼
·å¦æç»ä»¶å ·æå®ä¹è¾¹çåºåçå¯è§èµæºï¼åå°è¿äºå 件æå°ç¬¬ä¸å¸§ä¸å¹¶è¿è¡éå½å®æã
·å¦æç»ä»¶å¨è¿è¡æ¶åå»ºå ¶ææå¯è§èµæºï¼è¯·å°ä¸ä¸ª BoundingBox å 件æå°èå°ä¸ç¬¬ä¸å¸§ä¸ï¼éå½è°æ´å ¶å¤§å°ï¼ç¶åå°å®ä¾å½å为 boundingBox_mcã该å 件ä½äº Configuration/ComponentFLAæ件夹ä¸ç StandardComponents.fla çåºä¸ã
å¦æè¦æ©å±ç°æç»ä»¶ï¼è¯·å°è¯¥ç»ä»¶çä¸ä¸ªå®ä¾åä»»ä½å ¶å®åºç±»æ¾å¨ Assetså¾å±ç第äºå¸§ä¸ã
为æ¤ï¼è¯·ä»ç»ä»¶é¢æ¿ä¸éæ©è¯¥å 件并å°å®æå°èå°ä¸ãå¦æè¦æ©å±ä¸ä¸ªåºç±»ï¼è¯·æå¼ Configuration/ComponentFLA æ件夹ä¸ç StandardComponents.flaï¼ç¶åå°è¯¥ç±»ä»åºä¸æå°èå°ä¸ã
注æ
å° UIComponent æå°ç»ä»¶åºæ¶ï¼ä¼æ´æ¹åºä¸çæ件夹å±æ¬¡ç»æãå¦ææç®å次使ç¨åºï¼æå°å®ç¨äºå ¶å®ç»ä»¶ç»ï¼å¦ç¬¬ 2 çç»ä»¶ï¼ï¼åºéæ°ç»ç»æ件夹å±æ¬¡ç»æï¼ä»¥ä¾¿ä¸ StandardComponents.fla åºå¹é ï¼ä»è使åºç»ç»æåºï¼é¿å å 件éå¤ã
å¨ç»ä»¶ç Assetså¾å±ç第äºå¸§æ·»å ç±è¯¥ç»ä»¶ä½¿ç¨çææå¾å½¢èµæºã
ç»ä»¶æ使ç¨çä»»ä½èµæºï¼æ 论æ¯å ¶å®ç»ä»¶è¿æ¯ä½å¾ä¹ç±»çåªä½ï¼é½åºå ·æä¸ä¸ªæ¾ç½®å¨ Assets å¾å±ç第äºå¸§ä¸çå®ä¾ã
å®æçå 件çèµ·æ¥åºä¸ä¸å¾ç¸ä¼¼ï¼
å½±çåªè¾å ä»¶å¿ é¡»å¨ç»ä»¶å®ä¹å¯¹è¯æ¡ä¸é¾æ¥å° ActionScript ç±»æ件ãè¿æ¯ Flash äºè§£å¨ä½å¤æ¥æ¾ç»ä»¶å æ è®°çæ¹å¼ãï¼æå ³å æ è®°ç详ç»ä¿¡æ¯ï¼è¯·åé æ·»å ç»ä»¶å æ°æ®ãï¼æ¨ä¹å¯ä»¥å¨ç»ä»¶å®ä¹å¯¹è¯æ¡ä¸éæ©å ¶å®é项ã
å°å½±çåªè¾å®ä¹ä¸ºç»ä»¶ï¼
å¨åºä¸éæ©å½±çåªè¾ï¼ç¶åä»åºä¸ä¸æèåä¸éæ©ç»ä»¶å®ä¹ï¼Windowsï¼å³é®åå»ï¼Macï¼æä½ Control é®åå»ï¼ã
å¿ é¡»è¾å ¥ä¸ä¸ª AS 2.0 ç±»ã
å¦æ该类å¨å ä¸ï¼åè¾å ¥å®æ´çå å称ãå¦æéè¦ï¼å¯ä»¥å¨ç»ä»¶å®ä¹å¯¹è¯æ¡ä¸æå®å ¶å®é项ï¼
åå»å å· (+) æé®å¯å®ä¹åæ°ã
æ¤ä¸ºå¯éæä½ãæ好çåæ³æ¯å¨ç»ä»¶çç±»æ件ä¸ä½¿ç¨å æ°æ®Inspectable æ è®°æ¥æå®åæ°ãå¦ææªæå® ActionScript 2.0 ç±»ï¼åå¨è¿æ¯ä¸ä¸ªå¨ç»ä»¶æ£æ¥å¨ä¸ææ¾ç SWFæ件ãæ¨å¯ä»¥å°å®åµå ¥ç»ä»¶ FLAæ件ææµè§å°ä¸ä¸ªå¤é¨ SWFæ件ã
æå®å®æ¶é¢è§ã
è¿æ¯ä¸ä¸ªå¤é¨æåµå ¥ç SWFæ件ãæ¤å¤æ éæå®å®æ¶é¢è§ï¼å°ä¸ä¸ªè¾¹æ¡æ·»å å°ç»ä»¶å½±çåªè¾ï¼Flash å³ä¼ä¸ºæ¨å建å®æ¶é¢è§ã请åé å建ç»ä»¶å½±çåªè¾ã
è¾å ¥æè¿°ã
å¨ Flash MX ä¸ï¼ç±äºåèé¢æ¿å·²å é¤ï¼å æ¤ä¸å»ºè®®ä½¿ç¨æè¿°å段ãæä¾æ¤å段ç®çå¨äºä»¥ Flash MX æ ¼å¼ä¿å FLAæ件æ¶çååå ¼å®¹æ§ã
éæ©å¾æ ã
æ¤é项æå®ä¸ä¸ª PNGæ件æ¥ç¨ä½ç»ä»¶çå¾æ ãå¦æå¨ ActionScript 2.0 ç±»æ件ä¸æå® IconFileå æ°æ®æ è®°ï¼æä½³åæ³ï¼ï¼åä¼å¿½ç¥è¯¥å段ã
éæ©æåæ¶éæ©å®ä¾ä¸åæ°å·²éå®ã
å¦æåæ¶éæ©æ¤é项ï¼ç¨æ·åå¯ä»¥åæ¯ä¸ªç»ä»¶å®ä¾æ·»å ä¸åäºç»ä»¶åæ°çåæ°ãé常åºéæ©æ¤è®¾ç½®ãæ¤é项æä¾ä¸ Flash MX çååå ¼å®¹æ§ã
æå®æ¾ç¤ºå¨ç»ä»¶é¢æ¿ä¸çå·¥å ·æ示ã
å建 ActionScript ç±»æ件
ææç»ä»¶å 件é½é¾æ¥å° ActionScript 2.0 ç±»æ件ãï¼æå ³é¾æ¥çä¿¡æ¯ï¼è¯·åé å建ç»ä»¶å½±çåªè¾ãï¼
è¦ç¼è¾ ActionScript ç±»æ件ï¼æ¨å¯ä»¥ä½¿ç¨ Flashãä»»ä½ææ¬ç¼è¾å¨ï¼ä¹å¯ä»¥ä½¿ç¨ä»»ä½éæå¼åç¯å¢(IDE)ã
å¤é¨ ActionScript ç±»æ©å±å ¶å®ç±»ï¼æ 论该类æ¯ç¬¬ 2 çç»ä»¶ã第 2 çåºç±»è¿æ¯ ActionScript MovieClip ç±»ï¼ãæ¨åºæ©å±æå建çåè½ä¸è¦å建çç»ä»¶æ类似çç±»ãåªè½ä»ä¸ä¸ªç±»ç»§æ¿ï¼æ©å±ï¼ãActionScript 2.0 ä¸å 许å¤ç»§æ¿ã
æ¬èå å«ä»¥ä¸ä¸»é¢ï¼
ç»ä»¶ç±»æ件çç®å示ä¾
ç»ä»¶ç±»æ件æ¦è¿°
å®ä¹ç±»åå ¶è¶ ç±»
æ è¯ç±»ãå 件åææè å称
å®ä¹åé
ä½¿ç¨ getter/setter æ¹æ³å®ä¹åæ°
æ·»å ç»ä»¶å æ°æ®
å®ä¹ç»ä»¶åæ°
å ³äºæ ¸å¿å½æ°
åéäºä»¶
å ³äºæå®å¤è§
å ³äºæ ·å¼
ç»ä»¶ç±»æ件çç®å示ä¾
ä¸é¢æ¯ç±»æ件çä¸ä¸ªç®å示ä¾ï¼è¯¥ç±»æ件å为 <CITE style=BACKGROUND: none transparent scroll repeat 0% 0% class=highlight highlight=true>MyComponent</CITE>ãå¦æè¦å建æ¤ç»ä»¶ï¼åºå°è¯¥ç±»æ件é¾æ¥å° Flash ä¸çç»ä»¶å½±çåªè¾ã
æ¤ç¤ºä¾å å«ä» UIComponent 类继æ¿çç»ä»¶ MyComponent è³å°åºæçä¸ç»å¯¼å ¥ãæ¹æ³å声æãMyComponentsæ件ä¿åå¨ myPackage æ件夹ä¸ã
ãEvent(eventName)ã
// å¯¼å ¥å ã
import mx.core.UIObject;
// 声æ类并ä»ç¶ç±»æ©å±ã
classmypackage.MyComponent extends UIObject {
// æ è¯æ¤ç±»æç»å®å°çå 件å称ã
static var symbolName:String = mypackage.MyComponent;
// æ è¯å 件ææè çå®å ¨éå®å å称ã
static var symbolOwner:Object = Object(mypackage.MyComponent);
// æä¾className åéã
varclassName:String = MyComponent;
// å®ä¹ä¸ä¸ªç©ºæé å½æ°ã
function MyComponent() {
}
// è°ç¨ç¶çº§ç init() æ¹æ³ã
// éèè¾¹æ¡ï¼è¯¥è¾¹æ¡
// ä» å¨åä½æ¶ä½¿ç¨ã
function init():Void {
super.init();
boundingBox_mc.width = 0;
boundingBox_mc.height = 0;
boundingBox_mc.visible = false;
}
function createChildren():Void{
// è°ç¨ createClassObject æ¥å建å对象ã
size();
invalidate();
}
function size(){
// ç¼åå¤ç大å°ç代ç ã
super.size();
invalidate();
}
function draw(){
// ç¼åå¤çå¯è§å表示形å¼ç代ç ã
super.draw();
}
}
ç»ä»¶ç±»æ件æ¦è¿°
以ä¸æ¯ä»ç»å¦ä½ä¸ºç»ä»¶ç±»å建 ActionScriptæ件ç常è§è¿ç¨ãæ ¹æ®æå建ç»ä»¶ç±»åçä¸åï¼æäºæ¥éª¤æ¯å¯éæ¥éª¤ã
ç¼åç»ä»¶ç±»æ件
ï¼å¯éï¼å¯¼å ¥ç±»ãï¼è¯·åé å¯¼å ¥ç±»ï¼ã
æ§è¡è¿ä¸æ¥éª¤ï¼åæ éååºå ï¼ä¾å¦ï¼ä½¿ç¨ Button èä¸æ¯ mx.controls.Buttonï¼å³å¯å¼ç¨ç±»ã 使ç¨classå ³é®åå®ä¹ç±»ï¼ä½¿ç¨ extend å ³é®åæ©å±ç¶ç±»ãï¼è¯·åé å®ä¹ç±»åå ¶è¶ ç±»ï¼ã
å®ä¹ symbolNameãsymbolOwner åclassName åéãï¼è¯·åé æ è¯ç±»ãå 件åææè å称ï¼ã
åªæ第 2 çç»ä»¶æéè¦è¿äºåéã
å®ä¹æååéãï¼è¯·åé å®ä¹åéï¼ã
è¿äºåéå¯ç¨äº getter/setter æ¹æ³ã
å®ä¹ä¸ä¸ªæé å½æ°ãï¼è¯·åé å ³äºæé å½æ°ï¼ã
å®ä¹ init() æ¹æ³ãï¼è¯·åé å®ä¹ init() æ¹æ³ï¼ã
å¦æç±»æ©å±çæ¯ UIComponentï¼åå建类æ¶ä¼è°ç¨æ¤æ¹æ³ãå¦æç±»æ©å±çæ¯ MovieClipï¼åä»æé å½æ°è°ç¨æ¤æ¹æ³ã
å®ä¹ createChildren() æ¹æ³ãï¼è¯·åé å®ä¹ createChildren() æ¹æ³ï¼ã
å¦æç±»æ©å±çæ¯ UIComponentï¼åå建类æ¶ä¼è°ç¨æ¤æ¹æ³ãå¦æç±»æ©å±çæ¯ MovieClipï¼åä»æé å½æ°è°ç¨æ¤æ¹æ³ã
å®ä¹ size() æ¹æ³ãï¼è¯·åé å®ä¹ size() æ¹æ³ï¼ã
å¦æç±»æ©å±çæ¯ UIComponentï¼åè°æ´ç»ä»¶å¤§å°æ¶è°ç¨æ¤æ¹æ³ãæ¤å¤ï¼å¨åä½æ¶è°æ´ç»ä»¶çå®æ¶é¢è§å¤§å°æ¶ä¹ä¼è°ç¨æ¤æ¹æ³ã
å®ä¹ draw() æ¹æ³ãï¼è¯·åé å ³äºæ æï¼ã
å¦æç±»æ©å±çæ¯ UIComponentï¼åç»ä»¶æ ææ¶è°ç¨æ¤æ¹æ³ã
æ·»å ä¸ä¸ªå æ°æ®æ è®°å声æãï¼è¯·åé æ·»å ç»ä»¶å æ°æ®ï¼ã
æ·»å æ è®°å声æå¯ä½¿ getter/setter å±æ§æ¾ç¤ºå¨ Flash çå±æ§ æ¹æ³ãï¼è¯·åé ä½¿ç¨ getter/setter æ¹æ³å®ä¹åæ°ï¼ã
ï¼å¯éï¼ä¸ºç»ä»¶ä¸ä½¿ç¨çæ¯ä¸ªå¤è§å ç´ /é¾æ¥å建åéãï¼è¯·åé å ³äºæå®å¤è§ï¼ã
æ§è¡è¿ä¸æ¥éª¤ï¼ç¨æ·åå¯éè¿æ´æ¹ç»ä»¶ä¸çåæ°æ¥è®¾ç½®ä¸åçå¤è§å ç´ ã
å¨ç»ä»¶å ç»åç°æç»ä»¶
å¨æ¬èä¸ï¼æ¨å°æ建ä¸ä¸ªå¯ä»¥ç»å LabelãTextInput å Button ç»ä»¶çç®åç LogIn ç»ä»¶ãæ¬æç¨æ¼ç¤ºå¦ä½å¨æ°ç»ä»¶ä¸éè¿æ·»å æªç»ç¼è¯ç Flash (FLA) åºå 件æ¥ç»åç°æç»ä»¶ãå·²å®æçç»ä»¶æ件LogIn.flaãLogIn å LogIn.swf ä½äºç¡¬çä¸ç以ä¸ç¤ºä¾æ件夹ä¸ï¼
å¨ Windows ä¸ï¼the C:Program FilesMacromediaFlash 8Samples and TutorialsSamplesComponentsLogin folderã
å¨ Macintosh ä¸ï¼HD/Applications/Macromedia Flash 8/Samples and Tutorials/Samples/Components/Loginæ件夹ã
LogIn ç»ä»¶æä¾è¾å ¥å称åå¯ç ççé¢ãLogIn ç API æ两个å±æ§ name å passwordï¼ç¨æ¥è®¾ç½®åè·åå称åå¯ç TextInput å段ä¸çå符串å¼ãLogIn ç»ä»¶è¿å°å¨ç¨æ·åå»æ 记为LogInçæé®æ¶åéä¸ä¸ªclickäºä»¶ã
å建 LogIn Flash (FLA) æ件
LogIn ç±»æ件
æµè¯åå¯¼åº LogIn ç»ä»¶
导åºåååç»ä»¶
Flash å°ç»ä»¶å¯¼åºä¸ºç»ä»¶å ï¼SWC æ件ï¼ãç»ä»¶å¯ä»¥åå为 SWCæ件æ FLA æ件ãï¼æå ³å°ç»ä»¶ä½ä¸º FLA ååçä¿¡æ¯ï¼è¯·åé Macromedia DevNet ä¸çæç« ï¼
ååç»ä»¶çæ好æ¹æ³æ¯å°å®å¯¼åºä¸º SWCæ件ï¼è¿æ¯å 为 SWC æ件å å«å ¨é¨ ActionScriptãSWF æ件以å使ç¨ç»ä»¶æéçå ¶å®å¯éæ件ãå¦æè¦åæ¶å¼åæ个ç»ä»¶å使ç¨è¯¥ç»ä»¶çåºç¨ç¨åºï¼å SWCæ件ä¹ååæç¨ã
SWCæ件å¯ç¨äºååå¨ Macromedia Flash 8ãMacromedia Dreamweaver MX å Macromedia Director MX ä¸ä½¿ç¨çç»ä»¶ã
æ 论å¼åç»ä»¶çç®çæ¯ä¸ºäºä¾ä»äººä½¿ç¨è¿æ¯èªå·±ä½¿ç¨ï¼å¯¹ä½ä¸ºç»ä»¶å¼åçæ£å¨è¿è¡é¨åç SWCæ件è¿è¡æµè¯é½é常éè¦ãä¾å¦ï¼ç»ä»¶ç FLAæ件ä¸ä¸ä¼åºç°çé®é¢å¯è½ä¼å¨ SWC æ件ä¸åºç°ã
ç»ä»¶å¼åçæåä¸äºæ¥éª¤
ç»ä»¶å建å®æ并åå¤å¥½æå ä¹åï¼å³å¯æ·»å å¾æ åå·¥å ·æ示ãè¦ç¡®ä¿å·²å®æææå¿ éçæ¥éª¤ï¼è¯·åé ç»ä»¶å¼åæ£æ¥å表ã
æ¬èå å«ä»¥ä¸ä¸»é¢ï¼
· æ·»å å¾æ
· æ·»å å·¥å ·æ示
· ç»ä»¶å¼åæ£æ¥å表
æ·»å å¾æ
æ¨å¯ä»¥æ·»å å¨ Flash åä½ç¯å¢çç»ä»¶é¢æ¿ä¸è¡¨ç¤ºç»ä»¶çå¾æ ã æ·»å ç»ä»¶çå¾æ ï¼
· å建æ°å¾åã
å¾åå¿ é¡»ä¸º x åç´ ï¼å¹¶ä¸å¿ é¡»ä¿å为 PNG æ ¼å¼ãå®ç Alpha éæåº¦å¿ é¡»æ¯ 8 ä½ï¼å·¦ä¸è§çåç´ å¿ é¡»æ¯éæçï¼ä»¥æ¯æé®ç½©ã
· å¨ç»ä»¶ ActionScript ç±»æ件ä¸çç±»å®ä¹ä¹åæ·»å 以ä¸å®ä¹ï¼ ãIconFile(component_name.png)ã
· å°å¾åæ·»å å° FLAæ件æå¨çç®å½ãå¨å¯¼åº SWCæ件æ¶ï¼Flash å°å¨å½æ¡£çæ ¹çº§å å«è¯¥å¾åã
æ·»å å·¥å ·æ示
å½ç¨æ·å°é¼ æ æ»å° Flash åä½ç¯å¢ä¸ç»ä»¶é¢æ¿ä¸çç»ä»¶å称æå¾æ ä¸æ¶ï¼å·¥å ·æ示就ä¼æ¾ç¤ºåºæ¥ã
å¨ç»ä»¶å®ä¹å¯¹è¯æ¡ä¸å¯ä»¥å®ä¹å·¥å ·æ示ãå¯ä»¥ä»ç»ä»¶ FLA æ件çåºé项èå访é®æ¤å¯¹è¯æ¡ï¼Windowsï¼å³é®åå»ï¼Macï¼æä½ Control é®åå»ï¼ã
å¨ç»ä»¶å®ä¹å¯¹è¯æ¡ä¸æ·»å å·¥å ·æ示ï¼
å¨ Flash ä¸æå¼ç»ä»¶ç FLAæ件æ¶ï¼ç¡®ä¿åºå¯è§ï¼çªå£>åºèåï¼ã
åå»åºé项èåï¼Windowsï¼å³é®åå»ï¼Macï¼æä½ Control é®åå»ï¼ã
åºé项èåä½äºåºæ é¢æ çå³ä¾§ï¼æ¾ç¤ºä¸ºä¸ä¸ªä¸æ¡çº¿ååä¸ä¸è§å½¢çå¾æ ã
éæ©ç»ä»¶å®ä¹é项ã
å¨ç»ä»¶å®ä¹å¯¹è¯æ¡çé项ä¸ï¼éæ©æ¾ç¤ºå¨'ç»ä»¶'é¢æ¿ä¸ã
å·¥å ·æ示ææ¬æ¡å³ä¼å为å¯ç¼è¾ææ¬æ¡ã
å¨å·¥å ·æ示ææ¬æ¡ä¸è¾å ¥ç»ä»¶çå·¥å ·æ示ææ¬ã
åå»ç¡®å®ä»¥ä¿åæ´æ¹ã
FUTU六语言秒合约交易所源码详细搭建教程
FUTU六语言秒合约交易所源码提供了一个前后端分离的解决方案,前端Vue已编译,是用于搭建秒合约交易所的二开版本。尽管功能设计较为基础,其后台功能却相当强大且强大,UI设计新颖,已通过实测,基本未发现明显问题。
该系统K线和行情数据来源于外部API,对服务器性能要求不高。秒合约部分需要根据具体需求调整外链和变量,且前端代码已经过编译处理。对于初次搭建者,本教程将为您详细介绍如何配置与部署。
搭建过程需要以下环境与组件:nginx、php7.3、mysql5.6、redis,同时确保安装了如下PHP扩展:fileinfo、opcache、memcache、redis、imagemagick、imap、exif、intl、xsl。禁用所有非必要的函数或处理报错函数,建议全新安装系统服务器,避免其他服务干扰。确保PHP和相关组件正确配置与启动,如未报错则搭建成功。
搭建步骤包括但不限于:配置Nginx伪静态规则、开放特定端口、安装Elasticsearch(ES)环境,导入源码与数据库,并进行环境初始化。需注意的是,反向代理配置需要调整socket.io后端IP和端口。同时,计划任务脚本涵盖了日常运营、更新与维护任务,如行情与K线数据更新、交易对获取、用户余额更新等,确保系统自动执行关键功能。
此源码提供了一个灵活的基础框架,支持根据业务需求进行扩展与定制,如市场数据导入、交易对支持、定时任务执行等。通过合理配置与调整,可以构建功能丰富、运行稳定的秒合约交易所。
UGUI 源码笔记(一)文件结构和部分组件使用
探讨UGUI源码之谜:深度解析文件结构与关键组件
本文将为您揭秘Unity3D UI系统UGUI的底层细节。
部分一:源码与实现解析
UGUI是基于三维网格系统构建的UI库,源码地址。
构建图元时,先生成一个方形网格,绑定材质球,后者存放要显示的图像。性能挑战:材质球和网格渲染过量,drawcell时间长。
部分二:源码结构探索
以Unity版本.1为例,文件结构被清晰地划分。
Canvas作为核心组件,类比为画布,内置了提升效率的合并网格功能。
Render Mode描述了Canvas的渲染模式;Canvas Scale组件允许您调整Canvas中元素的比例。
UI Scale Mode提供了针对屏幕大小的适应性设置,包括ScreenMatchMode.MatchWidthOrHeight选项。
以设备与游戏屏幕比例为例,计算合适的MatchWidthOrHeight值,通过对数空间转换确保视觉平衡。
部分三:UI元素组件剖析
Image与RawImage组件是展示的基石。
它们之间有显著区别:小尺寸图像适合使用Image,大尺寸则推荐RawImage以提高性能。
当处理大量相似类型但数量较少的时,通常选择RawImage,以减少内存消耗。
部分四:RectTransform:UI元素摆放的秘密
尽管RectTransform属于Unity内部类,但在UGUI中扮演着核心角色,用于定义UI元素的位置、大小与旋转。
锚点Anchors决定子节点的对齐,设置时以父节点的比例计算。
Anchors Presets工具提供了常用的布局选择,连带调整Pivot与位置时更为便捷。
Pivot作为物体自身的支点,影响物体的旋转、缩放与位置调整。
搭建源码调试环境—RocketMQ源码分析(一)
搭建源码调试环境,深入分析 RocketMQ 的内部运行机制。理解 RocketMQ 的目录结构是搭建调试环境的第一步,有助于我们快速定位代码功能和问题。 目录结构主要包括: acl:权限控制模块,用于指定话题权限,确保只有拥有权限的消费者可以进行消费。 broker:RocketMQ 的核心组件,负责接收客户端发送的消息、存储消息并传递给消费端。 client:包含 Producer、Consumer 的代码,用于消息的生产和消费。 common:公共模块,提供基础功能和服务。 distribution:部署 RocketMQ 的工具,包含 bin、conf 等目录。 example:提供 RocketMQ 的示例代码。 filter:消息过滤器。 namesvr:NameServer,所有 Broker 的注册中心。 remoting:远程网络通信模块。 srvutil:工具类。 store:消息的存储机制。 style:代码检查工具。 tools:命令行监控工具。 获取 RocketMQ 源码:从 Github 下载最新版本或选择其他版本。遇到下载困难时,可留言或私信寻求帮助。 导入源码到 IDE 中,确保 Maven 目录正确,刷新并等待依赖下载完成。 启动 RocketMQ 的 NameServer 和 Broker,配置相关参数,如环境变量、配置文件等。确保正确启动后,通过查看启动日志检查运行状态。 进行消息生产与消费测试,使用源码自带的示例代码进行操作。设置 NameServer 地址后,启动 Producer 和 Consumer,验证消息成功发送与消费。 使用 RocketMQ Dashboard 监控 RocketMQ 运行情况,持续优化和调试。OpenHarmony编译构建系统详解,从零搭建windows下开发环境,巨方便!
OpenHarmony的dev-tool更新让在Windows下搭建鸿蒙系统开发环境变得便捷,尤其对于MCU开发者来说。本文将带你从头开始,详细讲解如何在Windows上搭建dev-tool环境,降低学习OpenHarmony的门槛。首先,理解OpenHarmony的编译构建框架至关重要,它基于GN和Ninja构建,组织平台、子系统和组件,构建过程类似用针线制作衣服,通过命令行驱动,GN生成Ninja文件指导构建。
在2.0版本中,大部分组件已采用GN和Ninja,未来将全面替代。构建流程包括设置和编译两个步骤,通过命令行工具如"hb set"和"hb build"来操作。具体过程可在weharmonyos.com的文档中获取更详尽信息。
环境搭建则需要准备GNU环境,因为OpenHarmony主要依赖GNU工具链,包括在Windows上安装对应版本的Python、Node.js和hpm,以及Visual Studio Code和DevEco Device Tool。其中,Python和Node.js的安装需注意版本选择,而DevEco Device Tool的安装需注意避免中文字符在用户名中,且可能需要设置npm代理。
针对HiV开发板,需要下载专用源代码,设置正确的编译工具链,并在DevEco Device Tool中进行编译操作。整个过程包括设置工具链、打开工程、执行编译任务,直至看到"SUCCESS"。目前仅支持轻量型系统和Hi开发板,后续将扩展支持其他开发板。
现在,你已经具备了在Windows上搭建OpenHarmony开发环境的完整流程,开始你的鸿蒙OS学习之旅吧!