萌梦动作编辑器18.4.27.5653更新



  • 0_1524818754831_777.jpg
    转眼间到了四月了啊,距离上次发布我们的萌梦动作编辑器已经有一个多月了,这期间发生了很多很多的事情,有好的也有不好的,不过总之我们还是希望我们的动作编辑器能够继续发展下去。

    现实的需求

    最近一个很大的问题摆在我们面前,就是我们的动作编辑器虽然挂在网上,下载的用户却没哪些人更新,导致大家享受不了最新版本带来的好的变化。于是我就开始思考怎样把我们的动作编辑器以及附属产品添加一个自动更新的功能。

    开始制作吧

    听起来是一个很小的功能,其实呢,嗯。也算是有些技术含量的,主要是自动检测互联网上是否有最新的版本,然后更新之就好啦。一开始你们的思路是不是这样呢?告诉你们吧,其实我使用的Qt Installer Framework这个框架早就有了这样的功能了,我当时写了一篇文章介绍了这些。其实就是通过Qt Installer Framework中的--checkupdates选项来检查更新的。

    这个技术解决之后,还有其它的问题阻碍着我呢,最主要的是当我们的动作编辑器运行的时候,其实有一大堆exe和dll是被我们锁定不允许更改的,如果你尝试删除这些exe和dll,那么就会是这个样子:
    0_1524818181051_e9863d5b-9d7c-4942-a49d-f73bdd554c97-image.png
    这样就做不到软件运行的时候更新了。那怎么办呢?我当时就想只能做一个updater,然后放到用户所在的目录,等到启动器收到动作编辑器关闭的消息后,启动这个updater并且关闭启动器。这样就相当于在安装目录的外部执行maintenancetool文件,不会被操作系统提示更新失败了。这个想法我也是尝试了很久之后才找到的,估计和现在PC版的QQ更新的道理一样,关闭程序了之后再更新。

    可是在路径问题和执行的参数问题上花了好多功夫呢。我敢说,程序的问题有40%我猜都是路径不一致导致的。我也很“幸运”地踩上了,“光荣”地耽误了大半天。

    终了

    不过最后在我一再测试下,自动更新的功能终于制作出来了,以后大家可以很方便地享受最新版本的动作编辑器给大家带来的方便啦。

    放上更新后的地址

    Windows版更新啦。Mac和Android的用户可要稍等一会儿了哦。
    在线安装包的下载地址是:coding源github源

    离线安装包的下载地址是:coding源github源



  • 好腻害``````



  • @jiangcaiyang 请问有使用教程吗?



  • 找到教程文档了。



  • @提斯的手抄本 嗯嗯嗯,现在我们对我们的动作编辑器进行大规模地更新,希望能够支持到MME呢,感觉又是很艰巨的样子。


Log in to reply
 

走马观花

最近的回复

  • 诶 没有Linux吗??

    read more
  • 萌梦 男孩,女孩,和蛋

    menghome.png

    read more
  • 设计模式-工厂模式

    使用qt/qml来演示设计模式效果,便于学习理解

    1)定义创建对象的接口,封装对象的创建
    2)使具体化类的工作延迟到工厂子类中

    bg.png
    image.png

    1. 工厂类

    createProduct使用了参数来选择要创建哪个产品

    #ifndef FACTORY_H #define FACTORY_H #include <QObject> class Product; class QString; class Factory: public QObject { Q_OBJECT public: virtual ~Factory() = 0; virtual Product* createProduct(QString type) = 0; protected: Factory(); }; class ConcreteFactory: public Factory { Q_OBJECT public: ~ConcreteFactory(); ConcreteFactory(); public slots: Product* createProduct(QString type); }; #endif // FACTORY_H #include "factory.h" #include "product.h" #include <QtQml/qqml.h> Factory::~Factory() { } Factory::Factory() { qmlRegisterType<Product>("Product", 1, 0, "Product"); } ConcreteFactory::~ConcreteFactory() { } ConcreteFactory::ConcreteFactory() { } Product *ConcreteFactory::createProduct(QString type) { if(type == "boy") return static_cast<Product *>(new ConcreteProduct1()); else if(type == "girl") return static_cast<Product *>(new ConcreteProduct2()); return static_cast<Product *>(new ConcreteProduct1()); } 2 产品类

    一个产品是萌梦男,一个产品是萌梦女

    #ifndef PRODUCT_H #define PRODUCT_H #include <QObject> class Product: public QObject { Q_OBJECT public: virtual ~Product() = 0; Q_PROPERTY(QString icon READ icon NOTIFY iconChanged) QString m_icon; QString icon() const { return m_icon; } signals: void iconChanged(QString icon); protected: Product(); signals: public slots: }; class ConcreteProduct1: public Product { Q_OBJECT public: ~ConcreteProduct1(); ConcreteProduct1(); }; class ConcreteProduct2: public Product { Q_OBJECT public: ~ConcreteProduct2(); ConcreteProduct2(); }; #endif // PRODUCT_H #include "product.h" Product::~Product() { } Product::Product() { } ConcreteProduct1::~ConcreteProduct1() { } ConcreteProduct1::ConcreteProduct1() { m_icon = "qrc:/images/boy.png"; } ConcreteProduct2::~ConcreteProduct2() { } ConcreteProduct2::ConcreteProduct2() { m_icon = "qrc:/images/girl.png"; } 3. main.qml

    使用timer,canvas,listview等实现一个自动化生产的动画效果

    源代码

    Fork me on Gitee

    read more
  • blender建模 章鱼
    捕获2.PNG 😵

    read more

关注我们

微博
QQ群