dingjibang/GDX-RPG

GdxQuery.action() 修改

Opened this issue · 1 comments

GdxQuery.action()中你貌似把同一个action对象添加给了多个actor, 我觉得可以改成

	public interface ActionFactory{
		public Action create();
	}
	public GdxQuery action(ActionFactory... action){
		for(Actor actor:list())
			for (ActionFactory act : action)
				actor.addAction(act.create());
		return this;
	}

😭妹想到8年前写的一个东西还有人用.jpg

libgdx我都忘了差不多了😭没记错的话action会绑定一个actor,所以这里多个actor公用一个action确实会出bug,翻了下gdx-query单独仓库的代码,这里我之前确实标记了todo fix了,没记错的话我用的时候会特意的只让query里只有一个act的情况下使用,算是懒得解决bug避开去用了😭

解决的话你提供的create是可以的,让用户自己传入创建的方法,或者也可以建个action代理类,代理用户传入的action的行为,让query里每个actor都add这个代理action,而代理action的act方法就是代理用户传过来的action的逻辑,里面可能也会有暗坑比如中间状态的处理之类的,不过做出来的话应该用起来还是很爽的(很gdx-query的风格),是个可以钻研的路子🤣

GDX-query其实是类似曾经web前端的jQuery,都是为了简化而生的,不过这玩意也和jQuery一样被淘汰了,不知道现在libGDX创建UI是否更方便了😭之前最后期的时候想考虑用类似html+css+js的方式去写页面,不过做出个大概就弃坑了🤣

目前按前端来看,虚拟DOM(比如React、Vue)和双向绑定(比如Vue的proxy、ref)是很吃香的,可以实打实提升写蜡鸡UI时候的速度,如果能将类似Vue的生态搬到libGDX里,比如游戏里的某个状态或者数值改变,不需要开发者维护并且更新UI而是自动更新,还是很有搞头的🤣