魔方吧·中文魔方俱乐部
标题:
尝试复活论坛魔方java( applet)(Java2Script路线放弃)
[打印本页]
作者:
怀表
时间:
2022-2-24 13:50:05
标题:
尝试复活论坛魔方java( applet)(Java2Script路线放弃)
本帖最后由 怀表 于 2022-5-13 13:48 编辑
2022-3-7 12:43:44 上传
下载附件
(177.12 KB)
正四面体切割群正方体(888-666-999)
Java2Script是一个transpiler,提供java到javascript翻译功能,据说已经接近完全实现 "Java Virtual Machine with AWT and Swing in JavaScript"。也就是说,如果代码满足一定的要求,同一份代码既可以编译成jvm字节码,也可以转换成javascript在不允许运行java applet的浏览器运行(关于java2script的限制,请看链接2)
2022-2-27 00:44:47 上传
下载附件
(67.18 KB)
我拿Jaap Scherphuis开发的Cubie试了一下,好像可以。转动没问题,但是只能求解耗时不长的状态,因为持续执行太久会导致页面无响应。javascript不使用worker,长时间计算就会这样,没办法。(源码在链接4)
我把输出的文件和SwingJs打包到一起了,见链接5。(需要启动一个http服务器,直接通过file URL打开是不能运行的)
解压出来有三十多MB,但是实际上不会加载这么多,SwingJs是按需加载的。
我又下载了十二轴正方体变形魔方Java助手,尝试转换。结果发现有用到Thread.wait() Thread.notify() Thread.sleep() ,需要修改代码。README里说可以用javax.Swing.Timer改写,我正在想…… run()方法看起来很复杂。
链接
1、
https://github.com/java2script/java2script
2、
https://github.com/BobHanson/java2script/blob/master/sources/net.sf.j2s.core/dist/swingjs/differences.txt
3、
https://www.jaapsch.net/puzzles/
4、
https://www.jaapsch.net/puzzles/java/cubie/cubiesrc.zip
Written by Jaap Scherphuis
© 2003, 2004, 2018.
The program may be freely used or adapted for use on any other website provided that the copyright message remains intact and a link is included to Jaap's Puzzle Page. The program may not be sold.
5、
https://disk.yandex.ru/d/SAggGAn7kehYww
6、
https://github.com/java2script/java2script/blob/master/sources/net.sf.j2s.java.core/dist/SwingJS-site.zip
7、
https://github.com/java2script/java2script/blob/master/sources/net.sf.j2s.core/dist/swingjs/net.sf.j2s.core-j11.jar
Eclipse插件,要放到Eclipse的dropins目录。
8、
https://github.com/java2script/java2script/blob/master/sources/net.sf.j2s.core/dist/swingjs/net.sf.j2s.core.jar
Eclipse插件
9、
https://github.com/java2script/java2script/tree/master/sources/net.sf.j2s.core/dist
附件:
Cubie-fs8.png
(2022-2-27 00:44:47, 67.18 KB) / 下载次数 79
http://bbs.mf8-china.com/forum.php?mod=attachment&aid=Mjc2NTA4fDQ0YjE5ODU3fDE3MzIyMTg0Mjl8MHww
附件: [正四面体切割群正方体(888-666-999)]
s4-fs8.png
(2022-3-7 12:43:44, 177.12 KB) / 下载次数 81
http://bbs.mf8-china.com/forum.php?mod=attachment&aid=Mjc2NTMwfDZiZGU1ZGM2fDE3MzIyMTg0Mjl8MHww
作者:
怀表
时间:
2022-2-26 14:16:39
本帖最后由 怀表 于 2022-3-29 23:12 编辑
占一楼,记录点东西。
在不调试的情况下,参数不应该加core:"NONE" ,加上会启动很慢。
发现rubikmaster开发的applet也用了Thread.sleep,先搁置,继续读胡波的代码。
jaap的也用了Thread.sleep,我之前没注意。
本来想把run()方法拆成几段,放到switch块下面,隔一段时间执行一下,看了一下要拆开的地方太多了,放弃。
解决按键问题(与网页焦点有关)可能需要修改界面。如果急着测试,可以在页面中加入以下代码:
<button onclick="document.querySelector('.ui-events').focus()">按键功能临时修复</button>
复制代码
点击按钮之后,按一下F1再按一下F2。
https://www.bilibili.com/video/BV1dq4y1v7Wq/
getGraphics().getFontMetrics().getHeight() 会返回null ,原因不明。这个问题不大,可以写成定值或传个参数用getParameter获取。(似乎是因为调用getGraphics()时界面还没显示出来)
有一个简单的修改方法,只要修改四处,就能达到勉强能玩的程度。(播放动画功能会废掉,点击转动也没有过渡动画)
把两处有Thread.sleep()的try-catch代码块注释掉。就像这样:
/*
try{
//其它代码
Thread.sleep(20L);
//其它代码
}
catch(InterruptedException interruptedException) {
}*/
复制代码
然后把run()方法里面注释掉:
@Override
public void run() {
/*
原先的代码
*/
}
复制代码
搜索"getGraphics().getFontMetrics().getHeight()",那行修改成这样
this.textHeight = 20; //你要修改成其它值也行,启动的时候要自己调整一下applet的长宽比。
复制代码
然后用Java2Script转换。在这种情况下,建议将Speed调为3,因为帧之间没有间隔了,看不到过渡动画,没必要绘制那么多帧。
才发现这个方法对有些魔方无效。
作者:
怀表
时间:
2022-3-6 10:51:20
本帖最后由 怀表 于 2022-3-6 11:35 编辑
run()方法还是没改好。算了,先放个转动的视频吧。
https://www.bilibili.com/video/BV1xU4y1f7eB/
2022-3-6 11:35:09 上传
下载附件
(73.76 KB)
2022-3-6 11:35:22 上传
下载附件
(64.01 KB)
2022-3-6 11:35:34 上传
下载附件
(79.38 KB)
附件:
s3-fs8.png
(2022-3-6 11:35:34, 79.38 KB) / 下载次数 79
http://bbs.mf8-china.com/forum.php?mod=attachment&aid=Mjc2NTI5fDRlYTZiN2Q3fDE3MzIyMTg0Mjl8MHww
附件:
s2-fs8.png
(2022-3-6 11:35:22, 64.01 KB) / 下载次数 79
http://bbs.mf8-china.com/forum.php?mod=attachment&aid=Mjc2NTI4fDdhZmFjMTYyfDE3MzIyMTg0Mjl8MHww
附件:
s1-fs8.png
(2022-3-6 11:35:09, 73.76 KB) / 下载次数 77
http://bbs.mf8-china.com/forum.php?mod=attachment&aid=Mjc2NTI3fGE1YmEwZWM4fDE3MzIyMTg0Mjl8MHww
作者:
乌木
时间:
2022-3-13 18:30:39
本论坛以前发java动图用的是java助手给出的html代码(<applet code……),后来论坛改版后用的是java助手给出的Discuz!代码。
本帖题目说是“复活论坛魔方java( applet)”,意思是不是说,在本论坛发java动图可以仍旧用html代码,或用修改过的html代码?
比如,下面的java动图如何改成html代码发上来呢?
[KBMFjava=400,350]
[param=MFlength]3[/param]
[param=MFwidth]3[/param]
[param=MFheight]3[/param]
[param=Speed]10[/param]
[param=Script]2U;2R';2U';2R;[/param]
[param=butbgcolor]99d658[/param]
[param=bgcolor]f3a0e2[/param]
[/KBMFjava]
作者:
怀表
时间:
2022-3-27 09:55:55
本帖最后由 怀表 于 2022-3-27 09:58 编辑
乌木 发表于 2022-3-13 18:30
本论坛以前发java动图用的是java助手给出的html代码(
我录了一个用正四面体切割群魔方动画演示软件模拟三阶的视频。
https://m.bilibili.com/video/BV1Ci4y1k7Qm
部分js代码我粘贴在这里,当然这些代码在论坛是不起作用的。
Info={
code:"hubo.SMTQMF.SMTQMFPlay",
main:null,
width:'400',
height:'500',
serverURL:'https://chemapps.stolaf.edu/jmol/jsmol/php/jsmol.php',//这是另外一个项目jmol用到的,我们不需要
j2sPath:'swingjs/j2s',
console:'sysoutdiv',//删掉也可以
allowjavascript:true,
Type:'113',
Speed:'10',
Order:'0',
Leng:'666'
butbgcolor:'99d658',
bgcolor:'f3a0e2',
script:"L;D;L';D2;B';R';U;B;D;F;U;B';L';U;B;U2;"
}
SwingJS.getApplet('SMTQMF',Info)//启动Applet
复制代码
对照代码
<applet code=SMTQMFPlay archive='SMTQMFPlay.jar' codebase='other/' width=400 height=500>
<param name=Type value=113>
<paran name=Speed value=10>
<param name=Order value=0>
<param name=Leng value=666>
<param name=butbgcolor value='99d658'>
<param name=bgcolor value='f3a0e2'>
<param name=script value="L;D;L';D2;B';R';U;B;D;F;U;B';L';U;B;U2;">
</applet>
复制代码
作者:
怀表
时间:
2022-5-13 16:16:12
由于文件大小和性能问题,Java2Script并不适合要嵌到帖子里的java applet,这条路线被放弃了。想试一下的可以下载附件。
octa.001.zip
(302.73 KB, 下载次数: 3)
2022-5-13 16:06:46 上传
下载次数: 3
octa.002.zip
(197.17 KB, 下载次数: 3)
2022-5-13 16:07:19 上传
下载次数: 3
我权限不够,只能分卷了。请把"octa.001.zip"重命名为"octa.zip.001",把"octa.002.zip"重命名为"octa.zip.002"。解压之后,运行“miniweb.bat”,在浏览器里打开http://localhost:8080/hubo_Octa_OctaPlay_applet.html
附件:
octa.002.zip
(2022-5-13 16:07:19, 197.17 KB) / 下载次数 3
http://bbs.mf8-china.com/forum.php?mod=attachment&aid=Mjc2OTE3fGU5ZDQ3MGQwfDE3MzIyMTg0Mjl8MHww
附件:
octa.001.zip
(2022-5-13 16:06:46, 302.73 KB) / 下载次数 3
http://bbs.mf8-china.com/forum.php?mod=attachment&aid=Mjc2OTE2fDM0MzBkZmUwfDE3MzIyMTg0Mjl8MHww
欢迎光临 魔方吧·中文魔方俱乐部 (http://bbs.mf8-china.com/)
Powered by Discuz! X2