首页 > 其他分享 >Cocos实例2:实现VideoPlayer奥利奥夹心饼干

Cocos实例2:实现VideoPlayer奥利奥夹心饼干

时间:2024-03-26 11:01:06浏览次数:18  
标签:Cocos playRate VideoPlayer Label video test UI 夹心饼干

实现VideoPlayer奥利奥夹心饼干

在CocosCreator中,VideoPlayer 支持的视频格式为 mp4,所以在需要使用到VideoPlayer组件时,确保视频资源是正确的编码和格式。另外不同平台对于 VideoPlayer 组件的授权、API都不同,并没有形成统一的标准,Creator中的VideoPlayer组件目前只支持 Web、iOS、Android。该实例以Web平台为例子。Creator版本为3.6.3。

如何实现VideoPlayer夹心饼干

因为VideoPlayer 组件独特渲染机制的限制,在CocosCreator中默认是显示在canvas的上层,引擎也提供了设置Video在canvas下层的方式,以官方文档中所提供的方法,VideoPlayer只能显示在最上层或最下层,没法做夹心饼干。例如想要把视频放在一个UI背景上,在视频的上方也要有可以交互的UI按钮等。于是想了一种方法:结合Mask组件实现该效果。
  • 原理:
    1.设置VideoPlayer在最下层显示;
    2.添加背景,结合Mask组件在该背景上 “挖出” 一个刚好能显示VideoPlayer的洞;
    3.添加可以交互的UI
  • 实例
    • 准备资源
      1.一张背景图片
      2.一个Mp4文件
    • 搭建UI
      在这里插入图片描述
      大致如上图。
      接下来挖个洞来显示视频,创建一个反向遮罩,把上面搭建的UI节点们放在遮罩下面
      在这里插入图片描述

另外还需要注意一点:除了勾选“stayOnBottom”,还需要在Creator的 项目设置 -> 宏配置中勾选 ENABLE_TRANSPARENT_CANVAS
在这里插入图片描述
如果不设置Canvas透明支持,即使视频包含透明区域,这部分也会被Canvas的不透明背景色填充,导致看不到视频。
搭建UI就到这里,接下来要实现预览界面中,视频刚好显示在空白的广告牌中,功能按钮点击可以控制视频播放。
- 编写脚本VideoCtrl.ts

import { _decorator, Component, Label, Node, Slider, VideoPlayer } from 'cc';
const { ccclass, property } = _decorator;

@ccclass('VideoCtrl')
export class VideoCtrl extends Component {
    // 定义一个VideoPlayer类型的属性,名称为test_video,初始值为null
    @property(VideoPlayer)
    test_video: VideoPlayer = null;
    // 定义一个Label类型的属性,名称为rate_Label,初始值为null
    @property(Label)
    rate_Label:Label = null;

    // 定义一个私有变量,名称为_playRate,初始值为1
    _playRate:number = 1;
    // 定义一个点击播放的方法
    onClickPlay(){
        // 调用test_video的play方法
        this.test_video.play();
    }
    // 定义一个点击暂停的方法
    onClickPause(){
        // 调用test_video的pause方法
        this.test_video.pause();
    }
    // 定义一个点击重新开始的方法
    onClickResume(){
        // 调用test_video的resume方法
        this.test_video.resume();
    }

    // 定义一个滑动改变的方法
    onSlideChange(slider: Slider){
        // 调用test_video的currentTime方法,传入slider的progress乘以test_video的duration
        this.test_video.currentTime = slider.progress * this.test_video.duration;
    }
    // 定义一个改变播放速率的方法
    onChangeRate () {
        // 将_playRate加1,如果大于等于3,则重置为1,然后调用test_video的playbackRate方法,传入_playRate,最后调用rate_Label的string方法,传入_playRate的值
        this._playRate = this._playRate++ >= 3 ? 1 : this._playRate;
        this.test_video.playbackRate = this._playRate;
        this.rate_Label.string = `x${this._playRate}`;
    }
}

把它绑定到控制节点上,对应的引用属性都填好。
在这里插入图片描述

  • 运行预览

请添加图片描述

	看起来还不错

标签:Cocos,playRate,VideoPlayer,Label,video,test,UI,夹心饼干
From: https://blog.csdn.net/qq_43242691/article/details/136917461

相关文章

  • CocosCtreator知识点4:Creator中的坐标系和节点属性详解
    Creator中的坐标系和节点属性详解在CocosCreator中,游戏场景(Scene)是开发时组织内容的基础,也是呈现给玩家所有游戏内容的载体。而节点是场景的基础组成单位。可以把场景理解为组织内容的空间或平台,所有的内容(节点)通过其位置属性确定在该空间中的某个位置呈现。而为了确定空间......
  • 初探 Cocos Creator: 碰撞与物理系统
    前言不知道你刚开始玩碰撞时,会不会遇到始终无法触发碰撞事件?玩物理系统时,自由落体的刚体会穿过“地面”刚体等情况?没错我全都遇到过,那么下面我就用红蓝色方块,简单实战一下CocosCreator的碰撞与物理系统。 场景创建场景很简单,一个白色背景,两个红蓝色玩家,和一个绿色大草......
  • 三种方式,浅谈 Cocos Creator 的动画添加
    前言虽然Cocos的官方文档对动画系统做了较详细的介绍,但是对于刚接触的同学(比如我)来说还是不太友好。尽管如此,我就按文档加社区帖子一起实践了一下。为了方便忘记后能快速捡起,所以就用我的方式结合使用场景,简单介绍一下CocosCreator动画添加的三种方式。属性动画这个是Co......
  • Cocos实例1:实现平面游戏中的滚动地图
    Cocos实例:实现平面游戏中的滚动地图1.应用: 在2D游戏或某些UI界面中,会经常遇到一些循环滚动的背景或元素。例如飞机大战的背景、冒险岛的双层循环滚动背景,模拟视觉效果上角色在无限背景地图中运动。2.实现原理 需要一张上下或左右在顺序排列时可以无缝衔接的背景图片,搭......
  • 后端搞 Cocos 小游戏开发的三点避坑指北
    前言    先说一下我为什么要弄小游戏吧,首先无关工作,也无关兴趣,就只是想在副业里探索一下。没错就是做一个单机的小游戏上架到平台试一下水(薅广告费),不过说实话入局有点晚。    早在2019年的时候,我也折腾过白鹭引擎还弄过小demo,当时上架平台也简单。但是不知道为......
  • Cocos Creator 2.x升级至Cocos Creator 3.x
    1.导入类时,批量导入2.导入override...关键字时,批量导入3、this.node.scale=0.6-->this.node.setScale(0.6,0.6);4、node.anchorX=node.anchorY=-->.getComponent(UITransform)!.5、.getComponent(UIOpacity)!.opacity6..on('touchend',-->.on(NodeEventType.......
  • cocos2d
    cocos2d是一个功能强大的二维游戏开发框架,最初,它只是一个专为Python设计的小型项目,但它的跨平台能力和功能丰富的API很快就让它崭露头角,成为移动游戏开发的重要工具。开发者社区也针对cocos2d进行了众多拓展,比如cocos2d-x,它提供了对Python3的支持,是参与现代游戏开发项......
  • cocos create 3.X 控制角色左右上下移动
        代码:/***角色上下左右控制**/import{_decorator,Component,Node,Vec3,Input,EventKeyboard,KeyCode}from'cc';const{ccclass,property}=_decorator;@ccclass('Player')exportclassPlayerextendsComponent{xy:......
  • Cocos2dx中应用内部横竖屏切换
    {未实践https://blog.csdn.net/ByAlick/article/details/83009941}{语言环境:Cocos2dx3.6Lua5.1AndroidStudio3.0.1问题:如何在应用内部进行横竖屏切换?解决思路:         由于产品需求,必须在应用内部进行横竖屏切换(苦比〜_〜),没办法,网上教程一大把,大多数是在一......
  • Cocos Creator 2.X(Cocos2d-js)游戏资源目录分析&逆向还原
    拿到了某变态服游戏,打开lib看到了libcocos2djs.so,判断版本为2.4。游戏把资源文件下载到了/data下,因此需要root。目录结构如下:g4-start/├──config.json├──import│ ├──1e│ │ └──1ea6e4bcd.json│ └──e7│   └──e76cb2d2-fa48-4916-......