kotcrab / vis-ui Goto Github PK
View Code? Open in Web Editor NEWlibGDX UI toolkit
License: Apache License 2.0
libGDX UI toolkit
License: Apache License 2.0
To allows easily scale/rotate/move objects. Don't forget about snapping when holding shift/ctrl. Snap values should be configurable.
Progress:
If you either remove shader.vert (what you normally shouldn't do) or paste shader.vert (into assets\shader) it crashes, because it tries to access shader.frag, without checking if shader.frag exists.
com.badlogic.gdx.utils.GdxRuntimeException: Error reading file: C:\Users\Simon\Downloads\visTest\vis\assets\shader\font (2).frag (Absolute)
at com.badlogic.gdx.files.FileHandle.read(FileHandle.java:144)
at com.badlogic.gdx.files.FileHandle.readString(FileHandle.java:202)
at com.badlogic.gdx.files.FileHandle.readString(FileHandle.java:191)
at com.badlogic.gdx.graphics.glutils.ShaderProgram.<init>(ShaderProgram.java:165)
at com.kotcrab.vis.editor.module.project.ShaderCacheModule.reloadShaders(ShaderCacheModule.java:101)
at com.kotcrab.vis.editor.module.project.ShaderCacheModule.access$1(ShaderCacheModule.java:60)
at com.kotcrab.vis.editor.module.project.ShaderCacheModule$ReloadShaderTask.run(ShaderCacheModule.java:135)
at com.badlogic.gdx.backends.lwjgl.LwjglCanvas.executeRunnables(LwjglCanvas.java:261)
at com.badlogic.gdx.backends.lwjgl.LwjglCanvas$3.run(LwjglCanvas.java:227)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:311)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:749)
at java.awt.EventQueue.access$500(EventQueue.java:97)
at java.awt.EventQueue$3.run(EventQueue.java:702)
at java.awt.EventQueue$3.run(EventQueue.java:696)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:75)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:719)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)
Caused by: java.io.FileNotFoundException: C:\Users\Simon\Downloads\visTest\vis\assets\shader\font (2).frag (The system cannot find the file specified)
at java.io.FileInputStream.open(Native Method)
at java.io.FileInputStream.<init>(FileInputStream.java:138)
at com.badlogic.gdx.files.FileHandle.read(FileHandle.java:140)
... 22 more
Editor crashs at the time when the 'Open Plugin Folder' button has been clicked in Settings dialog.
I got this error message with stacktrace:
java.lang.IllegalArgumentException: The file: home/stquote/Downloads/VisUIEditor doesn't exist.
at java.awt.Desktop.checkFileValidation(Desktop.java:210)
at java.awt.Desktop.open(Desktop.java:270)
at com.kotcrab.vis.editor.util.FileUtils.browse(FileUtils.java:74)
at com.kotcrab.vis.editor.module.editor.PluginLoaderModule$PluginSettingsModule.lambda$buildTable$163(PluginLoaderModule.java:235)
at com.kotcrab.vis.editor.module.editor.PluginLoaderModule$PluginSettingsModule$$Lambda$55/1845515247.changed(Unknown Source)
at com.kotcrab.vis.editor.util.gdx.VisChangeListener.changed(VisChangeListener.java:35)
at com.badlogic.gdx.scenes.scene2d.utils.ChangeListener.handle(ChangeListener.java:28)
at com.badlogic.gdx.scenes.scene2d.Actor.notify(Actor.java:181)
at com.badlogic.gdx.scenes.scene2d.Actor.fire(Actor.java:146)
at com.badlogic.gdx.scenes.scene2d.ui.Button.setChecked(Button.java:123)
at com.badlogic.gdx.scenes.scene2d.ui.Button$1.clicked(Button.java:91)
at com.badlogic.gdx.scenes.scene2d.utils.ClickListener.touchUp(ClickListener.java:89)
at com.badlogic.gdx.scenes.scene2d.InputListener.handle(InputListener.java:58)
at com.badlogic.gdx.scenes.scene2d.Stage.touchUp(Stage.java:348)
at com.badlogic.gdx.backends.lwjgl.LwjglInput.processEvents(LwjglInput.java:306)
at com.badlogic.gdx.backends.lwjgl.LwjglCanvas$3.run(LwjglCanvas.java:234)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:311)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:756)
at java.awt.EventQueue.access$500(EventQueue.java:97)
at java.awt.EventQueue$3.run(EventQueue.java:709)
at java.awt.EventQueue$3.run(EventQueue.java:703)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:75)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:726)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)
[22:51][Fatal] java.lang.RuntimeException: No OpenGL context found in the current thread.
at org.lwjgl.opengl.GLContext.getCapabilities(GLContext.java:124)
at org.lwjgl.opengl.GL11.glDeleteTextures(GL11.java:732)
at com.badlogic.gdx.backends.lwjgl.LwjglGL20.glDeleteTexture(LwjglGL20.java:248)
at com.badlogic.gdx.graphics.GLTexture.delete(GLTexture.java:170)
at com.badlogic.gdx.graphics.Texture.dispose(Texture.java:194)
at com.kotcrab.vis.ui.widget.color.ColorPicker.dispose(ColorPicker.java:468)
at com.kotcrab.vis.editor.module.editor.ColorPickerModule.dispose(ColorPickerModule.java:35)
at com.kotcrab.vis.editor.module.ModuleContainer.dispose(ModuleContainer.java:191)
at com.kotcrab.vis.editor.Editor.dispose(Editor.java:250)
at com.badlogic.gdx.backends.lwjgl.LwjglCanvas$4.run(LwjglCanvas.java:309)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:311)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:756)
at java.awt.EventQueue.access$500(EventQueue.java:97)
at java.awt.EventQueue$3.run(EventQueue.java:709)
at java.awt.EventQueue$3.run(EventQueue.java:703)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:75)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:726)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)
In my case I have a path to plugins folder ''/home/lalala/vis/viseditor/Editor/target/plugins/", but in PluginLoaderModule
class at this line used PLUGINS_FOLDER_PATH
constant with "home/lalala/vis/viseditor/Editor/target/plugins/" value which which has not start with slash symbol.
It seems like a typo in JarUtils.java because PluginLoaderModule
class uses this util method for initialize constant. I think substring method should have 0 in first argument. Like this: path = path.substring(0, path.lastIndexOf('/'));
I'm using Linux Mint, but I think this is not working in windows too.
So if I'm right, and all agree with me, I can make pull request for this :)
Please add Vis Open Sans to this repository, so that everybody can add additional characters to their font.
Are there any current plans to add a button to allow a user to create a directory while using the filechooser?
It's nice to be able to make a directory then specify to save a file inside of it.
General list of things needs to be done:
Hi, in VisEditor 2.6.0_SNAPSHOT 10-Nov-2015 tint color of TextEntity, that was set and saved in prev session , not apply after start new session. But if you change some parameter of TextEntity (for example scale), then saved tint color apply.
I am unable to use latest versions of VisUI,
always getting error:
Could not resolve all dependencies for configuration ':compile'.
Could not resolve com.kotcrab.vis:vis-ui:0.7.4-SNAPSHOT.
Required by:
Could not parse POM https://oss.sonatype.org/content/repositories/snapshots/com/kotcrab/vis/vis-ui/0.7.4-SNAPSHOT/vis-ui-0.7.4-20150427.154831-2.pom
> Could not find com.kotcrab.vis:vis-parent:0.0.2-SNAPSHOT.
And it seems others experienced similar issue.
is 0.0.2-SNAPSHOT in some other repo?
Currently getting reflection error unless I add the following to my robovm.xml file.
<forceLinkClasses>
<pattern>com.kotcrab.vis.ui.widget.**</pattern>
</forceLinkClasses>
Could you add this to the read me? On IRC it's suggested that an included robovm.xml file in the project would get merged, so people wouldn't even need to add this.
Hi,
There is no way to make a text field stop editing, thus making it stop capturing all key events.
I've set all of my text fields to use a custom input processor, tried overriding keyUp, keyDown, and keyTyped so that I can return false on these, used FocusManager.getFocus() and FocusManager.getFocus(anotherWidget) {seems losing focus doesn't stop it from receiving key events}.
I use an InputMultiplexer and have my Scene2d/VisUI stuff as the 1st entry, otherwise, my main canvas gets all the events before the HUD/ GUI overlay; but when it's set this way, and a text field was focused, it will capture all key events from that point on.
Thanks.
As you can see here, the tabsPanel is added to the left, not the top left. Which makes the following result: http://imgur.com/flZxA94.
HI, i'm trying to use the TabbedPane im my project but it's not working as i expected.
The code is:
VisUI.load();
TabbedPane tabbedPane = new TabbedPane();
tabbedPane.getTable().setPosition(100, 100);
tabbedPane.getTable().setWidth(500);
tabbedPane.getTable().setHeight(300);
tabbedPane.getTable().setDebug(true, true);
Tab defaultTab = new Tab(false, false) {
@Override
public String getTabTitle() {
return "Default";
}
@Override
public Table getContentTable() {
VisTable chatLayoutTable = new VisTable(true);
//chatLayoutTable.setHeight(200);
//chatLayoutTable.setWidth(300);
chatLayoutTable.setFillParent(true);
chatLayoutTable.add(new VisLabel("Default")).expandX().fillX();
return chatLayoutTable;
}
};
tabbedPane.add(defaultTab);
Tab globalTab = new Tab(false, true) {
@Override
public String getTabTitle() {
return "Global";
}
@Override
public Table getContentTable() {
VisTable chatLayoutTable = new VisTable(true);
//chatLayoutTable.setHeight(200);
//chatLayoutTable.setWidth(300);
chatLayoutTable.setFillParent(true);
chatLayoutTable.add(new VisLabel("Global")).expandX().fillX();
return chatLayoutTable;
}
};
tabbedPane.add(globalTab);
stage.addActor(tabbedPane.getTable());
The problem is that I can't see the content of the Tabs, as you can see in the image above:
What am I doing wrong?
Thanks.
I can't position PopupMenu with setPosition(x, y, Align.topLeft) to make its top left corner be at (x,y). Maybe that's not the right way to do it but what is the right one? Wiki doesn't mention it.
Like the title says, when the file chooser is in the OPEN mode, then it does not listen to the FileFilter, while it does, when it is in SAVE mode. I'm not sure if this is supposed to be a feature, but it feels like a bug to me.
I tested the tool and wanted to use it for a non libgdx project. Unfortunately it does not output in JSON but some weird json like format where the keys and string values are not quoted. Is it possible to output in real JSON?
There are some magic numbers like https://github.com/kotcrab/VisEditor/blob/master/Editor/src/com/kotcrab/vis/editor/module/project/TextureCacheModule.java#L141 and https://github.com/kotcrab/VisEditor/blob/master/Editor/src/com/kotcrab/vis/editor/module/project/TextureCacheModule.java#L245 and https://github.com/kotcrab/VisEditor/blob/master/Runtime/src/com/kotcrab/vis/runtime/system/inflater/SpriteInflater.java#L74
They prevent that jpeg icons are properly shown.
EDIT: Just saw the roadmap of 0.3.0 for Artemis-odb 1.0.1, I guess this issue posted will no longer an issue soon...
When using with Artemis-odb 0.13.1, VisAssetManager.loadSceneNow() works fine.
However, after using with Artemis-odb 1.1.1, VisAssetManager.loadSceneNow() throws error:
AssetManager: Error loading asset.
com.badlogic.gdx.utils.GdxRuntimeException: Couldn't load asset: scene/main.scene
at com.badlogic.gdx.assets.AssetLoadingTask.handleAsyncLoader(AssetLoadingTask.java:137)
at com.badlogic.gdx.assets.AssetLoadingTask.update(AssetLoadingTask.java:89)
at com.badlogic.gdx.assets.AssetManager.updateTask(AssetManager.java:479)
at com.badlogic.gdx.assets.AssetManager.update(AssetManager.java:354)
at com.badlogic.gdx.assets.AssetManager.finishLoading(AssetManager.java:377)
at com.kotcrab.vis.runtime.scene.VisAssetManager.loadSceneNow(VisAssetManager.java:81)
at com.kotcrab.vis.runtime.scene.VisAssetManager.loadSceneNow(VisAssetManager.java:76)
at com.viseditortest.VisETest.create(VisETest.java:30)
at com.badlogic.gdx.backends.lwjgl.LwjglApplication.mainLoop(LwjglApplication.java:143)
at com.badlogic.gdx.backends.lwjgl.LwjglApplication$1.run(LwjglApplication.java:120)
Caused by: com.badlogic.gdx.utils.GdxRuntimeException: java.lang.VerifyError: class com.kotcrab.vis.runtime.system.delegate.DeferredEntityProcessingSystem overrides final method inserted.(I)V
at com.badlogic.gdx.utils.async.AsyncResult.get(AsyncResult.java:46)
at com.badlogic.gdx.assets.AssetLoadingTask.handleAsyncLoader(AssetLoadingTask.java:135)
... 9 more
Caused by: java.lang.VerifyError: class com.kotcrab.vis.runtime.system.delegate.DeferredEntityProcessingSystem overrides final method inserted.(I)V
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:760)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:467)
at java.net.URLClassLoader.access$100(URLClassLoader.java:73)
at java.net.URLClassLoader$1.run(URLClassLoader.java:368)
at java.net.URLClassLoader$1.run(URLClassLoader.java:362)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:361)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:760)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:467)
at java.net.URLClassLoader.access$100(URLClassLoader.java:73)
at java.net.URLClassLoader$1.run(URLClassLoader.java:368)
at java.net.URLClassLoader$1.run(URLClassLoader.java:362)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:361)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
at com.kotcrab.vis.runtime.scene.SceneLoader.loadAsync(SceneLoader.java:205)
at com.kotcrab.vis.runtime.scene.SceneLoader.loadAsync(SceneLoader.java:57)
at com.badlogic.gdx.assets.AssetLoadingTask.call(AssetLoadingTask.java:73)
at com.badlogic.gdx.assets.AssetLoadingTask.call(AssetLoadingTask.java:34)
at com.badlogic.gdx.utils.async.AsyncExecutor$2.call(AsyncExecutor.java:58)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
Exception in thread "LWJGL Application" com.badlogic.gdx.utils.GdxRuntimeException: Asset not loaded: gfx/textures.atlas
at com.badlogic.gdx.assets.AssetManager.unload(AssetManager.java:182)
at com.badlogic.gdx.assets.AssetManager.handleTaskError(AssetManager.java:540)
at com.badlogic.gdx.assets.AssetManager.update(AssetManager.java:356)
at com.badlogic.gdx.assets.AssetManager.finishLoading(AssetManager.java:377)
at com.kotcrab.vis.runtime.scene.VisAssetManager.loadSceneNow(VisAssetManager.java:81)
at com.kotcrab.vis.runtime.scene.VisAssetManager.loadSceneNow(VisAssetManager.java:76)
at com.viseditortest.VisETest.create(VisETest.java:30)
at com.badlogic.gdx.backends.lwjgl.LwjglApplication.mainLoop(LwjglApplication.java:143)
at com.badlogic.gdx.backends.lwjgl.LwjglApplication$1.run(LwjglApplication.java:120)
Can't change set ZIndex of TextEntity in VisEditor. It is always 0.
Hello, honestly I don't know if this is the right place to post this but I didnt find a better place, here are some very little ideas you could try add to the editor, none is really important in any but it may improve the editor experience:
*Drag the mouse + shortcut to rotate/scale on the go;
*Add another shortcut to do rotate/scale by steps (eg. rotate by steps of 45°, scale by steps of 0.2 etc);
*Make some primitive entities (square/circle/path) that are not graphical but have a logical meaning in the game (eg. path that an enemy will follow, an area where you enters and make's something move/fall/sound/open another thing or any other logical meaning you can find..)
*Could load a physical shape from an existing shape descriptor like a json file, eg. a json file generated by another associated physics editor ( like this simple and good Physics body editor that saves the shape in a json format, ideally make the physic editor open inside visEditor/ integrate a similar technology to auto trace shape;
That's all I have for now! Have a good day and keep working on that great and promising editor!
P.S: while i'm in the issue tracker, the editor crashes when you try to put a physical properties component.
If I use the filechooser I can only see allowed files (those that the file filter returns true for), but I also cannot see any directories.
This is what one of my FileFilters looks like:
fileChooser.setFileFilter(new FileFilter() {
@Override
public boolean accept (File pathname) {
return pathname.getPath().endsWith(".rbm") || pathname.isDirectory();
}
});
I thought at first that they weren't showing because my file filter did not return true for directories, but I changed it (as you can see) and they still won't show up.
The file chooser's selection mode is files, but even if I change it to files and folders I still cannot see any folders.
Manually registering and deregistering from EventBus
is no longer required, modules that do that should use @EventBusSubscriber
annotation.
Hi, in VisEditor 2.6.0_SNAPSHOT 10-Nov-2015 very difficult set float scale for TextEntity. You can't just write float number. First you must write int number, then move cursor to start of number, then write point and only after this you get float scale.
There are a few errors with the current NumberSelector, or I'm using it wrong =). The main problem is that when you have a minimum value greater then 1, you can not remove the complete value and fill in the wanted value, e.g. if the minimum value is 5 and i want to pick a value of 10, removing the 5 and then typing 1 results in a 5 because 1 is not a valid input.
Another problem i came across is that on my android phone if I pick a number with a virtual keyboard that number gets repeated as if the timer for the up/down button gets fired for the number I picked.
Also is there any support for a form validator with a NumberSelector in it?
Looks like this is a libGDX texture packer limitation, if you have *.png
and *.jpg
in one directory VisEditor (and TexturePacker) can't tell difference between them because extensions is not stored in atlas. I think the only solution is to add warning when user has two files in one directory.
(discovered by @intrigus)
Tracing code is already there, needs GUI dialog.
I'm still investigating this issue, but sometimes, when I open my map editor my app hangs and sometimes even crashes. I put in checks to determine the source and I do believe it is the FileChooser. This is the output of my bug checking:
before instantiate 1432502164225
before file chooser 1432502164236
after file chooser 1432502182050
before editor 1432502182050
after editor 1432502182096
after instantiate 1432502182096
The numbers are produced by TimeUtils.millis()
and as you can see, there is a considerable hang between the check before and after the creation of the file chooser (a whole 17 seconds!). This is the code that is between those time checks:
FileChooser.setFavoritesPrefsName("com.strongjoshua.reverseblade.mapmaker.favourites");
fileChooser = new FileChooser(Mode.OPEN);
fileChooser.setDirectory("D:/XXX/LibGdx/ReverseBlade/android/assets/maps");
fileChooser.setMultiselectionEnabled(false);
fileChooser.setSelectionMode(SelectionMode.FILES);
Is there something there I should change to speed up the process, or is this a fault of the FileChooser?
I say occasionally because this will happen once (generally when I first open Eclipse) and then not again, which makes this even more strange.
Thanks again for #40, it's working great.
I'm sorry for being greedy, but would it be possible to add another feature where, if a color is selected on the palette (or through the other means) it gets automatically set? I go back to the palette a lot and this small convenience will cut down on button clicks i.e. Ok, to set the color.
Thank you.
As the title states, it'd be great to have a button to apply the color, without closing the color picker. My use case is, in the application's edit / stage building mode, I switch between drawing tools, and use the color picker to set their active drawing color. It would save a lot of time, and be more convenient overall, if the color picker was kept open, instead of having to open it up each time one needs to change the color.
Thanks!
Position
component. Update:
com.kotcrab.vis.editor.module.scene
util
package.Dropped:
Position
component will be created.0.3.0 will be developed in separate branch, critical issues in 0.2.5 will be still fixed.
If you have any ideas or suggestions, please share it here or start a discussion on our forums.
Back in the issue #58 , the problem of sprites rendered without angles, after the fix now it's the polygon component that are no longer set with a correct angle
I get java.lang.IllegalStateException: More than one tooltip cannot be added to the same target!
when I'm using this code inside button ChangeListener:
Tooltip.removeTooltip(pauseResumeButton);
new Tooltip(pauseResumeButton, "Resume (P)");
Just a minor annoyance:
Now, if the escape key is pressed, the modal window closes first, and the FileChooser window stays open. On the second key press the FileChooser window closes.
I'd expect the FileChooser window closing first.
Undo 40ef2fe after junkdog/artemis-odb#347 is fixed.
On visEditor when saving a scene, the position of Point entities is always saved as (0,0).
Feature request: http://forum.kotcrab.com/d/25-textured-polygon
the title said it all, when you export a scene the whole assets folder of your project is replaced by a new one containing only visEditor elements, so if you don't have a backup you lose all your project assets..
I receive an Exception when running my project with 0.9.2-SNAPSHOT:
Exception in thread "LWJGL Application" com.badlogic.gdx.utils.SerializationException: Error reading file: com/kotcrab/vis/ui/skin/x1/uiskin.json
at com.badlogic.gdx.scenes.scene2d.ui.Skin.load(Skin.java:97)
at com.badlogic.gdx.scenes.scene2d.ui.Skin.(Skin.java:74)
at com.kotcrab.vis.ui.VisUI.load(VisUI.java:90)
at com.kotcrab.vis.ui.VisUI.load(VisUI.java:84)
at com.kotcrab.vis.ui.VisUI.load(VisUI.java:77)
at com.itc.mn.GUI.FrontEnd.(FrontEnd.java:114)
at com.itc.mn.Pantallas.Pantalla.(Pantalla.java:39)
at com.itc.mn.Pantallas.RenderScreen.(RenderScreen.java:100)
at com.itc.mn.Pantallas.SplashScreen.(SplashScreen.java:29)
at com.itc.mn.MainGame.create(MainGame.java:15)
at com.badlogic.gdx.backends.lwjgl.LwjglApplication.mainLoop(LwjglApplication.java:143)
at com.badlogic.gdx.backends.lwjgl.LwjglApplication$1.run(LwjglApplication.java:120)
Caused by: com.badlogic.gdx.utils.SerializationException: Error reading file: com/kotcrab/vis/ui/skin/x1/uiskin.json
at com.badlogic.gdx.utils.Json.fromJson(Json.java:683)
at com.badlogic.gdx.scenes.scene2d.ui.Skin.load(Skin.java:95)
... 11 more
Caused by: com.badlogic.gdx.utils.SerializationException: Field not found: knobOver (com.badlogic.gdx.scenes.scene2d.ui.Slider$SliderStyle)
at com.badlogic.gdx.utils.Json.readFields(Json.java:776)
at com.badlogic.gdx.utils.Json.readValue(Json.java:902)
at com.badlogic.gdx.scenes.scene2d.ui.Skin$1.readValue(Skin.java:404)
at com.badlogic.gdx.utils.Json.readValue(Json.java:834)
at com.badlogic.gdx.scenes.scene2d.ui.Skin$2.readNamedObjects(Skin.java:425)
at com.badlogic.gdx.scenes.scene2d.ui.Skin$2.read(Skin.java:414)
at com.badlogic.gdx.scenes.scene2d.ui.Skin$2.read(Skin.java:410)
at com.badlogic.gdx.utils.Json.readValue(Json.java:867)
at com.badlogic.gdx.scenes.scene2d.ui.Skin$1.readValue(Skin.java:404)
at com.badlogic.gdx.utils.Json.fromJson(Json.java:681)
... 12 more
If I run it with 0.9.1 it works just fine, but I need the 0.9.2-SNAPSHOT because of the font kerning issues (I'm the guy who posted in kotcrab forums about Me with tildes)
Github proyect (nchuck/MN)
This is the error I get when trying to launch my game from a runnable .jar file:
Exception in thread "LWJGL Application" com.badlogic.gdx.utils.SerializationExce
ption: Error reading file: com/kotcrab/vis/ui/uiskin.json
at com.badlogic.gdx.scenes.scene2d.ui.Skin.load(Skin.java:97)
at com.badlogic.gdx.scenes.scene2d.ui.Skin.<init>(Skin.java:74)
at com.kotcrab.vis.ui.VisUI.load(VisUI.java:55)
at com.kotcrab.vis.ui.VisUI.load(VisUI.java:50)
at com.strongjoshua.reverseblade.ReverseBlade.create(ReverseBlade.java:2
8)
at com.badlogic.gdx.backends.lwjgl.LwjglApplication.mainLoop(LwjglApplic
ation.java:143)
at com.badlogic.gdx.backends.lwjgl.LwjglApplication$1.run(LwjglApplicati
on.java:120)
Caused by: com.badlogic.gdx.utils.SerializationException: Error reading file: co
m/kotcrab/vis/ui/uiskin.json
at com.badlogic.gdx.utils.Json.fromJson(Json.java:683)
at com.badlogic.gdx.scenes.scene2d.ui.Skin.load(Skin.java:95)
... 6 more
Caused by: com.badlogic.gdx.utils.SerializationException: Error parsing file: co
m/kotcrab/vis/ui/uiskin.json
at com.badlogic.gdx.utils.JsonReader.parse(JsonReader.java:77)
at com.badlogic.gdx.utils.Json.fromJson(Json.java:681)
... 7 more
Caused by: com.badlogic.gdx.utils.GdxRuntimeException: File not found: com\kotcr
ab\vis\ui\uiskin.json (Classpath)
at com.badlogic.gdx.files.FileHandle.read(FileHandle.java:137)
at com.badlogic.gdx.files.FileHandle.reader(FileHandle.java:164)
at com.badlogic.gdx.utils.JsonReader.parse(JsonReader.java:75)
... 8 more
That line is when I call: VisUI.load();
I have had this happen with my own LibGdx addon.
The only way I was able to prevent my plugin from erroring was to load the skin that it uses from my game itself, rather than the dependency's project. Maybe you have more insight into how to fix this.
Some ideas for [optional] convenience functions:
I have two input processors: Scene2d Stage and my own input processor registered respectively. The problem is, when I type something in VisTextField, my own input processor fires keyDown too which is unwanted behaviour.
@SkipInject
annotation@InjectModule
sTo prevent editor crashes.
Also see: http://forum.kotcrab.com/d/24-can-t-drag-particle/3
I can't see any reasons why NumberSelector works only with integers. For things like time scale I need float values so I would like NumberSelector to work with floats too. Or as an alternative it could be divided in two classes: IntNumberSelector and FloatNumberSelector. Only one more constructor parameter is needed: number of digits after decimal point.
First mentioned in #7
Caused by keyTypedRepeatTask
in VisTextField
used to repat keys faster than keyTyped(...)
On desktop keyTyped
is called first then keyUp
but on android keyUp
is called first, then keyTyped
. The task is canceled on keyUp
thus on Android task is canceled too early and key is repeated forever.
Feature request: http://forum.kotcrab.com/d/5-9-patch-images-support
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.