猫史档案馆


ray_crazy

ray_crazy

Lv.1

Error: Cannot get property "个性签名" of undefined.

获赞:33收藏:5浏览:1074作品收藏:8

签名:开心中

回复帖子评论
上一页4 页 / 共 6下一页

揭发+举报 中回复

我就点进去了,差点被骗了,幸好我猜到了

2022-01-21T21:47:33 点赞:2

【编程猫消息通知器】MacOs版编程猫消息通知器来啦! 中回复

center_image

2022-01-24T11:17:41 点赞:0

【编程猫消息通知器】MacOs版编程猫消息通知器来啦! 中回复

2022-01-24T11:55:10 点赞:0

《你离大佬只差亿步之遥》第一期 中回复

Mac版要把ctrl改为command,alt改为option

2022-01-26T10:12:20 点赞:0

【BOX3】岛三真的很吃显卡... 中回复

是Chrome在吃吧

2022-02-27T13:24:04 点赞:0

招聘Java编程大师 中回复

请分清java和javascript!!!

2022-02-27T13:25:54 点赞:0

【项目发布】blox:支持Js Box3的图形化编程工具 中回复

纯前端就非常肝

2022-02-27T13:27:07 点赞:0

🧬【源代码全公开!】圈地之王开发接力挑战 中回复

考古

2022-02-27T13:29:25 点赞:0

请问怎么做到这个效果:【y】【玩家飞行】【特定范围】 中回复

tick触发器循环检测

2022-02-27T13:29:52 点赞:0

岛三首页bug,希望官方改一下 中回复

未来人,会预言,刀了刀了(滑稽

2022-02-27T13:30:29 点赞:0

【编程猫消息通知器】MacOs版编程猫消息通知器来啦! 中回复

好啊好啊

2022-02-28T09:09:50 点赞:0

【神岛大新闻】《编程猫博物馆》流动招租摊位开业! 中回复

太好了

2022-03-01T12:37:59 点赞:0

【神岛大新闻】《编程猫博物馆》流动招租摊位开业! 中回复

太好了

2022-03-01T12:42:27 点赞:0

【神岛大新闻】《编程猫博物馆》流动招租摊位开业! 中回复

太好了

2022-03-01T12:43:13 点赞:0

【神岛大新闻】《编程猫博物馆》流动招租摊位开业! 中回复

太好了

2022-03-01T12:43:58 点赞:0

【岛三教程】如何制作猛鬼宿舍的2D视角?代码公开 中回复

解释一下

2022-03-01T14:48:21 点赞:0

【教程】如何将自己在k3上的作品在Linux上制作成独立应用程序 中回复

nodejs打钱

2022-03-02T07:57:20 点赞:0

谁能打出这个!不准复制 中回复

☛☚

中间藏了一个东西,删掉就是了

2022-03-02T07:58:19 点赞:0

@魔术喵 @技术喵 关于协作,我想说 中回复

岛三是自由开放的,且有一定挑战性

2022-03-03T10:00:24 点赞:0

【C++基础算法】深度优先搜索(Depth First Search,DFS) 中回复

来个流程图

2022-03-16T07:51:16 点赞:1

【代码岛三】重写EventEmitter 中回复

将Entity的事件也注册好了,附赠一个写好的事件控制器和一个使用示例

// Events
class EventEmitter {
    constructor() {
        this.listeners = {};
        this.onceListeners = {};
    }
    addListener(eventName, callback) {
        if (!this.listeners[eventName]) {
            this.listeners[eventName] = [];
        };
        this.listeners[eventName].push(callback);
    };

    emit(eventName, ...args) {
        if (this.listeners[eventName]) {
            this.listeners[eventName].forEach(callBack => {
                callBack(...args);
            });
        };
        if (this.onceListeners[eventName]) {
            this.onceListeners[eventName].forEach((callBack, k) => {
                callBack(...args);
                delete this.onceListeners[eventName][k];
            });
        };
    };

    on(eventName, callback) {
        this.addListener(eventName, callback);
    };

    once(eventName, callback) {
        if (!this.onceListeners[eventName]) {
            this.onceListeners[eventName] = [];
        };
        this.onceListeners[eventName].push(callback);
    }

    off(eventName, callback) {
        if (this.listeners[eventName]) {
            const targetIndex = this.listeners[eventName].findIndex(item => item === callback);
            if (targetIndex !== -1) {
                this.listeners[eventName].splice(targetIndex, 1);
            };
            if (this.listeners[eventName].length === 0) {
                delete this.listeners[eventName];
            };
        };
    };

    offAll(eventName) {
        if (this.listeners[eventName]) {
            delete this.listeners[eventName];
        };
    };

}

class EventManager {
    constructor() {
        this.worldEvent = new EventEmitter();
        this.entityEvent = new EventEmitter();
        this.tick = 0;
        this.prevTick = 0;
        this.skip = false;
        this.elapsedTimeMS = 1 / 喵;

    }
    registerWorldEvent() {
        world.onPlayerJoin(event => {
            this.worldEvent.emit("onPlayerJoin", event);
        });
        world.onPlayerLeave(event => {
            this.worldEvent.emit("onPlayerLeave", event);
        });
        world.onChat(event => {
            this.worldEvent.emit("onChat", event);
        });
        world.onInteract(event => {
            this.worldEvent.emit("onInteract", event);
        });
        world.onPress(event => {
            this.worldEvent.emit("onPress", event);
        });
        world.onClick(event => {
            this.worldEvent.emit("onClick", event);
        });
        world.onRelease(event => {
            this.worldEvent.emit("onRelease", event);
        });
        world.onEntityCreate(event => {
            this.worldEvent.emit("onEntityCreate", event);
        });
        world.onEntityContact(event => {
            this.worldEvent.emit("onEntityContact", event);
        });
        world.onEntityDestroy(event => {
            this.worldEvent.emit("onEntityDestroy", event);
        });
        world.onEntitySeparate(event => {
            this.worldEvent.emit("onEntitySeparate", event);
        });
        world.onDie(event => {
            this.worldEvent.emit("onDie", event);
        });
        world.onRespawn(event => {
            this.worldEvent.emit("onRespawn", event);
        });
        setInterval(() => {
            this.tick += 1;
            this.worldEvent.emit("onTick", new Box3TickEvent(this.tick, this.prevTick, this.skip, this.elapsedTimeMS));
            this.prevTick += 1;
        }, 1 / 喵);
    }
    registerEntityEvent(entity) {
        entity.onClick(event => {
            this.entityEvent.emit("onClick", entity, event);
        });
        entity.onDestroy(event => {
            this.entityEvent.emit("onDestroy", entity, event);
        });
        entity.onDie(event => {
            this.entityEvent.emit("onDie", entity, event);
        });
        entity.onEntityContact(event => {
            this.entityEvent.emit("onEntityContact", entity, event);
        });
        entity.onEntitySeparate(event => {
            this.entityEvent.emit("onEntitySeparate", entity, event);
        });
        entity.onVoxelContact(event => {
            this.entityEvent.emit("onVoxelContact", entity, event);
        });
        entity.onVoxelSeparate(event => {
            this.entityEvent.emit("onVoxelSeparate", entity, event);
        });
        entity.onFluidEnter(event => {
            this.entityEvent.emit("onFluidEnter", entity, event);
        });
        entity.onFluidLeave(event => {
            this.entityEvent.emit("onFluidLeave", entity, event);
        });
    }
}
class WorldEventController extends EventManager {
    static instance;
    static GetInstance() {
        if (!this.instance) this.instance = new WorldEventController();
        return this.instance;
    }

    constructor() { 
        super();
        this.registerWorldEvent();
    }
}
class EntityEventController extends EventManager {
    constructor(entity) {
        super();
        this.registerEntityEvent(entity);
    }
}

// 示例
const worldEventController = WorldEventController.GetInstance();
worldEventController.worldEvent.on("onEntityCreate",({entity})=>{
    entity.eventManager = new EntityEventController(entity);
})

2022-03-16T08:27:50 点赞:0

教程师计划第二期:阿吉在召唤! 中回复

视频啥时候出?

2022-03-16T14:19:42 点赞:0

[喵][使用Coco制作]清风云盘—一款免费不限速超大容量的网盘 中回复

呵呵,bcm会感谢你的(bushi

2022-03-18T19:07:31 点赞:0

coco咋做24点 中回复

主要是算法

2022-03-18T19:15:07 点赞:0

各大平台备案奇观 中回复

腾讯云的太真实,还有

腾讯云:购买成功

我:!

腾讯云:未满18岁无法备案

我:!

2022-03-20T09:34:41 点赞:0

[难起の建筑小课堂] 第一期 多功能房 中回复

yee

2022-03-20T14:44:48 点赞:1

【探秘】让我们跟随第一批体验官们,探秘猫厂吧! 中回复

《关于pickcat要公布这件事》

2022-03-21T14:36:54 点赞:0

看个好玩的 中回复

就这

2022-03-21T14:37:31 点赞:0

【代码岛3.0IDLE制作】 中回复

代码优化:判断管理员可以这样

// 定义管理员列表
var admin = ['ray_crazy']
// 检测是否是管理员
admin.includes('ray_crazy') // true
admin.includes('az') // false

2022-03-25T17:46:34 点赞:0

【box3】将退,发放福利-公海核心代码全公开 中回复

版本控制中显示着hash码,通过这个码顺藤摸瓜可以也找到

2022-03-25T20:57:14 点赞:0