pngx

pngx 查看完整档案

填写现居城市  |  填写毕业院校  |  填写所在公司/组织填写个人主网站
编辑
_ | |__ _ _ __ _ | '_ \| | | |/ _` | | |_) | |_| | (_| | |_.__/ \__,_|\__, | |___/ 该用户太懒什么也没留下

个人动态

pngx 回答了问题 · 8月3日

将2d游戏地图的tile组成/拆分为凸多边形给 box2d?

Martinez-Rueda polygon clipping algorithm -> 多边形的布尔操作, 可以合并成有洞的多边形
earcut (Triangulation by Ear Clipping) -> 把任意多边形拆成三角形

最后找了这两个

如果不需要加物理粒子效果也可以用 edge shape 而不用 polygon shape, 用 edge 拼起来很简单

关注 1 回答 1

pngx 提出了问题 · 8月1日

将2d游戏地图的tile组成/拆分为凸多边形给 box2d?

有这几种形状的地图贴片

想要把它们组成多个有洞的多边形, 切分成多个凸多边形或者三角形

(因为 box2d 处理两个线段组成的一个平面时容易在边的贴合处让角色走路发生磕碰, 所以要做合并, 而且 box2d 只能用凸多边形)

请问有什么现成的库或算法可以抄的吗? (用的 js, 其它语言我就想办法抄一下)
搜了老久只找到地理地图用的可以对多边形作布尔合并的库, 但没找到如何将有洞的多边形拆分为凸多边形或三角形

关注 1 回答 1

pngx 提出了问题 · 2019-04-03

有什么可以方便地创建"旋转的矩形"形状的窗口的win桌面UI库或框架?

如题, 想做一个自用小工具, 其中需要创建一个旋转任意角度的矩形无边框窗口, 想找个比较简单易用的框架来做, 能做些渐进动画效果就更好了
以前试过winapi, 虽然可以拿来实现任意形状的窗体但是写起来太烦了... 以及换了几个关键字搜索flutter, react native之类的东西没能确定能不能实现想要的效果

关注 1 回答 0

pngx 提出了问题 · 2018-11-28

解决vue里想把tree渲染为list有什么好的方法吗?

我想把像下面这样的树数据渲染成table

{
    name: 'node1',
    hasChild: true,
    children: [
        {
            name: 'node2'
        }
    ]
}

↓ 变成

<table>
<tr>
<td>node1<td>
</tr>
<tr>
<td style="padding-left: 12px;">node2<td>  ←  用缩进显示下级
</tr>
</table>

用递归组件做的话template必须只有一个根元素想不到怎么实现<tr>平铺, 于是做了个这样的东西↓

export default {
        functional: true,
        render(
            createElement,
            {
                data: {
                    scopedSlots: {
                        default: scopedSlots
                    }
                },
                props: {
                    tree,
                    hasChildProperty = 'hasChild',
                    childrenProperty = 'children'
                }
            }
        ) {
            if (!tree || !scopedSlots) {
                return null;
            }

            const result = [];
            walk(tree);

            return result;

            function walk(tree, level = 0) {
                if (!isArray(tree)) {
                    return;
                }
                each(tree, node => {
                    const vNode = scopedSlots({data: node, level: level});
                    result.push(vNode);
                    if (node) {
                        if (node[hasChildProperty] && isArray(node[childrenProperty])) {
                            walk(node[childrenProperty], level + 1);
                        }
                    }
                });
            }
        }

像这样用

<tbody>
<tree-table-helper :tree="tree">
    <template slot-scope="node">
        <tr>
            <td :style="{paddingLeft: node.level + 'em'}">{{node.data.name}}</td>
        </tr>
    </template>
</tree-table-helper>
</tbody>

虽然这样能实现, 但是chrome里画一个有1000节点的树之后, 增删一个节点会卡顿个几百毫秒, render()在chrome里第一次执行要半秒多, 之后多次执行会被魔法优化到几十毫秒还能接受, 应该是diff还是patch时卡了, 想不到怎么优化, 在ie下没魔法优化会整个卡爆

关注 2 回答 1

pngx 提出了问题 · 2018-08-16

spring是否能在其它bean完成init之后才创建另外一个bean的实例?

有个需要引用bean的工具类

@Component
class FooUtils implements InitializingBean {
    private static Foo foo;
    private static Bar bar;

    @Autowired
    private void foo(Foo foo) {
        MyFactory.foo = foo;
    }    

    @Override
    public void afterPropertiesSet() throws Exception {
        bar = new Bar(foo, ...);
    }
    
    public static MyObj create(int param1, int param2, int param3) {
        if (foo == null) { thrown new Exception(); }
        return new MyObj(foo.baz(param1, param2), bar, param3);
    }
}

想用上面那个工具类创建bean

@Configuration
@DependsOn('fooUtils') // <-- 然而不work, 开始new实例的时候都还没进行bean的init
class Config {
    @Bean
    public MyObj myObjBean() {
        return FooUtils.create(1, 2, 3); // <-- 想不到怎么让这里在fooUtils完成autowired之后才执行
    }
}
@Service
class MyService {
    @Autowired
    private MyObj myObj;
}

关注 4 回答 3

pngx 提出了问题 · 2018-08-16

spring是否能在其它bean完成init之后才创建另外一个bean的实例?

有个需要引用bean的工具类

@Component
class FooUtils implements InitializingBean {
    private static Foo foo;
    private static Bar bar;

    @Autowired
    private void foo(Foo foo) {
        MyFactory.foo = foo;
    }    

    @Override
    public void afterPropertiesSet() throws Exception {
        bar = new Bar(foo, ...);
    }
    
    public static MyObj create(int param1, int param2, int param3) {
        if (foo == null) { thrown new Exception(); }
        return new MyObj(foo.baz(param1, param2), bar, param3);
    }
}

想用上面那个工具类创建bean

@Configuration
@DependsOn('fooUtils') // <-- 然而不work, 开始new实例的时候都还没进行bean的init
class Config {
    @Bean
    public MyObj myObjBean() {
        return FooUtils.create(1, 2, 3); // <-- 想不到怎么让这里在fooUtils完成autowired之后才执行
    }
}
@Service
class MyService {
    @Autowired
    private MyObj myObj;
}

关注 4 回答 3

pngx 赞了回答 · 2018-07-26

解决学习sql优化, java缓存, 分布式应该阅读哪些书籍?

<SQL Cookbook 中文版> 各种数据库的解决方案都有,书中最有用的是要考虑解决方案首先就要明确这个数据库有没有这种功能,然后在做处理

关注 5 回答 4

pngx 赞了回答 · 2018-07-26

解决学习sql优化, java缓存, 分布式应该阅读哪些书籍?

我来负责搬运书单。http://tengj.top/2017/05/05/j...

关注 5 回答 4

pngx 赞了回答 · 2018-07-26

解决学习sql优化, java缓存, 分布式应该阅读哪些书籍?

sql方面的书推荐《高性能MySQL》

关注 5 回答 4

pngx 赞了回答 · 2018-07-26

解决学习sql优化, java缓存, 分布式应该阅读哪些书籍?

大好时光浪费了。如果说你对提到的三条比较感兴趣,那我建议你好好弄sql,sql有一定高度了再去研究缓存和分布式,毕竟sql写的少还是不行的。书吗,其实不是最重要的,没有一本书能写出来实际的业务场景,sap那么牛逼的系统,还不是要根据每个客户实际的业务场景自定义开发。所以书只能给你提供简单的思想,至于提高,还得实战。你比在校生多一个有利条件,你有公司,有实际业务需求背景。你可以在随便看一本sql的书之后,有了基础知识后,去看公司现在服务器上跑着的代码,理解个七八成,你出去面试就不成问题了。

关注 5 回答 4

认证与成就

  • 获得 4 次点赞
  • 获得 18 枚徽章 获得 0 枚金徽章, 获得 3 枚银徽章, 获得 15 枚铜徽章

擅长技能
编辑

(゚∀゚ )
暂时没有

开源项目 & 著作
编辑

(゚∀゚ )
暂时没有

注册于 2015-11-26
个人主页被 247 人浏览