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

Project1

 找回密码
 注册会员
搜索

脚本实现【图片移动】的简单探索

查看数: 2116 | 评论数: 8 | 收藏 2
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2021-12-10 10:54

正文摘要:

本帖最后由 夏虫沉默 于 2021-12-22 21:40 编辑 在用纯脚本模拟重装机兵.金属探测仪的效果时,发现了几个问题: JAVASCRIPT 代码复制let x=$gamePlayer.screenX(), y=$gamePlaye ...

回复

haosama 发表于 2022-5-17 16:04:42
厉害!不愧是你!
夏虫沉默 发表于 2021-12-22 00:47:53
方法和函数是同一概念,其实只用setTimeOut方法也可以实现间隔执行的效果,在一个方法里使用setTimeOut方法,参数是这个方法的名称,这种写法类型叫递归。(说得太复杂了,还是循序渐进吧,欲速不达也)
任小雪 发表于 2021-12-22 00:14:25
https://www.w3school.com.cn/js/js_asynchronous.asp
有一个等待间隔的东西,不过没实操过。
然后有一个等待文件的东西,不知道是不是就是等待音乐和对话,以实现轮着播放的(我还不想研究,就分享一下而已)

点评

不过我发现BGM和BGS都是循环播放的,但是ME和SE都是只播放一遍的  发表于 2021-12-25 17:25
。。。  发表于 2021-12-22 18:09
链接的等待文件是指加载文件时,如果没有加载到则显示错误信息,否则是显示加载的信息。这个和你要的应该不是不一样  发表于 2021-12-22 16:12
如果是无参方法还好办,有参的话,就是使用回调函数了。顺便说下,setTimeOut方法的第一个参数是方法名,这个本身就是一个回调函数  发表于 2021-12-22 00:42
怪不得大家都又function一次,唔  发表于 2021-12-22 00:35
夏虫沉默 发表于 2021-12-13 16:01:17
任小雪 发表于 2021-12-13 14:36
setTimeout好像不能在插件里用,我猜测可能是function套function再套function太多次不行的问题 ...

rpg_core.js文件里8124行有一个seek方法
JAVASCRIPT 代码复制
  1. WebAudio.prototype.seek = function() {
  2.     if (WebAudio._context) {
  3.         var pos = (WebAudio._context.currentTime - this._startTime) * this._pitch;//pitch是音频的声调,这里可以看出声调会影响播放的速度
  4.         if (this._loopLength > 0) {
  5.             while (pos >= this._loopStart + this._loopLength) {
  6.                 pos -= this._loopLength;
  7.             }
  8.         }
  9.         return pos;
  10.     } else {
  11.         return 0;
  12.     }
  13. };

8051行的play方法
JAVASCRIPT 代码复制
  1. WebAudio.prototype.play = function(loop, offset);//loop控制是否循环播放,offset控制音频从几秒开始播放

8269行的_createEndTimer方法
JAVASCRIPT 代码复制
  1. WebAudio.prototype._createEndTimer = function() {//这个方法涉及到setTimeout和计时器timer
  2.     if (this._sourceNode && !this._sourceNode.loop) {
  3.         var endTime = this._startTime + this._totalTime / this._pitch;
  4.         var delay =  endTime - WebAudio._context.currentTime;
  5.         this._endTimer = setTimeout(function() {
  6.             this.stop();
  7.         }.bind(this), delay * 1000);
  8.     }
  9. };
  10.  
  11. WebAudio.prototype._removeEndTimer = function() {
  12.     if (this._endTimer) {
  13.         clearTimeout(this._endTimer);
  14.         this._endTimer = null;
  15.     }
  16. };

这些都是WebAudio类的方法

点评

while是循环,然后,好像学习成本有点高(或许大概能看懂这些代码,但不会用),我暂时就浅尝辄止吧,唔  发表于 2021-12-13 17:14
至于例子,还需要花时间研究  发表于 2021-12-13 16:03
任小雪 发表于 2021-12-13 14:36:03
setTimeout好像不能在插件里用,我猜测可能是function套function再套function太多次不行的问题

点评

暂时能用一点,看来可能是我理解得不够  发表于 2021-12-22 00:16
你可以把代码的写法编辑一下  发表于 2021-12-13 15:07
任小雪 发表于 2021-12-11 14:23:15
自问自答的我又来了,写插件用的等待可能用的是以下格式来实现等待
this._waitCount = 500;
五百可能就是五百帧,我没完全实测,正在实验

点评

我暂时是用来实现纯脚本的普通传送而已,不行也没啥吧,嗯  发表于 2021-12-11 16:18
不过,太复杂的话就算了  发表于 2021-12-11 16:14
this._waitCount-- 这样?,还是。。。话说,能不能举个播放音乐的例子?  发表于 2021-12-11 16:14
字面上只是设置了等待的帧,并没有设置减少waitcount  发表于 2021-12-11 15:51
。。。好像还是需要回调嘛(一等待就全停止?)  发表于 2021-12-11 15:29
任小雪 发表于 2021-12-10 15:20:14
大佬试过封装后连续多次等待和执行某些操作是否可行吗?

然后,关于this,我找到了一些资料,但我只能给大佬研究
,因为我暂时理解不了

https://blog.csdn.net/Lixam/article/details/12493245

点评

what' up.我觉得应该浅尝辄止,不知其所以然也  发表于 2021-12-11 15:10
任小雪 发表于 2021-12-10 11:43:25
大佬大佬,为什么写插件时,thiswait有时用不了,还有音乐怎么才能一首一首轮着播放

点评

可能涉及到文件的读取,大概就是要先获取歌曲的时长,时长到了就播放下一首吧  发表于 2021-12-10 15:48
这个是因为this是指代当前对象,有时对象不存在,或者对象没有这个方法,都不能调用wait方法  发表于 2021-12-10 15:42
拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

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

GMT+8, 2024-5-18 09:01

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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