设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索

视频标题插件PH_VideoTitle

查看数: 4433 | 评论数: 5 | 收藏 0
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2019-11-12 17:26

正文摘要:

找到一个可以用视频做标题的插件 但是可能插件太久了,有语法错误了 本人是小白,恳请大佬们修复一下 /*: PH - Video Title @plugindesc This plugin allows you to put a video at the background of ...

回复

_Mikan 发表于 2019-11-13 09:57:12

适应了RMMV的pixiJS v4版本
_Mikan 发表于 2019-11-13 09:54:55
/*:

PH - Video Title
@plugindesc This plugin allows you to put a video at the background of the Title Screen instead of a static image.
@author PrimeHover
@version 1.1
@date 11/12/2015

---------------------------------------------------------------------------------------
This work is licensed under the Creative Commons Attribution 4.0 International License.
To view a copy of this license, visit http://creativecommons.org/licenses/by/4.0/
---------------------------------------------------------------------------------------

@param Video Name
@desc Name of the video (See Help Section) | (E.g. "myVideo")

@param Video Muted
@desc Mutes the video in the title (0: No, 1: Yes)
@default 0

@param Video Loop
@desc Makes the video plays in a loop (0: No, 1: Yes)
@default 1

@param Video Poster Name
@desc Name and extension of the image to be shown when the video is loading (E.g. "poster.png")

@param Video Width
@desc Width of the video in the canvas (Default: 816)
@default 816

@param Video Height
@desc Height of the video in the canvas (Default: 624)
@default 624

@param Video Coord X
@desc Coordinate X of the video in the canvas (Default: 0)
@default 0

@param Video Coord Y
@desc Coordinate Y of the video in the canvas (Default: 0)
@default 0

@help

The video you want to play in background must be inside the "movies" folder in your project.
Supported extensions: "webm"

The poster you want to show while the video is not ready must be inside the "pictures" folder in your project.


Maintenance by Mikan on 2019.11.13
For PixiJs v4

*/

(function() {

    /* Getting the parameters */
    var parameters = PluginManager.parameters('PH_VideoTitle');
    var videoName = String(parameters['Video Name']);
    var posterName = String(parameters['Video Poster Name']);
    var videoMuted = Number(parameters['Video Muted']);
    var videoLoop = Number(parameters['Video Loop']);
    var videoWidth = Number(parameters['Video Width']);
    var videoHeight = Number(parameters['Video Height']);
    var videoX = Number(parameters['Video Coord X']);
    var videoY = Number(parameters['Video Coord Y']);

    /* Video Title Class */
    var PH_VideoTitle = null;

    function VideoTitle() {
        this.name = videoName;
        this.posterName = posterName;

        this.setVideoTexture();
    }
    VideoTitle.prototype.constructor = VideoTitle;

    VideoTitle.prototype.setControlOptions = function() {
        if (videoLoop == 1) {
            this._video.loop = true;
        } else {
            this._video.loop = false;
        }

        if (videoMuted == 1) {
            this._video.muted = true;
        } else {
            this._video.muted = false;
        }

        if (posterName.trim() != '') {
            this._video.poster = 'img/pictures/' + this.posterName;
        }
    };

    VideoTitle.prototype.getVideoSrc = function() {
        return 'movies/' + this.name + '.webm';
    }

    VideoTitle.prototype.setVideoTexture = function() {
        this._texture = PIXI.Texture.from(this.getVideoSrc());

        this._video = this._texture.baseTexture.source;
        this.setControlOptions();

        this._texture.baseTexture.source.pause();

        this._spriteVideo = new PIXI.Sprite(this._texture);
        this._spriteVideo.width = videoWidth;
        this._spriteVideo.height = videoHeight;
        this._spriteVideo.x = videoX;
        this._spriteVideo.y = videoY;
    };

    VideoTitle.prototype.pauseVideo = function() {
        this._video.pause();
    };

    VideoTitle.prototype.playVideo = function() {
        this._video.play();
    };

    VideoTitle.prototype.update = function() {
        this._texture.update();
    };


    /* Overwritten Scene_Title methods */
    Scene_Title.prototype.create = function() {

        /* Prevent the video to be duplicated */
        if (PH_VideoTitle === null) {
            PH_VideoTitle = new VideoTitle();
        }
        this.videoTitle = PH_VideoTitle;
        this.addChild(this.videoTitle._spriteVideo);
        this.createForeground();
        this.createWindowLayer();
        this.createCommandWindow();
    };

    Scene_Title.prototype.start = function() {
        Scene_Base.prototype.start.call(this);
        SceneManager.clearStack();
        if (videoMuted == 1) {
            this.playTitleMusic();
        }
        this.startFadeIn(this.fadeSpeed(), false);
    };

    Scene_Title.prototype.terminate = function() {
        Scene_Base.prototype.terminate.call(this);
        this.videoTitle.pauseVideo();
        SceneManager.snapForBackground();
    };

    var _MK_Scene_Title_update = Scene_Title.prototype.update;
    Scene_Title.prototype.update   = function() {
       _MK_Scene_Title_update.call(this);
       this.videoTitle.update();
    };

})();
xuhao1996 发表于 2019-11-13 01:40:58
walf_man 发表于 2019-11-12 23:38
拿去试试,我这找了个视频测试了下,有声音,可是没视频,是黑的,不知道是视频问题还是没改对,你先试试, ...

大佬,现在是有声音,但不能播放视频啊,
只显示视频开始的那一帧图片啊,
求大佬解决一下,
_Mikan 发表于 2019-11-12 22:06:37
更明显了,PixiJs版本老了,回去改一下,
walf_man 发表于 2019-11-12 17:26:52
本帖最后由 walf_man 于 2019-11-15 13:09 编辑

拿去试试,我这找了个视频测试了下,有声音,可是没视频,是黑的,不知道是视频问题还是没改对,你先试试,要是你那也不行,我再看看什么情况。
编辑了下:把代码折叠了,不然好大一篇;
编辑了下:黑屏问题已经解决,屏蔽播放和暂停按钮即可,经过测试,静音、循环功能是完好的,我这视频文件较小,所以哪个poster image没看到效果;
遗留问题:不能控制播放和暂停;

测试环境,rmmv1.6.1;
编辑了下:新增增强优化版标题页面视频背景插件:RMMV标题页面用视频做背景的插件

代码

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-11-23 05:41

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表