<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[Fayeni的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/Fayeni</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; Fayeni]]></copyright><item><title><![CDATA[游戏网络同步：帧同步和状态同步]]></title><link>https://blog.youkuaiyun.com/Fayeni/article/details/124729705</link><guid>https://blog.youkuaiyun.com/Fayeni/article/details/124729705</guid><author>Fayeni</author><pubDate>Thu, 12 May 2022 18:40:40 +0800</pubDate><description><![CDATA[游戏网络同步机制分为帧同步和状态同步。

帧同步是将客户端的操作通过服务端转发给所有客户端，其他玩家同步当前其他玩家的操作，具体执行逻辑写在客户端，再根据处理逻辑后的状态显示，以迁移一致性为主。具体游戏代表为FPS、PVP、PVE，例如绝地求生等。



状态同步是一种将客户端操作统一起来在服务端处理完后将结果同步给客户端的一种同步方式，具体执行逻辑写在服务端，以结果一致性为主。具体游戏代表为mob游戏，例如魔兽、英雄联盟等。

因为帧同步需要客户端实时同步其他客户端的操作，因此服务端即时下发客户端状态，因]]></description><category></category></item><item><title><![CDATA[css-隐藏滚动条并可以滚动内容]]></title><link>https://blog.youkuaiyun.com/Fayeni/article/details/121151014</link><guid>https://blog.youkuaiyun.com/Fayeni/article/details/121151014</guid><author>Fayeni</author><pubDate>Thu, 04 Nov 2021 20:44:39 +0800</pubDate><description><![CDATA[隐藏滚动条的同时还需要支持滚动，我们经常在前端开发中遇到这种情况，最容易想到的是加一个iscroll插件，但其实现在CSS也可以实现这个功能，我已经在很多地方使用了，下面一起看看这三种方法。

方法1：计算滚动条宽度并隐藏起来

在本站的侧栏，你可以看到前端日报的那块内容并没有滚动条，但鼠标移上去却可以滚动内容。这是什么技术呢？ 其实我只是把滚动条通过定位把它隐藏了起来。演示下面给一个简化版的代码



&lt;div class="outer-container"&gt;
    &lt;div cl..]]></description><category></category></item><item><title><![CDATA[Vue3.x项目初始化/创建]]></title><link>https://blog.youkuaiyun.com/Fayeni/article/details/120330608</link><guid>https://blog.youkuaiyun.com/Fayeni/article/details/120330608</guid><author>Fayeni</author><pubDate>Thu, 16 Sep 2021 16:03:10 +0800</pubDate><description><![CDATA[1.在终端输入npm install -g @vue/cli





2.创建一个文件夹/将终端路径设置成你想存储项目的文件

我在这里创建了一个专门用来学习vue的文件夹，并将终端路径指向这个文件夹





3.在终端输入vue create vue3-1，该命令会创建一个名为vue3-1的项目





4.会有几个问题，可以参考设置一下





5.路径指向vue3-1后执行命令yarn serve





6.打开http://localhost:8080/查看页面


...]]></description><category></category></item><item><title><![CDATA[CocosCreator缓动系统使用---停止repeatForever命令]]></title><link>https://blog.youkuaiyun.com/Fayeni/article/details/115324329</link><guid>https://blog.youkuaiyun.com/Fayeni/article/details/115324329</guid><author>Fayeni</author><pubDate>Tue, 30 Mar 2021 14:20:38 +0800</pubDate><description><![CDATA[cc.tween的缓动系统使用repeatForever时会永久生效，如果有需求要让该动作在某一刻换个动作或者停下来，直接对该节点做cc.tween的修改是无效的

因此需要先将该动作停下来，以下代码会生效。

另外不能使用const nodeTween = cc.tween(targetNode)这种方式，尝试后发现无法停止，原因推测可能是因为无法对应到该缓动系统。



cc.Tween.stopAllByTarget(targetNode);
...]]></description><category></category></item><item><title><![CDATA[C++迭代器（STL迭代器）iterator详解]]></title><link>https://blog.youkuaiyun.com/Fayeni/article/details/112561120</link><guid>https://blog.youkuaiyun.com/Fayeni/article/details/112561120</guid><author>Fayeni</author><pubDate>Wed, 13 Jan 2021 13:53:56 +0800</pubDate><description><![CDATA[要访问顺序容器和关联容器中的元素，需要通过“迭代器（iterator）”进行。

迭代器是一个变量，相当于容器和操纵容器的算法之间的中介。

迭代器可以指向容器中的某个元素，通过迭代器就可以读写它指向的元素。从这一点上看，迭代器和指针类似。
迭代器按照定义方式分成以下四种。
1) 正向迭代器，定义方法如下：


容器类名::iterator 迭代器名;

2) 常量正向迭代器，定义方法如下：


容器类名::const_iterator 迭代器名;

3) 反向迭代器，定义方法如下：


容器类名::r..]]></description><category></category></item><item><title><![CDATA[让心灵插上翅膀自由飞翔——之北戴河]]></title><link>https://blog.youkuaiyun.com/Fayeni/article/details/109022304</link><guid>https://blog.youkuaiyun.com/Fayeni/article/details/109022304</guid><author>Fayeni</author><pubDate>Mon, 12 Oct 2020 10:16:59 +0800</pubDate><description><![CDATA[去北京一定要去胡同走一走，感受老北京的生活，体会远离闹市的那一份宁静。



幸运的是，胡同人烟稀少，但是几乎每家每户都会贴上类似于：私人住处，请勿进入之类的话语，我想可能是因为游客过多，有出现私闯民宅的现象吧。

逛完北京胡同就出发去北京站准备北戴河之行，因为我选择的胡同离北京站不远，所以我依然选择步行到北京站。

在胡同里看到一家小商铺，准备进去瞅瞅物价如何，结果发现并没有很贵，果断选择买一点干粮和水，意外之喜！

北戴河临海，所以首要的风景就是看海以及日出。

北戴河有个鸽子窝公园，是相传毛主席观赏日]]></description><category></category></item><item><title><![CDATA[Cocos creator 基础学习---sp.Skeleton组件动画的动态加载（只有图片没有动画）]]></title><link>https://blog.youkuaiyun.com/Fayeni/article/details/108795263</link><guid>https://blog.youkuaiyun.com/Fayeni/article/details/108795263</guid><author>Fayeni</author><pubDate>Fri, 25 Sep 2020 14:05:33 +0800</pubDate><description><![CDATA[动态加载资源时设置skeleton的animation属性结果只有图片没有动画



试过节点在资源外生成

在资源加载外设置animation属性

异步加载资源 用promise then方法

均不行



最后能实现：



猜测原因：



可能是在获取skeleton属性的时候这个时候节点还是不存在的（虚拟状态）

引擎找不到到底是谁和位置就无法设置就只能null

或者引擎规定在未加上节点或者还是不存在的虚拟状态时无法进行具体信息设置

或者设置了之后加节点时又变成为默认值。。。。。。
...]]></description><category></category></item><item><title><![CDATA[Cocos creator 基础学习---弹窗后使场景中的点击事件失效]]></title><link>https://blog.youkuaiyun.com/Fayeni/article/details/108467501</link><guid>https://blog.youkuaiyun.com/Fayeni/article/details/108467501</guid><author>Fayeni</author><pubDate>Tue, 08 Sep 2020 14:13:01 +0800</pubDate><description><![CDATA[在节点上添加BlockInputEvents组件即可





记得在关闭弹窗的时候销毁掉，不然拦截会一直持续








]]></description><category></category></item><item><title><![CDATA[Cocos creator---import导入脚本报红问题与解决办法]]></title><link>https://blog.youkuaiyun.com/Fayeni/article/details/108467109</link><guid>https://blog.youkuaiyun.com/Fayeni/article/details/108467109</guid><author>Fayeni</author><pubDate>Tue, 08 Sep 2020 14:01:52 +0800</pubDate><description><![CDATA[原因一：路径错误

可能是手动导入路径写错导致

解决办法：删除报红处后在需要调用脚本的地方Alt+Shift+Enter

原因二：资源错误

可能是误删/修改项目中assets下的文件夹导致编辑器无法找到正确的脚本引用

解决办法：删除该项目下的.idea文件，重新在编辑器中打开该项目



.idea是webStorm编辑器创建的一个项目配置文件。
...]]></description><category></category></item><item><title><![CDATA[Cocos creator---随手记（一）]]></title><link>https://blog.youkuaiyun.com/Fayeni/article/details/108403300</link><guid>https://blog.youkuaiyun.com/Fayeni/article/details/108403300</guid><author>Fayeni</author><pubDate>Fri, 04 Sep 2020 16:00:21 +0800</pubDate><description><![CDATA[刚学没多久，试着做了个逻辑比较简单的判断，只是为了记录自己的成长，也是舍不得这段代码，后续做了优化后就删掉了，所以保留一下以作纪念吧！

    内容大概就是一个按钮，有两种状态，红色和绿色，点击就切换

    在按钮为绿色时就可以转动，为红色时，wheel轮子就停止转动

    在wheel轮子转动时，wrench扳手不会触发任何事件，停止转动时可以触发wheel事件

点击拾取工具代码：


//只能点一次
if (this.shedClickTem...]]></description><category></category></item><item><title><![CDATA[Cocos creator 基础学习---Color颜色]]></title><link>https://blog.youkuaiyun.com/Fayeni/article/details/108355766</link><guid>https://blog.youkuaiyun.com/Fayeni/article/details/108355766</guid><author>Fayeni</author><pubDate>Wed, 02 Sep 2020 10:08:27 +0800</pubDate><description><![CDATA[this.node.color = cc.color(255,255,100);
this.node.opacity = 100;

也可以：


this.node.color = cc.Color.GREEN;

注意大小写区别。。。

有四个值：R/G/B/A（red、green、blue、alpha）



官方建议只设置前三个rgb，如果要设置透明度则单独设置。但是写了也不影响效果。。。。
...]]></description><category></category></item><item><title><![CDATA[Cocos creator 基础学习---点击事件之一次点击后失效]]></title><link>https://blog.youkuaiyun.com/Fayeni/article/details/107939579</link><guid>https://blog.youkuaiyun.com/Fayeni/article/details/107939579</guid><author>Fayeni</author><pubDate>Tue, 11 Aug 2020 17:05:31 +0800</pubDate><description><![CDATA[一次触发后失效

点击事件在部分情况下都只需要触发一次，再次点击不会产生任何效果，因此为了避免持续点击所造成的冲突or小bug，现有两种解决办法

一种是通过判断点击的次数


clickCount = 0;//设置点击次数
 
onClickBtn(){
    this.clickCount ++;
    if (this.clickCount == 1){//判断点击次数，只有第一次点击才能进入，否则不再触发
        //点击事件
    }else {
        return;
  ]]></description><category></category></item><item><title><![CDATA[Cocos creator 基础学习---添加点击事件]]></title><link>https://blog.youkuaiyun.com/Fayeni/article/details/107936185</link><guid>https://blog.youkuaiyun.com/Fayeni/article/details/107936185</guid><author>Fayeni</author><pubDate>Tue, 11 Aug 2020 17:02:08 +0800</pubDate><description><![CDATA[设置办法

点击事件有两种设置办法，一是添加button组件，二是添加touchend触摸事件。

添加组件：







绑定某个节点下挂载的脚本后在该脚本中设置点击方法

触摸事件：

添加该节点的点击事件


onLoad{
    this.node.on('touchend',this.on_touch_ended,this);
}

on_touch_ended(){
    //点击事件
}

二者区别在于button组件只能对该节点有效 无法进行屏幕穿透

而touch触摸事件则是针对屏幕]]></description><category></category></item><item><title><![CDATA[Cocos creator 基础学习---物理属性系统]]></title><link>https://blog.youkuaiyun.com/Fayeni/article/details/107786522</link><guid>https://blog.youkuaiyun.com/Fayeni/article/details/107786522</guid><author>Fayeni</author><pubDate>Tue, 04 Aug 2020 15:22:46 +0800</pubDate><description><![CDATA[记录一下使用物理系统时踩过的坑！

one：修改type属性以及修改修改重力值

想实现点击之后改变type属性，将物体由static静止状态改编成dynamic运动状态

就不展示我那蹩脚的代码写法了

正确的写法：


onClickCollierStartBtn(){
        this.cake.getComponent(cc.RigidBody).type = RigidBodyType.Dynamic;
        this.cake.getComponent(PhysicsBoxCo]]></description><category></category></item><item><title><![CDATA[Cocos creator 基础学习---背景加灰度]]></title><link>https://blog.youkuaiyun.com/Fayeni/article/details/107755731</link><guid>https://blog.youkuaiyun.com/Fayeni/article/details/107755731</guid><author>Fayeni</author><pubDate>Mon, 03 Aug 2020 08:50:08 +0800</pubDate><description><![CDATA[需求：在游戏界面弹出一个小窗口或者一个界面，将大背景或者主页变成灰暗色调

刚开始做的时候以为使用opacity透明度，0~255，修改数值即可，但是发现没办法做到控制每一个节点都能修改，并且界面节点一旦多了起来，就没办法控制，非常复杂。

在偶然间创建节点的时候，发现sprite精灵下面有个sprite单色，我带着好奇新创建了一个，结果我发现我的界面其中的一块被覆盖掉了，我习惯性的修改了opacity，神奇的事情发生了，虽然是底色是白色，但是那种朦胧感模糊感就出来了，激动的我赶紧又小心翼翼的修改了它的颜色]]></description><category></category></item><item><title><![CDATA[Cocos creator 基础学习---碰撞系统]]></title><link>https://blog.youkuaiyun.com/Fayeni/article/details/107700013</link><guid>https://blog.youkuaiyun.com/Fayeni/article/details/107700013</guid><author>Fayeni</author><pubDate>Thu, 30 Jul 2020 20:42:54 +0800</pubDate><description><![CDATA[使用时需要开启碰撞系统


cc.director.getCollisionManager().enabled = true;

（但不需要像物理系统那样规定必须要求在onLoad()中开启，只要在发生碰撞前开启就可以）

物理系统管理器开启需在onLoad(){}里：


onLoad(){
    cc.director.getPhysicsManager().enabled = true;
}

碰撞系统回调函数

碰撞产生时 onCollisionEnter: function (other, s.]]></description><category></category></item><item><title><![CDATA[JavaScript---switch判断语句之类型区别]]></title><link>https://blog.youkuaiyun.com/Fayeni/article/details/107539129</link><guid>https://blog.youkuaiyun.com/Fayeni/article/details/107539129</guid><author>Fayeni</author><pubDate>Thu, 23 Jul 2020 15:55:23 +0800</pubDate><description><![CDATA[var grade = "A";
        switch (grade) {
            case "A": {
                console.log("优");
                break;
            }
            case "B": {
                console.log("良");
                break;
            }
            case "C": {.]]></description><category></category></item><item><title><![CDATA[Cocos creator 基础学习---切换场景]]></title><link>https://blog.youkuaiyun.com/Fayeni/article/details/107528374</link><guid>https://blog.youkuaiyun.com/Fayeni/article/details/107528374</guid><author>Fayeni</author><pubDate>Thu, 23 Jul 2020 09:00:20 +0800</pubDate><description><![CDATA[方法一：


onclickBtn(){
    cc.director.loadScene("scene2");//对应的scene名；sceneName
}

方法二：


mainS="scene2";//方便编辑器中场景名的修改；


onclickBtn(){
    cc.director.loadScene(this.mainS);
}




cc.director.loadScene(“场景名称”);//加载场景，

cc.director.preloadScene(“场景名称”);//.]]></description><category></category></item><item><title><![CDATA[1215 - cannot add foreign key constraint的解决办法]]></title><link>https://blog.youkuaiyun.com/Fayeni/article/details/104617660</link><guid>https://blog.youkuaiyun.com/Fayeni/article/details/104617660</guid><author>Fayeni</author><pubDate>Mon, 02 Mar 2020 19:14:30 +0800</pubDate><description><![CDATA[1215 - cannot add foreign key constraint发生在为数据表添加外键时，一旦发生，还是挺痛苦的。在此，参考相关文章及本人经验做一下总结：

情况一：数据表存储引擎不一致





我们看到，只有InnoDB是支持外键的。这就要求在指定外键时，两张表的引擎都要保证是InnoDB。如果这两张表任意一张表的引擎不是InnoDB，那么都会报1215 - cannot a...]]></description><category></category></item><item><title><![CDATA[%@ taglib uri=“http://java.sun.com/jsp/jstl/core” prefix=“c”%     报错！！！！JSP]]></title><link>https://blog.youkuaiyun.com/Fayeni/article/details/104476739</link><guid>https://blog.youkuaiyun.com/Fayeni/article/details/104476739</guid><author>Fayeni</author><pubDate>Mon, 24 Feb 2020 14:04:13 +0800</pubDate><description><![CDATA[写JSP项目时&lt;%@ taglib uri=“http://java.sun.com/jsp/jstl/core” prefix=“c”%&gt;报错

删除后能跳转页面，加上啥也没有还报错

问题原因：

缺少两个jar包

jstl.jar

standard.jar

解决办法：

添加jar包，，，到lib里即可！！！！！

在tomcat\webapps\examples\WEB-...]]></description><category></category></item></channel></rss>