0、初期采取仿慧编程首页

1、决定采取react hooks属性 ,将react升级成 16.12最新版本。 需要重新link scratch-vm
2、决定不采用框架,使用sass进行样式编写。安装node-sass和 sass-loader
3、编辑界面先,左上角logo修改,并链入官网路由。
4、开仿!

需要升级的框架:
react react-dom react-test-renderer
开源库选择:

2019年12月16日15:51:52
经分析GUI和考虑到用户体验感,
需要使用webpack进行多页面生成。
index.html是官网,
editor.html是编辑器。

然后 index.ejs中注入 扩展的配置config

再gui中添加垃圾桶。

经过几小时的研究,终于完成多页面的webpack配置。
但是其中需要注释optimization。如果不注释,则home页面打包的js文件会丢失react和react-dom

1、参数查询

本地调式sb3接口:3001

2、GUI抽离player组件

在ReactDOM.render中,
此WappredGui是高阶组件。
其内部是GUI container 状态逻辑层
再内部是 GUI component 样式逻辑层

3、素材链接切换


注意:
之前修改了默认角色,而默认角色需要添加svg*2到2处。
一处在lib/default-project/中
另一处在/static/assets/中

角色素材库更新(来自群友)
// tag-messages.js里面增加geekstar: {defaultMessage: 'Geekstar',description: 'Tag for filtering a library for geekstar',id: 'gui.libraryTags.geekstar'},
geekstar就是新增的按钮;// backdrops.json{"name":"123","rawURL":"https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1574859531235&di=2c4c333fda2ddce66dcd88d08a34f149&imgtype=0&src=http%3A%2F%2Fpic27.nipic.com%2F20130313%2F9252150_092049419327_2.jpg","type":"backdrop","tags":["outdoors","cold","north pole","south pole","ice","antarctica","robert hunter","geekstar"],"info":[960,720,2]}// backdrop-tags.js{tag: 'geekstar', intlLabel: messages.geekstar}

4、Home与GUI联调相关记录

1、单站点Home开发 使用webpack.config2.js
2、双站点Home与GUI调试,还是使用webpack.config.js

注意1:
双站点开发 需注意路由和链接的区别。
站点之间的跳转是 链接的跳转。 是服务端做的事
而站点内的跳转是 路由的跳转。 是前端一种锚点功能。

2020年1月13日,前端大体完成,进入后端开发部分。

开发思路:

1、顺着前端开发的静态页面,从上到下实现各个逻辑各个接口,体现复用性

并不断优化前端,优化后端。

2、先思考,后参考,再实现,再分析。
3、BrowserRouter的更换

1、BrowserRouter为了美化URL以及书签的可收藏,进行了地址栏hash的增加,并且每个组件拥有UseEffect副作用,用于跳转指定选项卡(适配书签)。 // DigitalTabs考虑复杂度就不做了,制作一级路由适配书签。
2、但是有个问题,react-router-dom 提供的 history.listen没有解除绑定的API,故只能暂时通过window去标志。
3、找到了解决办法,官方不是没提供解绑,而是封装成了二阶函数,即将listen实例化执行即可。

管理react路由的history对象的插件history的使用介绍

一、自制路由守卫

4、完整实现代码如下:

  const [location, setLocation] = useState(props.location);const prevLocation = usePrev(location);// ...// 充当路由守卫useEffect(() => {// 挂载完毕后的触发顺序: listener return useEffect回调文// 3、触发内部逻辑,滚动条跳转// console.log(location, prevLocation);if (location.pathname !== prevLocation.pathname) {window.scrollTo(0, 0);}const unListen = props.history.listen(location => {// 1、触发hashchange,设置location,//  而prevLocation会因为重新执行闭包,自动记录先前的locationsetLocation(location);});// 2、触发unListen解绑listener,return () => unListen();}, [location]);

二、哈希与数据渲染


仅改变页面的哈希,是不会触发重渲的。
非常适合于拥有选项卡的页面,多级选项卡,配合多个哈希,进行多样数据渲染。
方式有两种:
1、哈希与逻辑强关联

  // 所有选项卡的点击,均是路由跳转,路由改变会触发useEffect,useEffect中进行数据的重渲。// 页面首载:路由定位选项卡useEffect(() => {// 一级路由哈希判断,定位次级路由的渲染内容const { type } = transferHash(props.location.hash);if (type === 'work') {setNavActiveIndex(0);} else if (type === 'collect') {setNavActiveIndex(1);} else if (type === 'concern') {setNavActiveIndex(2);}}); // props的location改变会触发// 作品 收藏 关注const handleNavClick = (index) => {// 哈希跳转props.history.push(`/user#type=${index === 0 ? 'work' : index === 1 ? 'collect' : 'concern'}`)};

2、哈希与逻辑解耦

  // 页面首载:路由定位选项卡useEffect(() => {// ... 相似}, []); // 只需要触发一次const handleTabClick = (index) => {setTabActiveIndex(index);};const handleTagClick = (index) => {setTagActiveIndex(index);};const handleDigitalClick = (index) => {setDigitalActiveIndex(index);window.location.hash = `#sha`; // 修改哈希// .. refreshWorks() };

三、SB3播放器嵌入+样式修改+作品链入

1、嵌入基本无问题,但静态资源的地址,需要使用根目录定位,output publicPath: '/'即可
2、注意historyApiFallback: true
3、devServer 资源代理默认 publicPath: ‘/’ 无问题。
4、修改SB3播放器样式

1、进入编辑按钮和隐藏过渡动画



2、播放器尺寸调整

2.1圆角消除


3、stage-only.css盒子宽高采用继承

4、播放器全屏样式优化



5、过渡动画小屏幕化

注:上述样式并非最终样式,主要参考文件的位置。

2020年1月16日14:21:25 杂七杂八原因,样式又进行了修改,从自己的组件开始传入isPlayerOnly并传递给Stage继续向下传递。

作品链入部分

其实scratch自身提供了外部链入作品的方法,而且直接暴露给了浏览器的URL 如
/#10001 则访问是服务器的10001文件,但是我想抽离出API.
辗转1小时,我失败了。
所以,还是魔改源码。

注: 理论上sb3_时间戳.sb3 应该不会重名,我不清楚。但是并不想大改,更新数据库的字段。
且使用handleHashChange,并不灵活,如果真发生问题,需要注入loadProject并注入封面,后议。
过了15分钟。
我真实日了狗了,问题很严峻,如果url采用文件名的方式去获取文件,很好,文件来了,那么数据库的字段信息呢,标识是什么? ???
OKOK,
只能采用loadProject方式了,希望坑别太多。

2020年1月17日13:31:32
SB3Player组件 封装完毕。
实现过程和思路基本一致:
loadProject加载完作品后, projectData进入了redux,通过注入vm单例,调用vm.renderer.draw()方法 进行canvas的解析。

2020年2月6日19:39:06
因为站点需要对SB3Player组件的尺寸做设置。故需要开设新prop传递。
在此梳理下文件之间的关系:





链入视频

其实视频用的就是原生的播放器,没什么花头。

    <div className='video-contaniner'><videosrc={resource} // resource为视频地址controls="controls"/></div>

(凯思奥)开发记录2:官网架构以及进度规划,参数查询,GUI抽离player组件,素材链接切换,***双站点联调记录: 自制路由守卫,哈希与数据渲染,***SB3播放器嵌入+样式修改+作品链入+视频相关推荐

  1. 图库/相册/播放器看不到迅雷下载的视频的解决办法

    以小米10手机为例: 图库/相册/播放器看不到迅雷下载的视频的原因: 迅雷下载视频所在路径: /storage/emulated/0/Android/data/com.xunlei.downloadp ...

  2. 一步步实现windows版ijkplayer系列文章之二——Ijkplayer播放器源码分析之音视频输出——视频篇...

    一步步实现windows版ijkplayer系列文章之一--Windows10平台编译ffmpeg 4.0.2,生成ffplay 一步步实现windows版ijkplayer系列文章之二--Ijkpl ...

  3. 物联卡查询流量_电信物联卡官网是多少?如何快速查询流量信息?

    原标题:电信物联卡官网是多少?如何快速查询流量信息? 高速率设备的使用场景需要用到5G,中速率LET-Cat1应用范围更广,而低速率则要靠窄带物联网NB-IOT去维护了.这三种网络制式全都与物联网息息 ...

  4. 云创平台+播放器SDK,腾讯云音视频新工具助力视频生产、终端能力全面升级

    腾讯云音视频围绕在线视频生产和终端播放能力推出新工具. 6月28日,在"TechoDay腾讯技术开放日"活动现场,腾讯云音视频发布"腾讯云视立方·播放器SDK" ...

  5. 潢川高中2021高考成绩查询,信阳市教育体育局官网2021潢川中招成绩查询系统

    信阳市教育体育局官网2021潢川中招成绩查询系统 信阳市教育体育局官网2021潢川中招成绩查询系统 信阳教育体育局官网(http://jytyj.xinyang.gov.cn)是2021潢川中考官方网 ...

  6. 2021潢川中学高考成绩查询,信阳市教育体育局官网2021潢川中招成绩查询系统

    信阳市教育体育局官网2021潢川中招成绩查询系统 信阳教育体育局官网(http://jytyj.xinyang.gov.cn)是2021潢川中考官方网站,信阳市教育局网站jytyj.xinyang.g ...

  7. (凯思奥2020-03月)问题记录3,GUI问题记录3 4,国际化异常,微信平台接入 = 数据库修改 + 自动化填充 + 前后端接口修正 + 联调测试问题 + 微信与数字账号绑定 + 思考+部署

    问题记录3: 1. UserPage: 未登录状态(报解构异常),或直接登出再登录,没有获取用户数据. 2.WorkContentPage gui相关(大片红字报错)(国际化message类型问题) ...

  8. iOS开发之仿微博视频边下边播之自定义AVPlayer播放器, 边下边播解剖。视频处理流程,建立连接-请求数据-统筹数据-解码数据-视频呈现

    Tips:这次的内容分为两篇文章讲述 01.[iOS]仿微博视频边下边播之封装播放器 讲述如何封装一个实现了边下边播并且缓存的视频播放器. 02.[iOS]仿微博视频边下边播之滑动TableView自 ...

  9. android无障碍功能开发,威尼斯游戏-官网首页

    一.数据维护 1.1.Period final修饰,线程安全,ISO-8601日历系统中基于日期的时间量,例如2年3个月4天. 主要属性:年数,月数,天数. /** * The number of y ...

  10. 【Android开发】apktool官网及最新版本

    总是在网上找不到最新版本的apktool,干脆就去官网下载吧~~ 这里是apktool官网地址:https://ibotpeaches.github.io/Apktool/ 目前最新版本是v2.0.0 ...

最新文章

  1. 数据结构与算法:选择排序
  2. JavaScript是如何工作的:编写自己的Web开发框架 + React及其虚拟DOM原理
  3. 在MAC上给Anaconda的python安装tensorflow
  4. java crossdomin.xml_crossdomain.xml的配置详解
  5. pytorch笔记:实例解析NLLLoss和CrossEntropyLoss
  6. 全球及中国工业金刚石微米粉行业十四五规划研究与发展战略分析报告2021年版
  7. Xtreme ToolkitPro 编译过程详解
  8. 单片机矩阵消抖延时c语言,单片机矩阵按键定时器消抖程序源码
  9. Ruby On Rails --环境搭建之回眸一笑
  10. 【C++入门】C++ List类
  11. 北理工嵩天Python语言程序设计笔记(目录)
  12. 【离散数学】 MIT 6.042J 笔记 - Lecture 1 Introductions and Proofs
  13. Python 爬虫之初体验(实习僧)
  14. 线性代数学习笔记11-2:总复习Part2(相似对角化、对称矩阵、奇异值分解SVD)
  15. stm32f407探索者开发板(二)——新建工程(基于固件库)
  16. win7如何设置通电自动开机_dell主板win10如何设置通电自动启动_dell主板win10怎么设置通电自动启动...
  17. 关于基于kangle和EP面板使用CDN
  18. 安迪·鲁宾支持的猫头鹰实验室刚推出了一款机器人视频会议摄像机
  19. 为何,以及如何提炼一个函数
  20. 分享三个游戏源码下载网站

热门文章

  1. 想要成功先逼自己养成十个好习惯
  2. 银翼杀手2049——依稀可见的存储未来
  3. 一套商业级手麻系统源码,C# 手术麻醉系统源码
  4. android10彩蛋小游戏,安卓10彩蛋(安卓10内置小游戏)
  5. 优梵艺术完成近亿元A轮融资,打造时尚家具品牌
  6. activity审核节点任务(签领、完成任务、跳过节点、新增节点、设置委托人)
  7. Java-常用 API(String、ArrayList)
  8. excel合并单元格函数
  9. 使用SXSSFDrawing向excel中插入图片
  10. 使用 rsync 来备份 Linux 系统