Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

GdxQuery.action() 修改 #30

Open
LiJiayuan733 opened this issue Aug 29, 2023 · 1 comment
Open

GdxQuery.action() 修改 #30

LiJiayuan733 opened this issue Aug 29, 2023 · 1 comment

Comments

@LiJiayuan733
Copy link

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;
	}
@dingjibang
Copy link
Owner

😭妹想到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而是自动更新,还是很有搞头的🤣

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants