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

Project1

 找回密码
 注册会员
搜索

写了个物品介绍界面方法,不知道哪里出了问题(已解决)

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

正文摘要:

本帖最后由 rexuegg123 于 2019-3-16 19:55 编辑 写了些物品介绍界面显示的方法,其中一个界面删除的方法不知道哪里出了问题,请大神们看看 就是这个定时删除介绍图片的方法用上后出了问题 修改代码如下: ...

回复

m328759997 发表于 2019-5-1 16:23:44
rexuegg123 发表于 2019-4-29 11:06
用图片做的啊……主要用到了图片公共事件和文字图片化这两个插件

收到 谢谢
rexuegg123 发表于 2019-4-29 11:06:37
本帖最后由 rexuegg123 于 2019-4-29 11:16 编辑
m328759997 发表于 2019-4-26 02:48
请问一下这种格子背包是怎么制作的


用图片做的啊……主要用到了图片公共事件和文字图片化这两个插件
m328759997 发表于 2019-4-26 02:48:49
请问一下这种格子背包是怎么制作的
rexuegg123 发表于 2019-3-19 10:51:24
本帖最后由 rexuegg123 于 2019-3-19 10:56 编辑
白嫩白嫩的 发表于 2019-3-18 13:40
期待楼主的飞天历险早点问世,炒鸡怀念


我也跟期待,不过唉,一个人弄……怎一个慢字了得。
对了,你那里有高级物品的素材没?我这里在飞天国际版里面没有大号……很多素材不全。

点评

我的账号都忘记了,十来年了,哎  发表于 2019-3-19 13:36
白嫩白嫩的 发表于 2019-3-18 13:40:46
期待楼主的飞天历险早点问世,炒鸡怀念
rexuegg123 发表于 2019-3-16 17:09:39
本帖最后由 rexuegg123 于 2019-3-16 19:53 编辑
blue_ku 发表于 2019-3-16 15:01
晕了@_@
setTimeout() 传入的第一个参数要求是字符串。


谢谢大佬,花了那么多时间来讲解,涨了不少知识……再次十分感谢!!!
我这里的问题已经解决了(具体在1楼已经更新):
1、我不该用for循环情况下还要用延迟执行……for循环是不会等待延迟的
2、重复引用相同函数会开启多个实例,使计时加快(同时对WY_i进行累加),反而达不到刷新(重置)延迟时间的目的。所以我在上一级的操作中用if判断了itemshow_clean ()是否已被引用,若没被引用进而在实例中运行的话就直接引用,已引用的话只需重置WY_i=1就可以了。


blue_ku 发表于 2019-3-16 15:01:22
本帖最后由 blue_ku 于 2019-3-17 14:57 编辑

晕了@_@
setTimeout() 传入的第一个参数要求是字符串。

setTimeout(func(), 6000); 情况下,func()会立即执行,不管延时设定多少。
setTimeout(“func()”, 6000); ←这样子写才会在设定延时后执行。


另外,你没搞懂定义函数跟调用函数的区别啊。

functino funcName(){
        pass
}//这样子是定义函数

funcName();//←这样子才会执行函数定义的内容

换句话说,要让一个自己定义的函数运行,要写的代码有两部分。
第一部分是函数定义代码,第二部分是函数执行代码。
当然,觉得这样子很麻烦的程序员不止你一个,所以js提供了定义完函数马上执行的写法;
像这样:

(functon(){
        pass
})();

    ↑函数定义部分要用括号括起来,在这部分外面还要尾随一个括号。

这样子直接执行,所以连funcName都省了,这种省了函数名的函数就叫“匿名函数”。
不过,匿名函数只能用一次,因为没有函数名,想要再使用它也不知道该调用什么东西。
所以要是想让函数在其他地方再次调用的话,就要加上函数名。

此外,在面向对象过程中,“方法”的本质就是函数,而且可以用方法来调用函数,所以给对象添加方法时,定义的函数一般没有函数名。
你可以经常见到这样子写的:

delayedCleaner.method = function(){
        pass
}

调用时就写成:

delayedCleaner.method();

定义函数时也可以这样写:

var funcName = function(){
        pass
}

调用:

funcName();



//==============================================
// 2019年3月17日 14点53分 纠正:
//==============================================
setTimeout() 用法:

  1. setTimeout(func, delay);        //正确/               
  2. setTimeout(function(){pass}, delay);        //正确
  3. setTimeout(func(), delay);        //错误
  4. setTimeout("func()", delay);        //正确
  5. setTimeout(i++, delay);        //错误
  6. setTimeout("i++", delay);        //正确
复制代码


我也才看了js没几天,懂的不多,犯了错误还请见谅

点评

还好啊,你说的东西解决了我好几个问题。  发表于 2019-3-19 10:52
rexuegg123 发表于 2019-3-16 10:02:39
本帖最后由 rexuegg123 于 2019-3-16 10:10 编辑
blue_ku 发表于 2019-3-16 00:18
那是个死循环,一直在执行else语句块。
前面说的if那块应该也是出不去的,你可以在函数后面写个alert(0) ...


确实,if下面不加  "WY_i++"的话,无法跳出最大那个for循环,WY_i++的值达到60后,if的前半部分部分会一直执行……

如果加 "WY_i++"就成了秒删,因为 setTimeout(WY_i++,100); 这句的延迟累加,根本没有延迟……

但直接用 setTimeout(function(){for (var i=101;i<=110;i++){$gameScreen.erasePicture(i);};},6000); 的话,连续点击物品时,游戏似乎会创建多个延迟6秒删除图片的实例,无法达到刷新延迟时间的效果。

最后重新写成下面这样的代码……除了不会生成更多延迟删除的实例秒删外,还是无法达到刷新延迟删除时间的效果。
JAVASCRIPT 代码复制
  1. //用于计时清除物品介绍图片
  2. //功能:定时6秒后清除,若6秒内点击(不同)物品会重新计时
  3. function itemshow_clean () {
  4.         WY_i=1;//定义一个全局变量,初始为1   ————————在上一级操作下WY_i值被重新设置为1,已达到刷新延迟时间的效果
  5.         function itemshow_clean_sto () {
  6.                 if (WY_i<=60) {
  7.                         var w = WY_i*100;
  8.                     if (w>=6000) {                          
  9.                            for (var i=101;i<=110;i++){$gameScreen.erasePicture(i);};//循环清除物品介绍图片
  10.                     } else {
  11.                        setTimeout(function(){WY_i++;itemshow_clean_sto ();},100);
  12.                     };
  13.                 };               
  14.         };
  15.     itemshow_clean_sto ();
  16. };
blue_ku 发表于 2019-3-16 00:18:53
本帖最后由 blue_ku 于 2019-3-16 00:42 编辑

那是个死循环,一直在执行else语句块。
前面说的if那块应该也是出不去的,你可以在函数后面写个alert(0)看看有没有弹框输出,没有就是因为出不去。

其实你可以写成:
  1. function itemshow_clean (){
  2.         for(var i = 101; i <= 110; i++){
  3.                 setTimeout($gameScreen.erasePicture(i), 6000);
  4.         }
  5. }
复制代码
拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

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

GMT+8, 2024-5-27 10:00

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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